$ lsb_release -rd
Description: Ubuntu 14.04.1 LTS
Release: 14.04
dpkg -l grub-efi-amd64-signed
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-======================-================-================-=================================================
iU grub-efi-amd64-signed 1.34+2.02~beta2- amd64 GRand Unified Bootloader, version 2 (EFI-AMD64 ve
Grub 向 tftpserver 发出的文件请求未以 tftproot 为前缀。尽管设置了“前缀”变量。在 UEFI 启动模式下观察到了这种情况。这会导致启动失败,因为 grub 无法获取 grub.cfg
来自 grub 提示的相关 O/p:
prefix=(tftp,10.10.1.13)/grub
root=tftp,10.10.1.13
pxe_default_server=10.10.1.13
net_default_ip=10.10.1.161
net_default_mac=a0:d3:c1:fb:86:94
net_default_server:10.10.1.13
grub_cpu=x86_64
grub_platform=efi
tcpdump 输出
1382 17:33:56.955465 IP 10.10.1.161.25300 > 10.10.1.13.tftp: 58 RRQ "/grub/x86_64-efi/command.lst" octet blksiz e 1024 tsize 0
1383 17:33:56.956640 IP 10.10.1.13.45600 > 10.10.1.161.25300: UDP, length 24
1384 17:33:56.956885 IP 10.10.1.161.25301 > 10.10.1.13.tftp: 53 RRQ "/grub/x86_64-efi/fs.lst" octet blksize 102 4 tsize 0
1385 17:33:56.958146 IP 10.10.1.13.42098 > 10.10.1.161.25301: UDP, length 24
1386 17:33:56.958368 IP 10.10.1.161.25302 > 10.10.1.13.tftp: 57 RRQ "/grub/x86_64-efi/crypto.lst" octet blksize 1024 tsize 0
1387 17:33:56.959412 IP 10.10.1.13.33848 > 10.10.1.161.25302: UDP, length 24
1388 17:33:56.959646 IP 10.10.1.161.25303 > 10.10.1.13.tftp: 59 RRQ "/grub/x86_64-efi/terminal.lst" octet blksi ze 1024 tsize 0
1389 17:33:56.961969 IP 10.10.1.13.47148 > 10.10.1.161.25303: UDP, length 24
1390 17:33:56.962482 IP 10.10.1.161.25304 > 10.10.1.13.tftp: 44 RRQ "/grub/grub.cfg" octet blksize 1024 tsize 0
1391 17:33:56.966059 IP 10.10.1.13.38281 > 10.10.1.161.25304: UDP, length 24
我这里遗漏了什么吗?
答案1
您可能需要将 tftp 服务器的根目录移动到 /grub 以匹配签名的引导加载程序分配的前缀。
/etc/default/tftpd-hpa:
OPTIONS="-v -s /grub"
TFTP_DIRECTORY="/grub"
您能从 grub 看到 grub.cfg 文件吗?
grub> cat (tftp,10.10.1.13)/grub/grub.cfg
或者
grub> cat (tftp,10.10.1.13)/grub.cfg
我还发现执行以下操作对于调试文件很有帮助:
grub> configfile (tftp,10.10.1.13)/grub/grub.cfg
error: can't find command 'kernel'
error: can't find command 'append'
...
您可以使用它来检查文件的语法。