问题

grub-rpi3.efi 建立在 RPI3 镜像构建阶段,它缺少密码提示的关键模块:

# efibootmgr -v -v 
Could not read variable 'BootNext': No such file or directory 
error trace: 
 vars.c:332 vars_get_variable(): open(/sys/firmware/efi/vars/BootNext-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var, O_RDONLY) failed: No such file or directory 
 lib.c:139 efi_get_variable(): ops->get_variable failed: No such file or directory 
Could not read variable 'BootCurrent': No such file or directory 
error trace: 
 vars.c:332 vars_get_variable(): 
open(/sys/firmware/efi/vars/BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var, O_RDONLY) failed: No such file or directory 
 lib.c:139 efi_get_variable(): ops->get_variable failed: No such file or directory 
Could not read variable 'Timeout': No such file or directory 
error trace: 
 vars.c:332 vars_get_variable(): 
open(/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var, O_RDONLY) failed: No such file or directory lib.c:139 efi_get_variable(): ops->get_variable failed: No such file or directory 
Could not read variable 'BootOrder': No such file or directory 
error trace: 
 vars.c:332 vars_get_variable(): 
open(/sys/firmware/efi/vars/BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var, O_RDONLY) failed: No such file or directory lib.c:139 efi_get_variable(): ops->get_variable failed: No such file or directory 
 efibootmgr.c:372 read_order(): efi_get_variable failed: No such file or directory 
No BootOrder is set; firmware will attempt recovery 
Could not read variable 'MirrorCurrent': No such file or directory 
error trace: 
 vars.c:332 vars_get_variable(): 
open(/sys/firmware/efi/vars/MirrorCurrent-7b9be2e0-e28a-4197-ad3e-32f062f9462c/raw_var, O_RDONLY) failed: No such file or directory 
 lib.c:139 efi_get_variable(): ops->get_variable failed: No such file or directory 
Could not read variable 'MirrorRequest': No such file or directory 
error trace: 
 vars.c:332 vars_get_variable(): 
open(/sys/firmware/efi/vars/MirrorRequest-7b9be2e0-e28a-4197-ad3e-32f062f9462c/raw_var, O_RDONLY) failed: No such file or directory 
 lib.c:139 efi_get_variable(): ops->get_variable failed: No such file or directory
无法在 Raspberry Pi 3 系统上设置 GRUB 密码
查看更多教程 https://on  itroad.com

解决方案

请按照下面列出的步骤解决问题:

  1. 验证文件是否就位:
# file grub-rpi3.efi
  1. 安装包 grub2-efi-aa64-modules。

3.设置默认启动设备:

# echo "set root=(hd0,msdos2)" > grub2-early.cfg
  1. 查看 grub-early.cfg 以验证是否只有一个“set root”字符串。

  2. 构建镜像:

# grub2-mkimage -c grub-early.cfg -O arm64-efi -o grub-rpi3.efi -p "(hd0,msdos1)/efi/redhat" all_video boot btrfs cat chain echo efifwsetup efinet ext2 fat font gfxmenu gfxterm gzio halt hfsplus iso9660 jpeg loadenv loopback lvm mdraid09 mdraid1x minicmd normal part_apple part_msdos part_gpt password_pbkdf2 png reboot regexp search search_fs_uuid search_fs_file search_label serial sleep syslinuxcfg test tftp video xfs http linux configfile
  1. 验证本地目录中的新文件:
# file grub-rpi3.efi
  1. 将文件的副本添加到 /boot/efi/EFI/redhat/ 目录。
# cp grub-rpi3.efi /boot/efi/EFI/redhat/

这也应该产生关于替换现有文件的警告。

  1. 将 I/O 缓冲区刷新到介质:
# sync; sync; sync
  1. 正常重启。
日期:2020-09-17 00:10:53 来源:oir作者:oir