PXEブートサーバを建てる

  • Preboot eXecution Evbironment
    • いわゆる「ネットワークブート」
    • インテル規格
    • ブートCDやFDで起動させるときに楽をできるかも
      • ディスク挿入しなくてよい
      • 読み込み速度が速い
      • 大量のPCを起動させるときにメディアを大量に用意しなくてよい

用意するもの

  • Linux
    • 今回は Turbolinux 11 Server を使用
  • ISC DHCPD
    • DHCPサーバ
    • 大抵のLinuxディストリに標準で入っている
  • TFTPD
    • ノンパスで入れる簡易FTPサーバ

インストール

  • TFTPD を設定
    • vi /etc/xinetd.d/tftp
      disable = no  # "yes"を"no"に変更
      only_from = 192.168.12.0/24  # ディストリによっては必要
      • server_args = -s /tftpboot がカーネル読み込みのルートディレクトリになる(後述)
    • /etc/init.d/xinetd restart
    • vi /etc/hosts.allow
      in.tftpd : 192.168.12.0/255.255.255.0  # 追記
  • DHCPDを設定
    • vi /etc/dhcpd.conf
      subnet 192.168.12.0 netmask 255.255.255.0 {
        (うんたらかんたら)
        next-server 192.168.12.2;
        filename "/all/pxelinux.0";
      }
      • next-serverでtftpサーバのipアドレスを指定する。
        dhcpサーバとtftpサーバが同一のものであれば指定する必要はない。
      • filenameでPXEロードされるイメージを指定する。
        ディレクトリは/etc/xinetd.d/tftpのserver_argsで指定したディレクトリを起点として、
        pxelinux.0を配置するパスを指定する(後述)

各ブートイメージの設置

  • 各ページでは個別設定を前提として書いていたので、
    ブートイメージの取り出し方のみ参考とし、下記配置をもとに配置した方が簡単。

PXEブート全部入り

  • 1つのPXEサーバでいろんなイメージを起動したい場合
  • 配置
    /
      tftpboot/
        all/
          pxelinux.0            # syslinuxに同梱(下記)
          vesamenu.c32          # syslinuxに同梱(下記)
          pxelinux.cfg/
            default             # syslinux config(下記)
          clonezilla/           # 以下、各イメージを格納
            filesystem.squashfs
            initrd1.img
            vmlinuz1
          ti11/
            kernel.dat
            ramdisk.dat
          memtest86/
            memtest86+-2.11
  • /tftpboot/all/pxelinux.cfg/default
    default vesamenu.c32
    prompt 0
    timeout 50
    
    label ti11
    kernel ti11/kernel.dat
    append rw initrd=ti11/ramdisk.dat /S mbrcrcs=on video=vesa vga=0x314 \
    load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=32768 quiet
    
    label clonezilla
    MENU LABEL Clonezilla Live
    kernel clonezilla/vmlinuz1
    append initrd=clonezilla/initrd1.img boot=live union=aufs noswap noprompt \
    vga=788 fetch=tftp://192.168.12.2/all/clonezilla/filesystem.squashfs
    
    label memtest86
    kernel memtest86/memtest86+-2.11
    • default に通常動かすイメージのlabel名
      • ここではvesamenuを出すためにvesamenu.c32を指定
    • prompt 1 で boot: のプロンプト表示あり
      • いきなりvesamenuを出すために、0を指定
    • timeout 50 で boot: プロンプトを通過して default がロードされるまでの時間 50msec
      • ここではvesamenuのontimeoutで指定したlabelがロードされるまでの時間
    • labelでdefault指定したりboot:で入力するラベル名
      • ここではvesamenuが出るために表には出てこない
    • ontimeoutはvesamenuでtimeoutになったときにロードされるlabelを指定
    • 以降、kernelとかappendとか
      • MENU LABELでvesamenuで表示されるタイトルの指定
    • \の付いてる行は次の行を続けて入力

参考にしたところ