我在 Dell Latitude E5450 上运行 Debian 测试。
debootstrap
我按照发布的说明创建了一个 USB 环境这里, 和这里。根据这些说明(和其他说明),我安装了正在运行的/dev/{pts}
,/proc
并/sys
在适当的目录中安装了最新的内核systemd
等。最后一步是配置 GRUB,首先将其安装在我的 U 盘的 EFI 分区上(格式化为 FAT32 并带有引导标志)从chroot
环境内部(带有适当的参数,例如EFI目录),然后运行update-grub
;我再次强调这一点,我chroot
从通过创建的系统环境内部运行此命令debootstrap
。
问题是它检测到我正在运行的系统dev/sda2
,这是我的主分区。因此,当我尝试使用 启动此 USB 时virt-manager
,没有任何反应;当我进入“一次性启动菜单”(显示戴尔徽标时按 F12)时,我的笔记本电脑未将其检测为可启动设备,因此我进入设置并将grubx64.efi
USB 记忆棒内部设置为启动选项,然后重新启动。执行此操作后,不出所料,它想要启动我笔记本电脑中的内核,而不是 USB 驱动器中的内核。
发生的情况是这样的:
# grub-install --boot-directory=/boot/ --efi-directory=/boot/efi --recheck --removable /dev/sdb1
Installing for x86_64-efi platform.
Installation finished. No error reported.
# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.10.0-3-amd64
Found initrd image: /boot/initrd.img-5.10.0-3-amd64
Found Debian GNU/Linux bullseye/sid on /dev/sda2
done
这是grub.cfg
我得到的文件。在第 106 行中,我确实在 USB 中看到了一个带有内核的菜单项,但是当尝试从它启动时,该菜单项并没有显示;同样,一次性启动菜单无法将第一个分区(FAT fs、EFI)识别为可启动设备。如果我不将/dev
目录挂载到新环境的树中,我将无法运行grub-install
(这很有意义,但我认为值得一提)。
我不知道该怎么做,因为谷歌没有返回任何有用的东西,除了更多关于如何做我已经做过的事情的说明。首先,启动菜单无法识别我的 USB EFI 分区,这非常令人沮丧。其次,我真的很想知道chroot
我必须运行什么命令、使用什么参数以及在树中安装哪些目录,以便 GRUB 识别 USB 记忆棒内的内核,而不是我笔记本电脑中的内核。
下面是 USB 记忆棒在 GParted 和fdisk
.
答案1
从环境内部安装 GRUB 后一切正常chroot
;grub-install
检测到我的主分区上的内核,但不一定从它启动;该条目仍然显示在菜单中,我想知道如何删除它。在 QEMU 中启动只需添加参数即可--bios /usr/share/qemu/OVMF.fd
。谢谢大家的意见!