Palm84 某所の日記

死のうは一定、しのびクマには何しよぞ...

Vine Linux 4.0(4.2) をネットワークブートでインストール

【追記】PXEサーバとして使うマシンの設定なのですが、Windowsマシンでやっちゃうのが最も簡単かもしれません。(汗

尚、ネットワークブート非対応マシンでも、NIC(LANアダプタ)が内蔵かPCIカードで対応ブート用ROMがあるなら、FDまたはGrub for DOSから読み込んでネットワークブートが可能になります。(※PCMCIAやUSBアダプタはだめ)

ディスクレスインストールってやつですな。私にゃムリとか思ってたんですけど、なんとかできてしまいました。ただ、細かいオプションとかわかってない事が多いのであくまでメモということで。

尚、ここに書いてるサーバの設定は、Debian sargeのものです。Debianの07.11.27現在の安定版 (stable) はetchなので若干違いがあると思います。

まず、これを行う為の条件は2つ

  • クライアント機(インストールする方)のネットワークアダプタがPXEネットワークブート対応であること。(最近のは殆どそうじゃないかなぁ)
  • サーバとして使うLinux(など)がインストールされたマシン
    • tftpサーバ、DHCPサーバ を起動させます

ApacheなどWebサーバが稼動していれば、CDイメージをマウントしちゃうのもありかな。

とりあえず、私は Debian 3.1 をサーバにしてやってみました。

参考リンク

ディストリビーションによってかなり違いがあると思いますのでご注意。あくまで参考に

下記ページも非常に参考になりました(多謝)。というか、そのままだったり?(汗。

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[]
  • 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[]
  • ネットワーク(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
  1. ※プロバイダのDNSサーバのIPアドレスを調べておく
  2. ※ルータの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サーバの設定ファイルを変更(※noyesにするだけ)
# 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だと何も表示されないこともあります)。

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サーバは繋がりにくい時が多いので何度か試行が必要かもしれません。