CachyOS与ManjaroOS在Grub引导形式上的踩坑
前言
作者的朋友最近一直使用 Manjaro,自己也跟着试用 CachyOS / Manjaro 系统,过程中碰到了不少坑,于是把遇到的问题和解决流程记录下来,方便以后回顾或给遇到同样问题的朋友参考。
正文
本文假设你已经完成系统安装,只是无法从 EFI 启动 GRUB(常见于某些笔记本 NVMe + NVRAM 写入受限的情况)。
作者遇到的情况如下:
Grub 空间满了无法写入 EFI 分区引导 但是实际查看并没有这个问题
grub-install: error: efibootmgr failed to register the boot entry: Input/output error
环境与磁盘信息
- 机型:ROG M16 2022
- 分区信息:
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
loop0 squashfs 4.0 0 100% /run/archiso/airootfs
sda
├─sda1 exfat 1.0 Ventoy 4E21-0000
│ └─ventoy iso9660 Joliet Extension COS_202508 2025-08-28-13-38-09-00
└─sda2
zram0 swap 1 zram0 209e31fb-fcc9-4171-94ee-4f1281e3e3cf [SWAP]
nvme0n1
├─nvme0n1p1 vfat FAT32 AF8B-F7AC
├─nvme0n1p2
└─nvme0n1p3 ntfs 系统 A6E83F17E83EE4E9
nvme1n1
├─nvme1n1p1 ntfs 软件 CC8A3E9A8A3E814E
├─nvme1n1p2 btrfs 9d7c31b4-70cf-4e6a-beca-184cf980f389
└─nvme1n1p3 btrfs ec2d3428-fc8e-4563-9d18-2333e467fc66
启动安装时实际挂载分区:
| 分区 | 容量 | 已用 | 可用 | 使用率 | 挂载点 | 类型 |
|---|---|---|---|---|---|---|
| nvme0n1p1 | 599M | 252M | 348M | 42% | /mnt/boot/efi | vfat (EFI) |
| nvme1n1p2 | 51G | 12G | 38G | 23% | /mnt | btrfs (@ 子卷) |
| nvme1n1p3 | 207G | 6.3M | 204G | 1% | /mnt/home | btrfs |
步骤概览
- 进入 LiveCD 环境
- 挂载 EFI 分区、根目录、和 home 分区。
- 进入 chroot
- 安装 / 修复 GRUB:
- 尝试正常安装(如果 NVRAM 可写)。
- 如果 NVRAM 不可写,使用 --no-nvram 或 --removable 复制到 EFI fallback 路径。
- 生成 grub. cfg,检查,退出并重启。
- 如仍无法启动,查看 BIOS 启动顺序或使用 efibootmgr 检查。
详细步骤
1) 挂载(示例,非使用 cachy-chroot) 如果你的根文件系统是 btrfs 并使用子卷(比如 @),可以这样挂载:
# 挂载根子卷
mount -o subvol=@ /dev/nvme1n1p2 /mnt
# 创建并挂载 EFI 与 home
mkdir -p /mnt/boot/efi /mnt/home
mount /dev/nvme0n1p1 /mnt/boot/efi
mount /dev/nvme1n1p3 /mnt/home
检查挂载是否正确:
df -h | grep -E '(nvme0n1p1|nvme1n1p2|nvme1n1p3)'
# 预期输出类似:
# /dev/nvme1n1p2 51G 12G 38G 23% /mnt
# /dev/nvme0n1p1 599M 252M 348M 42% /mnt/boot/efi
# /dev/nvme1n1p3 207G 6.3M 204G 1% /mnt/home
2) 使用 cachy-chroot(推荐 CachyOS 用户)
CachyOS 提供了方便的 cachy-chroot,会自动处理 btrfs 子卷挂载与必要的 bind mount。
若使用 cachy-chroot,只需:
cachy-chroot
# 完成后直接 exit 即可退出 chroot,cachy-chroot 会清理 mount
3) 如果使用 arch-chroot(手动绑定) 4) 在没有 cachy-chroot 的情况下,需要手动 bind /dev /proc /sys /run:
5) 安装 / 修复 GRUB 常规(NVRAM 可写)用法:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=cachyos
grub-mkconfig -o /boot/grub/grub.cfg
如果 NVRAM 无法写入,可以采用以下替代方案:
方案 :使用 --no-nvram 并复制到 EFI removable/fallback
# 仅安装文件,但不写入 NVRAM
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=cachyos --no-nvram --recheck
# 把 grub 的 EFI 可执行文件复制到 fallback(确保能在 BIOS/UEFI 下通过 fallback 路径启动)
mkdir -p /boot/efi/EFI/BOOT
cp /boot/efi/EFI/cachyos/grubx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI
# 生成配置
grub-mkconfig -o /boot/grub/grub.cfg
说明与注意事项
- --no-nvram:只安装 EFI 文件,不尝试写入 NVRAM。
- 在某些笔记本上(尤其厂商对 NVRAM 有限制或 bug)无法写入 EFI 变量,这时使用 --no-nvram 复制到 EFI fallback
6) 退出 chroot、卸载并重启 若使用 cachy-chroot,直接 exit 即可,cachy-chroot 会自动清理挂载。若手动 chroot,则:
# 退出 chroot
exit
# 卸载已挂载的分区(递归卸载)
umount -R /mnt
# 重启
reboot
7) BIOS 设置
如果使用了 --no-nvram,只把文件放在 EFI/BOOT/BOOTX64. EFI,进入 BIOS/UEFI 设置并确保使用 “Removable media” 或将该 EFI 文件路径设为首选启动项;有些主板会自动识别。
结语
虽然 Linux 发行版的桌面系统感觉上手不是很 Easy,但是用起来是真爽呀。 又省资源性能又好,就是要踩的坑太多了。
我的踩坑历程
- 配置好了 Niri,怎么这么卡?
- 显卡驱动怎么掉了
- 字体怎么这么丑
- 我的屏幕亮度怎么寄了
- Xxx 组件怎么坏了
- 我输入法怎么打不了字
然后,AI 真好用(