我现在已经把Debian 12 live环境安装在U盘上,并且使用live环境在硬盘上安装了自己组装的Linux系统(通过busybox编译的根文件系统,自己创建的grub.cfg,自己编译的Linux内核)/dev/sda
。在执行时遇到了问题:grub-install --target=x86_64-efi --root-directory=/mnt --boot-directory=/mnt/boot /dev/sda --force --efi-directory=/boot/efi --recheck
,报如下信息:`
我找到了一个类似的问题(https://unix.stackexchange.com/questions/405472/cannot-find-efi-directory-issue-with-grub-install),但是按照上面的步骤并没有解决我的问题。我是初学者,我不确定我把问题写在了哪里。
1#,将硬盘分成/dev/sda
三个分区:
/dev/sda1
/dev/sda2
/dev/sda3
2#,同时将sda1设置为efi分区:
$sudo fdisk /dev/sda -l
...
Device Start End Sectors Size Type
/dev/sda1 ..... EFI System
/dev/sda2 ..... Linux System
/dev/sda3 ..... Linux System
3#,格式化这3个分区:
/sbin/mkfs.fat -F32 /dev/sda1
/sbin/mkfs.ext4 /dev/sda2
/sbin/mkfs.ext4 /dev/sda3
4#、分别挂载到不同的路径:
mount /dev/sda1 /mnt/boot/efi
mount /dev/sda2 /mnt/boot
mount /dev/sda3 /mnt
5#,chroot
然后进入新的bash
sudo chroot /mnt/
bash-5.2# grub-install --target=x86_64-efi --root-directory=/mnt --boot-directory=/mnt/boot /dev/sda --force --efi-directory=/boot/efi --recheck
Installing for x86_64-efi platform.
grub-install:error:/boot/efi does't look like an EFI partition.
答案1
步骤4:
4#、分别挂载到不同的路径:
mount /dev/sda1 /mnt/boot/efi mount /dev/sda2 /mnt/boot mount /dev/sda3 /mnt
顺序错误。每次挂载都会被下一次挂载覆盖,最后只留下最后一个可见的文件系统。顺序应该颠倒过来(并且可能创建缺失的目录):
mount /dev/sda3 /mnt
mkdir -p /mnt/boot
mount /dev/sda2 /mnt/boot
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
同时,为了正确处理 UEFI(在 UEFI 固件中写入要启动的内容),请注意在之前的某个步骤中grub-install
,在目标结果中(在/mnt
chroot 中)还应挂载这些伪文件系统:
sysfs
在/sys
efivarfs
在/sys/firmware/efi/efivars