Ubuntu 16.04上にUbuntu 18.04のPXEブートサーバをセットアップ

はじめに

Ubuntu 16.04をルーター化 したところに Ubuntu 18.04のPXEブートサーバをセットアップしたメモです。

Ubuntu 18.04はリリース前の 2018-04-21版 を使いました。

手順は Ubuntu 16.04 / Debian 8: PXEブートサーバをインストールしてネットワークインストール環境を整える - Narrow Escape を参考にしましたが、preseedは今回は使わないようにしました。

tftpサーバのインストールと起動

tftpd-hpa パッケージをインストール。

sudo apt install tftpd-hpa

うろ覚えですが、インストールして状態確認すると、起動して自動起動も有効になっていたと思います。

systemctl status tftpd-hpa

dhcpサーバのインストールと起動

isc-dhcp-server パッケージをインストール。

sudo apt install isc-dhcp-server

設定ファイル /etc/dhcp/dhcpd.conf に自分の環境に応じた設定を追記。 hardware ethernet の後のMACアドレス xx:xx:xx:xx:xx:xx は実際の値に置き換えてください。 PXEブートのときにコンソールに表示されていたのでそれを見ながら設定しました。 事前に設定するならBIOSで確認すれば良さそうです。

subnet 192.168.3.0 netmask 255.255.255.0 {
  option domain-name-servers 192.168.2.1;
  option routers 192.168.3.1;
  filename "pxelinux.0";
}

host ubuntu-18.04-pxeboot {
  hardware ethernet xx:xx:xx:xx:xx:xx;
  fixed-address 192.168.3.2;
}

コマンドで追記にするなら以下の2つのどちらかで。後者のほうがクォートが不要というメリットがあります。

sudo sh -c 'cat <<EOF >> /etc/dhcp/dhcpd.conf
subnet 192.168.3.0 netmask 255.255.255.0 {
  option domain-name-servers 192.168.2.1;
  option routers 192.168.3.1;
  filename "pxelinux.0";
}

host ubuntu-18.04-pxeboot {
  hardware ethernet xx:xx:xx:xx:xx:xx;
  fixed-address 192.168.3.2;
}
EOF
'

.. code-block:: console

sudo cat <<EOF | sudo tee -a /etc/dhcp/dhcpd.conf > /dev/null
subnet 192.168.3.0 netmask 255.255.255.0 {
  option domain-name-servers 192.168.2.1;
  option routers 192.168.3.1;
  filename "pxelinux.0";
}

host ubuntu-18.04-pxeboot {
  hardware ethernet xx:xx:xx:xx:xx:xx;
  fixed-address 192.168.3.2;
}
EOF

こちらもうろ覚えですが、起動と自動起動有効化はすでにされていたと思うので、再起動して設定変更を反映しました。

sudo systemctl restart isc-dhcp-server

Ubuntu 18.04のネットブートイメージの取得と設置

参考にした記事ではpreseedを使うためにネットブートイメージのtarballを取得・展開した後、小分けにコピーしていましたが、preseed無しなら単にtarballをtfptd-hpaの公開ディレクトリ /var/lib/tftpboot に展開して所有者を tftp にするだけでOKでした。

curl -LO http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/netboot.tar.gz
sudo tar xf netboot.tar.gz -C /var/lib/tftpboot
sudo chown -R tftp:tftp /var/lib/tftpboot