Mac OS XをPXEサーバにしてLinuxをネットワークインストールする
Linux を使って別の PC に Linux をネットワークインストールする方法はよく知られていますが、Mac OS X を使って別の PC に Linux をネットワークインストールする方法は情報が少ないのでまとめてみました。
本稿は Proxy DHCPによるネットワークインストール - GeekFactory のリメイク版です。Proxy DHCP を使います。
前提
準備
dnsmasq をインストールします。
brew install dnsmasq mkdir /tmp/tftpboot vim /usr/local/etc/dnsmasq.conf
/usr/local/etc/dnsmasq.conf を編集します。サブネットは既存のDHCPスコープに合わせてください。
no-daemon dhcp-leasefile=/tmp/dnsmasq.lease port=0 dhcp-range=192.168.1.0,proxy pxe-service=x86PC,install,pxelinux enable-tftp tftp-root=/tmp/tftpboot
ネットワークブート用のイメージを /tmp/tftpboot に準備します。下記では Scuentific Linux 6.4 のイメージを持ってきていますが、他のディストリビューションでもだいたい同じです。syslinux は kernel.org からダウンロードします。
cd /tmp/tftpboot curl -O http://ftp.jaist.ac.jp/pub/Linux/scientific/6.4/x86_64/os/images/pxeboot/initrd.img curl -O http://ftp.jaist.ac.jp/pub/Linux/scientific/6.4/x86_64/os/images/pxeboot/vmlinuz curl -O https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.02.tar.bz2 tar jxf syslinux-6.02.tar.bz2 ln -s syslinux-6.02/bios/com32/elflink/ldlinux/ldlinux.c32 ln -s syslinux-6.02/bios/core/pxelinux.0 mkdir pxelinux.cfg vim pxelinux.cfg/default
/tmp/tftpboot/pxelinux.cfg/default を編集します。
label install kernel vmlinuz append load initrd=initrd.img
ちなみに、apppend行に repo=http://ftp.riken.jp/Linux/scientific/6.4/x86_64/os/ のように追記することで、インストールソースの入力を省略できます。
インストール編
dnsmasq を起動します。そして、PCでネットワークブートします。
sudo dnsmasq Password: dnsmasq: started, version 2.66 DNS disabled dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack no-ipset auth dnsmasq: setting --bind-interfaces option because of OS limitations dnsmasq-dhcp: DHCP, proxy on subnet 192.168.1.0 dnsmasq-tftp: TFTP root is /tmp/tftpboot dnsmasq-dhcp: PXE(en0) xx:xx:xx:xx:xx:xx proxy dnsmasq-dhcp: PXE(en0) 192.168.1.101 xx:xx:xx:xx:xx:xx pxelinux.0 dnsmasq-tftp: error 0 TFTP Aborted received from 192.168.1.101 dnsmasq-tftp: failed sending /tmp/tftpboot/pxelinux.0 to 192.168.1.101 dnsmasq-tftp: sent /tmp/tftpboot/pxelinux.0 to 192.168.1.101 dnsmasq-tftp: sent /tmp/tftpboot/ldlinux.c32 to 192.168.1.101 dnsmasq-tftp: file /tmp/tftpboot/pxelinux.cfg/xx-xx-xx-xx-xx-xx not found (中略) dnsmasq-tftp: sent /tmp/tftpboot/pxelinux.cfg/default to 192.168.1.101
PC の画面にプロンプトが現れるので install と入力します。カーネルと initramfs が読み込まれてしばらく待つと見慣れたインストーラが現れます。あとは HTTP とかでインストールを進めてください。