pxenetboot を介して現在のAntergos LiveCDを起動したい。これを行うには、ISOをダウンロードしてマウントし、内容を_/tftp/antergos/
_にコピーしました。
次に、 dnsmasq を設定して tftp を提供し、使用しました
_grub-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi \
--fonts="unicode" -o bootx64.efi grub/grub.cfg
_
次の_/tftp/antergos/Arch/boot/
_から_grub.cfg
_にefiローダーを生成するには:
_set timeout=5
menuentry 'Antergos x86_64' {
insmod net
insmod tftp
insmod efi_gop
set net_default_server=192.168.0.1
net_add_addr eno0 efinet0 192.168.0.150
linux (tftp)/antergos/Arch/boot/vmlinuz archisobasedir=Arch archisolabel=ANTERGOS modules-load=loop rd.modules-load=loop udev.log-priority=crit rd.udev.log-priority=crit quiet splash
initrd (tftp)/antergos/Arch/boot/archiso.img
}
_
dnsmasq は_bootx64.efi
_を配信するように構成されています:
_enable-tftp
tftp-root=/tftp
dhcp-option=option:Bootfile-name,"/antergos/Arch/boot/bootx64.efi"
dhcp-boot=/antergos/Arch/boot/bootx64.efi
dhcp-option-force=210,/antergos/
dhcp-option-force=66,192.168.0.1
dhcp-option=3,192.168.0.101
_
ただし、マシンで起動する pxe (IPv4)を選択すると、_bootx64.efi
_を受信してから、 grub シェルに直接移動します。シェルでは、cat (memdisk)/grub/grub.cfg
して上記の_grub.cfg
_の内容を取得できるので、シェルは既存のローカルインストールからではなく_bootx64.efi
_からのものであると想定します。
ここで何が問題になっているのかを診断するにはどうすればよいですか?
問題は、grubがデフォルトでgrub.cfg
の(memdisk)/boot/grub
を検索することでした。質問(grub-mkstandalone [...] -o bootx64.efi grub/grub.cfg
)のコマンドによって作成されたmemdiskは、次のようになりました。
- boot
- grub
- grub.cfg
したがって、grubはgrub.cfg
を見つけられず、何もしません。
解決策は、boot
フォルダーの外部からgrub-mkstandalone
を呼び出し、次のようにgrub.cfg
パスの一部として渡すことでした。
grub-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi --fonts="unicode" \
-o boot/bootx64.efi boot/grub/grub.cfg
これにより、次の(memdisk)
コンテンツが生成されます。
- boot
- grub
- grub.cfg