GeekFactory

int128.hatenablog.com

Proxy DHCPによるネットワークインストール

あけましておめでとうございます。元日からさっそくLinuxをインストールしておりますが、今年もよろしくお願いします。

さて、DVDを使わずにLinuxをネットワークインストールする方法をメモしておきます。

前提

  • DVDを使わずにインストールしたい。DVDドライブがない、DVDを焼くマシンがない、メディアを買いに行けない、お金がない、などなど。
  • ネットワーク内にすでにDHCPサーバが導入されている。
  • インターネットからHTTPでインストールイメージを取得できる。
  • すでにLinuxマシンがある。VMでも問題ない*1

手順

ここではScientific Linux 6.3の例を挙げます。他のディストリビューションでもだいたい同じと思います。

まず、以下のパッケージを入れます。

  • dnsmasq
  • syslinux

dnsmasqを設定します。ポイントは、Proxy DHCPで応答するサブネットを指定する、PXEイメージを指定する、TFTPを有効にすることです。

# /etc/dnsmasq.conf
port=0
dhcp-range=192.168.0.0,proxy
pxe-service=x86PC, "Install Linux", pxelinux
enable-tftp
tftp-root=/home/tftpboot

/home/tftpbootに以下のファイルを配置します。

ファイル 配置方法
pxelinux.0 /usr/share/syslinux/pxelinux.0 をコピーする。
vesamenu.c32 /usr/share/syslinux/vesamenu.c32 をコピーする。
vmlinuz ディストリビューションのisolinuxフォルダからダウンロードする。
initrd.img ディストリビューションのisolinuxフォルダからダウンロードする。

/home/tftpboot/pxelinux.cfg/default に以下を記述します。なお、カーネルにksオプションを渡すことでKickStartによる自動インストールも可能です。

default vesamenu.c32 
label install
kernel vmlinuz
append load initrd=initrd.img

こんな感じであればOKです。

 31577997  8月  3 01:56 2012 /home/tftpboot/initrd.img
    26828  6月 21 02:54 2012 /home/tftpboot/pxelinux.0
   162860  6月 21 02:54 2012 /home/tftpboot/vesamenu.c32
  3986896  8月  3 01:56 2012 /home/tftpboot/vmlinuz
       81  1月  1 21:35 2013 /home/tftpboot/pxelinux.cfg/default

dnsmasqサービスを開始します。iptablesが有効の場合は、ポリシーを変更するか一時的に無効化しておきます。

インストール対象のマシンでネットワークブートします。以下の順番で画面が表示されるはずです。

  1. BIOS POST
  2. DHCP待ち
  3. syslinuxの選択画面
  4. 言語やキーボードの選択画面
  5. インストールイメージの選択画面(Scientific Linuxの場合は http://ftp.jaist.ac.jp/pub/Linux/scientific/6.3/x86_64/os/ とか)
  6. GUIインストーラの画面

うまくいかない場合は /var/log/messages を確認しましょう。ログが出ていない場合は tcpdump で切り分けましょう。

*1:もしVMware ESXiで仮想スイッチを追加している場合は、ゲスト上でtcpdumpを実行してブロードキャストを拾えるかどうか確認してみてください。昨年11月にこれではまりました。