【追記】PXEサーバとして使うマシンの設定なのですが、Windowsマシンでやっちゃうのが最も簡単かもしれません。(汗
尚、ネットワークブート非対応マシンでも、NIC(LANアダプタ)が内蔵かPCIカードで対応ブート用ROMがあるなら、FDまたはGrub for DOSから読み込んでネットワークブートが可能になります。(※PCMCIAやUSBアダプタはだめ)
ディスクレスインストールってやつですな。私にゃムリとか思ってたんですけど、なんとかできてしまいました。ただ、細かいオプションとかわかってない事が多いのであくまでメモということで。
尚、ここに書いてるサーバの設定は、Debian sargeのものです。Debianの07.11.27現在の安定版 (stable) はetchなので若干違いがあると思います。
まず、これを行う為の条件は2つ
- クライアント機(インストールする方)のネットワークアダプタがPXEネットワークブート対応であること。(最近のは殆どそうじゃないかなぁ)
- サーバとして使うLinux(など)がインストールされたマシン
ApacheなどWebサーバが稼動していれば、CDイメージをマウントしちゃうのもありかな。
とりあえず、私は Debian 3.1 をサーバにしてやってみました。
- 参考リンク
-
ディストリビューションによってかなり違いがあると思いますのでご注意。あくまで参考に
- TFTP ネットブート用ファイルの準備 - Debian GNU/Linux インストールガイド
- Debian ミラーサイトからのファイルのダウンロード - Debian GNU/Linux インストールガイド
- @IT:DHCPサーバを立てるには
- dhcpd.conf
- Site Administration Courseさんより。FreeBSDの場合みたい(?)ですけど参考になりました
- Manpage of dhcpd
下記ページも非常に参考になりました(多謝)。というか、そのままだったり?(汗。
- 連絡拒否 - PXE ネットワークブート Vmware ubuntu centos
- ネットワークブートでLinuxインスコ&DOS起動 - [餅] 餅空 blog / Nucleus支店
- PXEを使ってPCもディスクレスにしよう@謎の処理系 SunOS 4.1.4
BpBatch があればMS-DOSのFDイメージなどでの起動も可能みたいですね。(※PXELINUX+memdiskでFDイメージのブートが可能です。)
準備(サーバ機)
- DebianのTFTPブート用ファイル をダウンロード
$ wget []http://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/netboot/netboot.tar.gz[]
※注:Debian etchでは
$ wget []http://ftp.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/netboot.tar.gz[]
- Vine 4.0 の PXE 用 kernel と initrd.img をダウンロード
$ wget []http://www.ring.gr.jp/pub/linux/Vine/Vine-4.0/i386/images/pxeboot/vmlinuz[] $ wget []http://www.ring.gr.jp/pub/linux/Vine/Vine-4.0/i386/images/pxeboot/initrd.img[]
※注:Vine 4.2 では...
$ wget []http://www.ring.gr.jp/pub/linux/Vine/Vine-4.2/i386/images/pxeboot/vmlinuz[] $ wget []http://www.ring.gr.jp/pub/linux/Vine/Vine-4.2/i386/images/pxeboot/initrd.img[]
- ネットワーク(TCP/IP)の設定を固定に
※eth0 など該当分のみ修正
# vi /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.0.254 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1
- ※プロバイダのDNSサーバのIPアドレスを調べておく
- ※ルータのDHCPサーバ機能は一時的にオフにする(DHCPサーバを起動させる前に)
TFTPサーバの設定
- TFTPサーバ をインストール
# apt-get install tftpd-hpa
- tftpのディレクトリを確認
# cat /etc/inetd.conf < 略 > tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot < 略 >
/var/lib/tftpboot
ってことですね。(パッケージ情報表示は $ dpkg -L tftpd-hpa
)
- TFTPブートイメージを展開
# tar zxvf netboot.tar.gz -C /var/lib/tftpboot
- pxelinux.0 が作成されたか確認
# ls /var/lib/tftpboot/ debian-installer pxelinux.0 pxelinux.cfg
- Vine用 kernel と initrd.img をディレクトリを作成して保存
# mkdir /var/lib/tftpboot/vine # cp vmlinuz /var/lib/tftpboot/vine # cp initrd.img /var/lib/tftpboot/vine
インストーラブートローダ用設定ファイルを編集-
- 「vine」の項目を追記
# vi /var/lib/tftpboot/pxelinux.cfg/default
下記を追記します
label vine kernel vine/vmlinuz append load initrd=vine/initrd.img
ramdisk も指定した方がいいのかなぁ(汗。
- デフォルトをVine Linux のインストールに変更
default vine
- TFTPサーバの設定ファイル
-
- TFTPサーバの設定ファイルを変更(※noをyesにするだけ)
# vi /etc/default/tftpd-hpa
#Defaults for tftpd-hpa RUN_DAEMON="yes" OPTIONS="-l -s /var/lib/tftpboot"
- TFTPサーバを起動
# /etc/init.d/tftpd-hpa start
ローカルで確認してみます。
- tftpクライアントをインストール
# apt-get install tftp-hpa
- ダウンロードしてしてファイルの内容を比較
$ tftp 192.168.0.254 tftp> get pxelinux.0 tftp> quit $ cmp pxelinux.0 /var/lib/tftpboot/pxelinux.0
何も出力されなければOKです。
DHCPサーバ の設定
- DHCPサーバをインストール
# apt-get install dhcp3-server
- dhcpd.conf を編集
デフォルトのファイルを別名保存して一から作った方がいいかもしれません。
# vi /etc/dhcp3/dhcpd.conf
※自由割り当てする場合(範囲は192.168.0.250から192.168.0.253 にしてます)
option domain-name "localdomain"; option domain-name-servers 218.47.162.1,218.47.162.9; option subnet-mask 255.255.255.0; option routers 192.168.0.1; default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.250 192.168.0.253; option broadcast-address 192.168.0.255; filename "pxelinux.0"; next-server 192.168.0.254; }
※それぞれ、ハードウェア(MAC)アドレスに合わせて割り当てする場合です。(※[host]はインストール対象のマシンのみでいいんですけど)
option domain-name "localdomain"; option domain-name-servers 218.47.162.1,218.47.162.9; option subnet-mask 255.255.255.0; option routers 192.168.0.1; default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { host momoaida { hardware ethernet 00:90:CC:00:00:00; fixed-address 192.168.0.250; filename "pxelinux.0"; next-server 192.168.0.254; } host vmware { hardware ethernet 00:0B:6A:F6:A4:03; fixed-address 192.168.0.251; filename "pxelinux.0"; next-server 192.168.0.254; } }
- option domain-name - 適当でいいかな
- option domain-name-servers - プロバイダのDNSサーバのIPアドレス(※ルータを指定したらダメだった)
- option subnet-mask - サブネットマスク
- option routers - ルータ(gateway)のIPアドレス
- host - 一時的なものなので適当
- hardware ethernet - NICのMACアドレス
- fixed-address - 割り当てるIPアドレス
- next-server - サーバ(母艦)のIPアドレス
- dhcpサーバを起動させます。
# /etc/init.d/dhcp3-server start
以上でサーバ機の準備はOKです。
インストールするマシン
BIOS画面でbootの項目に「LAN」がある場合でも、ネットワークアダプタが「PXE」に対応していない場合もあります。事前によく確認しておきましょう。VMware Playerでは有効でした。
- ネットワークブートを有効にする
-
BIOSで最優先にしちゃうのがいいかもですね。ただ、インストール後にはまた元に戻さないといけません。
- BIOSのboot設定でLAN(「NETWORK」や「PXE」 など別の名前になってるかも)を有効にして最優先にする。または、LAN以外の起動を無効にする
- 起動時に明示的な指定「Fn キーを押せ」とか必要な場合もあるので注意。また種類指定が必要なことも・・
- または、起動時にFn キーを押してブート先を選択(BIOSの設定も有効にしておく)
起動時の画面は
Pause/Break
キーを押すと一時停止できますので(再開はEsc
)うまくいかない場合は、確認してみましょう(メーカー製PCだと何も表示されないこともあります)。 - BIOSのboot設定でLAN(「NETWORK」や「PXE」 など別の名前になってるかも)を有効にして最優先にする。または、LAN以外の起動を無効にする
- Debian の画面が起動します
-
(defaultを「vine」に変更していれば)そのままEnterで Vine Linux のインストーラが起動します。「Label」を指定すれば、Debian のインストールも可能です。(※「Label」の内容は、
/var/lib/tftpboot/pxelinux.cfg/default
で確認。)初期設定(anaconda)の後、GUIモードでインストーラが起動します。ビデオカードなどの認識ができない場合は、テキストモードとなるようです。
インストール対象で HTTP/FTPを選択する場合は、下記ページにてURLを確認しておきます。
Vine Linux 4.2では...
- Web サイト名: - www.ring.or.jp
- Vine Linux ディレクトリ:/pub/linux/Vine/Vine-4.2/i386
- Web サイト名: - ftp.kddilabs.jp
- Vine Linux ディレクトリ:/pub/Linux/packages/Vine/Vine-4.2/i386
など...
- Web サイト名: - www.ring.or.jp
- Vine Linux ディレクトリ:/pub/linux/Vine/Vine-4.0/i386
- Web サイト名: - ftp.kddilabs.jp
- Vine Linux ディレクトリ:/pub/Linux/packages/Vine/Vine-4.0/i386
大文字小文字に注意です。http/ftpサーバは繋がりにくい時が多いので何度か試行が必要かもしれません。