最近の Ubuntu は Netboot で Secure boot をサポートしているとのことだったので、Ubuntu 24.04 Desktop Live を Netboot + NFS root で試してみました。なお、dhcp server は kea dhcp4 をつかい、ipxe ではなく サイン済みの bootx64.efi 経由でブートさせていますので 直接 grub のメニューに入ります。なお今回の環境はサーバはUbuntu 24.04 で構成しています。
早速ですが設定です。まず tftpd-hpa をインストールします。
また、24.04 の場合、カーネルは対応しているものの、initrd に含まれる nfsmount は version 4 に対応しておらず、version 3 で起動します。
今回は以上です。それでは。
早速ですが設定です。まず tftpd-hpa をインストールします。
apt-get install tftpd-hpa続いて net boot する iso イメージファイルをダウンロードしマウントしておきます。
cd /srv/tftp wget https://releases.ubuntu.com/24.04.2/ubuntu-24.04.2-desktop-amd64.iso mkdir -p /srv/tftp/ubuntu-24.04.2-desktop-amd64 mount -o loop /srv/tftp/ubuntu-24.04.2-desktop-amd64.iso /srv/tftp/ubuntu-24.04.2-desktop-amd64さらに Netbootで使用するファイル類を取得し展開・配置等しておきます。
cd /srv/tftp
wget https://releases.ubuntu.com/24.04/ubuntu-24.04.2-netboot-amd64.tar.gz
tar xzvpf ubuntu-24.04.2-netboot-amd64.tar.gz
cp -a amd64/bootx64.efi /srv/tftp/
cp -a amd64/grubx64.efi /srv/tftp/
grub-mknetdir --net-directory=/srv/tftp
cp -a /srv/tftp/boot/grub /srv/tftp/
cat > /srv/tftp/grub/grub.cfg << EOF
menuentry 'Ubuntu 24.04.2 amd64 nfsroot'{
linux ubuntu-24.04.2-desktop-amd64/casper/vmlinuz root=/dev/nfs netboot=nfs file=ubuntu-24.04.2-desktop-amd64/preseed/ubuntu.seed boot=casper ip=dhcp nfsroot=10.1.1.50:/srv/tftp/ubuntu-24.04.2-desktop-amd64 ro
initrd ubuntu-24.04.2-desktop-amd64/casper/initrd
}
EOF
続いて kea dhcp4をインストールし amd64 efi向けだけですが、設定しておきます。
apt-get install kea-dhcp4-server
cd /etc/kea
mv kea-dhcp4.conf kea-dhcp4.conf.orig
cat > /etc/kea/kea-dhcp4.conf << EOF
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "enp1s0f0" ]
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv",
"lfc-interval": 3600
},
"expired-leases-processing": {
"reclaim-timer-wait-time": 10,
"flush-reclaimed-timer-wait-time": 25,
"hold-reclaimed-time": 3600,
"max-reclaim-leases": 100,
"max-reclaim-time": 250,
"unwarned-reclaim-cycles": 5
},
"renew-timer": 900,
"rebind-timer": 1800,
"valid-lifetime": 3600,
"option-data": [
{
"name": "default-ip-ttl",
"data": "0xf0"
}
],
"client-classes": [
{
"name": "UEFI clients 1",
"test": "pkt.iface == 'enp1s0f0' and option[93].hex == 0x0007",
"next-server": "10.1.1.50",
"option-data": [
{
"name": "tftp-server-name",
"data": "10.1.1.50"
},
{
"name": "boot-file-name",
"data": "bootx64.efi"
}
]
}
],
"subnet4": [
{
"id": 1,
"subnet": "10.1.1.0/24",
"interface": "enp1s0f0",
"pools": [
{
"pool": "10.1.1.201 - 10.1.1.250",
"option-data": [
{
"name": "domain-name-servers",
"data": "10.1.1.64, 10.1.1.65"
},
{
"name": "routers",
"data": "10.1.1.23"
}
]
}
]
}
],
"loggers": [{
"name": "kea-dhcp4",
"output_options": [
{
"output": "stdout",
"pattern": "%-5p %m\n"
}
],
"severity": "INFO",
"debuglevel": 0
}]
}
}
EOF
つづいて nfsをインストール・設定・起動しておきます。
apt-get install nfs-kernel-server cat > /etc/exports << EOF # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /srv/tftp/ubuntu-24.04.2-desktop-amd64 *(ro,no_root_squash,no_all_squash,no_subtree_check,crossmnt) EOF exportfs -avr # exporting *:/srv/tftp/ubuntu-24.04.2-desktop-amd64 systemctl restart nfs-kernel-server設定は以上です。クライアントのセキュアブートを有効にして network boot して起動できれば OK です。なお revocations.efi ファイルを request してきますが、なくてもブートはします。(revocations.efiについては割愛します。)
また、24.04 の場合、カーネルは対応しているものの、initrd に含まれる nfsmount は version 4 に対応しておらず、version 3 で起動します。
今回は以上です。それでは。
コメント
コメントを投稿