手元にあるThinkPad X61はWindows XPがインストールされているが、そろそろライセンスがアレなのでlinuxをインストールすることにした。しかし、フロッピー・光学ドライブがついてない。USBブートかネットワークブートか、ということになる。ので、PXEでインストールしてみることにした。
2013/07/16追記
X61が64bit機だということに気付いたので、64bit版のCentOSに入れなおした。手順は同一なので、違うところだけ追記。
環境
- PXEサーバ
- クライアントマシン
- インストールOSおよび使用イメージファイル
- その他使用ツール
やったこと
TFTP, DHCPサーバの準備
ルータなどのDHCP機能はオフにしておく。
tftpd32をダウンロードして適当なディレクトリに置く。
ブートイメージをコピーしてくる。Damon ToolsでCentOS-6.4-i386-bin-DVD1.isoをマウントする。マウントしたディスクドライブ内の下記2ファイルをtftpd32に置く。
images\pxeboot\initrd.img images\pxeboot\vmlinuz
pxelinux.0もコピーしてくる。マウントしたドライブから、Packages\syslinux-4.02-8.el6.i686.rpmをコピーしてきて、解凍する。その中のpxelinux.0をtftpd32に置く。
usr\share\syslinux\pxelinux.0
tftpd32\pxelinux.cfg という名前のディレクトリを作成し、そこにdafaultという名前のファイルを作る。dafaultの中身は↓な感じ。vmlinuzとinitrd.imgのファイルパスが、tftpd32から辿れるパスに居ることを確認する。methodはHTTPサーバの項で後述。
default centos6 label centos6 kernel vmlinuz append initrd=initrd.img method=http://192.168.0.19:8080/centos6/ devfs=nomount
tftpd32のディレクトリ構成はこんな感じになる。
> tree /F tftpd32 (省略)\TFTPD32 │ EUPL-EN.pdf │ initrd.img │ pxelinux.0 │ tftpd32.chm │ tftpd32.exe │ tftpd32.ini │ vmlinuz └─pxelinux.cfg default
tftpd32.exeを起動する。画面真ん中下のSettingsを押し、GLOBALは、TFTP Server, DHCP Serverだけにする。なお、ここの設定方法は WindowsでPXEネットワークブート用サーバの設定 - TFTPD32 (TFTPD64) - Palm84 某所の日記 が詳しいです。
DHCPは、こんな感じ。
HTTPサーバの準備
Tomcat使ってる理由は特に無くて、手元ですぐ動かせるHTTPサーバがコレだったというだけの話です。
CentOS-6.4-i386-bin-DVD1.isoをマウントして、その中身を、%TOMCAT_ROOT%\webapps\ROOT\centos6にすべてコピペする。pxelinux.cfg\defaultのmethodのmethod=http://192.168.0.19:8080/centos6/とパスが合致していればOKです。要するに、Tomcatを起動して http://192.168.0.19:8080/centos6/GPL でファイルが見えてればOK。
ハマりどころとか
- ネットワークブートが途中で勝手にリブートする。
何かしら設定がおかしかったり、あるべきファイル(vmlinuzとか)が無かったり・設定ファイルとパスが食い違っていたり、ファイアウォールにひっかかかっていたり。まぁなんか色々原因は考えられる……ので、疑わしいものは一個ずつチェックしたり、ぐぐったり、TFTPD32のLog viewerでチェックしていくしかないと思われる。
- Unable to read package metadata from repository.
CentOSのインストール時に発生するエラー。
一途なベン » サーバ設定:運用 » OSのインストール~初期設定 » 前準備(PXEインストール用)やCentOS6.2+PT2のサーバーセットアップ - 屑籠というかゴミ箱によると、
- 仮想ドライブから直接読み込ませるのはNG
- ISOイメージのrepodataが何故か古い
が原因らしく。一つ目はドライブからファイルコピーしているので良いとして。二つ目の解決策は http://ftp.riken.jp/Linux/centos/6.4/os/i386/repodata/ 等(32bitの場合)、http://ftp.riken.jp/Linux/centos/6.4/os/x86_64/repodata/ 等(64bitの場合)のファイルすべてを、このエントリの例で言えば %TOMCAT_ROOT%\webapps\ROOT\centos6\repodata と置き換えることで解消する。