最近の 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 で起動します。
今回は以上です。それでは。
コメント
コメントを投稿