问:如何使用 Grub 在 EFI 系统上手动启动 Linux?
我陷入困境的地方:我正在尝试在 x64 计算机上安装自定义内核、根文件系统和 grub。 USB 记忆棒具有等效的安装脚本并可启动,但当我尝试在 x64 设备上安装 eMMC 时,它显示“启动选项恢复”。这是一个重新启动循环,我怀疑它与我使用 Grub 的方式有关。
图片(不是我的):
主屏幕:
可用选项:
(简化的)代码:
#! /bin/bash
set -e
# Create GPT, partition 1, type BIOS boot, bootable flag
(echo -e "g\nn\n1\n\n+128M\nt\n4\nM\na\nM\nw\n") | fdisk /dev/mmcblk0
sleep 1
mkfs.vfat -N BOOT /dev/mmcblk0p1
# Create partition 2
(echo -e "n\n2\n\n\nY\nw\n") | fdisk /dev/mmcblk0
sleep 1
mkfs.ext4 -F -L ROOTFS /dev/mmcblk0p2
dd if=rootfs of=/dev/mmcblk0p2 conv=fsync
mount /dev/mmcblk0p2 /mnt
mount /dev/mmcblk0p1 /mnt/boot/efi
cp vmlinuz-custom /mnt/boot
chroot /mnt <<-EOF
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs none /dev
# This could be moved out of the chroot, but for is use this.
update-initramfs -c -k custom
umount /proc /sys /dev
EOF
grub-install --target=x86_64-efi --removable --recheck \
--root-directory=/mnt \
--efi-directory=/mnt/boot/efi \
--boot-directory=/mnt/boot/efi/EFI \
--bootloader-id=grub /dev/mmcblk0;
cat > /mnt/boot/efi/EFI/grub/grub.cfg <<-EOF
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod normal
search.fs_label BOOT grub
search.fs_label ROOTFS rootfs
set prefix=/bogus # Unavailable prefix (prefix required by Grub)
sleep 1
linux (\$rootfs)/boot/vmlinuz-custom root=UUID=$(blkid -o value -s UUID /dev/mmcblk0p2) i915.force_probe=* swiotlb=65536 module_blacklist="pinctrl_elkhartlake,dp83867"
initrd (\$rootfs)/boot/initrd.img-custom
boot
EOF
已经检查过:
- Grub 中的 UUID 似乎是正确的
- USB 和 EMMC 安装脚本不相同,但等效。
- 将 BIOS 选项重置为默认设置
- 所有命令似乎都正确执行
答案1
我记不太清了,但我认为这与编写 Grub 有关。尝试删除--removable
.我用它来创建USB,好像用了两次好像不能玩两次。也尝试删除--recheck
.
最终我将内核移至 EFI 分区上的仅 EFI 位置。通过efibootmgr
这个处理方式比 Grub 好得多。
答案2
我在一台只有 Linux(没有 Windows)的笔记本电脑上也经历了同样的蓝屏。您认为蓝屏属于系统的哪一部分?到 BIOS/UEFI(例如,到硬件),还是到 GRUB?
我具体做了什么:
- 我将 Debian 安装在 SSD 上,但将 ESP (EFI) 分区安装在 U 盘上(不要问我为什么,这只是为了一些测试)
- 第一次启动时一切顺利
- 然后我拔掉了包含 ESP 分区的 U 盘,笔记本电脑无法启动。这是预期的,因为它不再有 ESP 分区
- 然后我再次插入U盘,它也没有启动。这是出乎意料的。
读完后这,我重新开始了这个过程,但是这次我dpkg-reconfigure grub-efi-amd64
在安装了 Debian 后立即进行了操作,并且我对这个问题的回答是“是” Force extra installation to the EFI removable media path ?
。
现在它可以工作了,但是有额外的蓝屏:
- 我拔掉带有 EFI 分区的 USB 记忆棒,笔记本电脑无法启动。预期的
- 我重新插入 U 盘,现在它可以启动,但显示蓝屏。如果我选择
Continue boot
它会启动 grub,然后启动 Debian。
网上关于蓝屏的信息很少。您能分享一下您的想法吗?它从哪里来,为什么会显示?