背景故事:我备份了 Windows 10,并在加载了由 Rufus 创建的 Arch linux iso 的启动驱动器上重新启动了笔记本电脑。我进入cfdisk并删除了除“EFI系统”和“Lenovo启动分区”分区之外的所有分区。当我尝试使用 pacstrap 安装基础包时,它告诉我分区块大小太小,因此我向上扩展了 EFI 系统分区(有 1 GB 的额外空间,我认为这可能会有所帮助)。它不起作用,过了一会儿我尝试重新安装我的 Linux 文件系统(/dev/sda4)并且它起作用了。我跳过了我采取的一系列其他步骤,但我认为这些步骤是最相关的。
每当我尝试运行命令来安装 grub 时:
grub-install --target=x86_64-efi --efi-directory=/dev/sda1 --bootloader=arch_grub
它只是输出:
Installing for x86_64-efi platform.
grub-install: error: cannot read `/dev': Is a directory.
即使我给它的路径是 efi 分区 (/dev/sda1)。我尝试将 /boot 作为 efi 目录参数,但如果我尝试这样做,它只会输出:
Installing for x86_64-efi platform.
grub-install: error: /boot doesn't look like an EFI partition.
我对这些“自己动手”类型的发行版相当陌生,我很感激我能得到的所有反馈,谢谢!
编辑: fdisk -l /dev/sda 的输出:
Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type gpt
Disk identifier: 6393AD85-37EA-4C44-888C-C5908FC9AE82
Device Start End Sectors Size Type
/dev/sda1 2048 2582527 2580480 1.2G EFI System
/dev/sda2 2582528 4630527 2048000 1000M Lenovo boot partition
/dev/sda3 4630528 25602047 20971520 10G Linux swap
/dev/sda4 25602048 2550069646 224467599 107G Linux filesystem
答案1
我最近遇到了这个问题,因为我以前从未有过带有 UEFI 固件的系统/笔记本电脑。我假设您从头开始并使用最新版本的 Arch Linux(我的是4.15.9-1-ARCH
)。
我们假设:
- 您的 HDD/SSD/NVMe 驱动器“命名”为
/dev/sda
- 您创建了一个分区
/dev/sda1
- 你格式化
/dev/sda1
了mkfs.fat -F32 /dev/sda1
在安装过程中,将 root ( /
) 挂载到后/mnt
,您需要mkdir -p /mnt/boot/efi
继续安装过程:arch-chroot /mnt
、区域设置等。
安装efibootmgr
(grub
也许intel-ucode
),然后挂载/dev/sda1
到/boot/efi
,执行grub-install --bootloader-id=Arch_Linux --efi-directory=/boot/efi --recheck --target=x86_64-efi
...并且不要忘记生成/更新 GRUB 配置(grub-mkconfig -o /boot/grub/grub.cfg
)。你应该已经准备好了!
请注意,您实际上可以仅使用/boot
而不一定使用/boot/efi
。一如既往,看看维基百科。