web-dev-qa-db-ja.com

GRUB)を使用したPXE起動の問題のデバッグ

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_からのものであると想定します。

ここで何が問題になっているのかを診断するにはどうすればよいですか?

1
Nobody

問題は、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
2
Nobody