记一次修复 GRUB 启动加载器
本文最后更新于 2022年5月23日 下午
背景
双系统的便利之处在于,可以使用 Linux 作为主力系统,而又随时可以使用 Windows 下的 AutoCAD、CATIA 等专业软件。不便之处在于,对一个系统的修改可能潜藏着对另一个系统的破坏。
之前将笔电的 bios 升级到了 2.07,解决了困扰已久的Linux 下无法挂起问题。这也同时为 Windows 系统开启了 BitLocker 功能。虽然可以提供更好的数据安全保护,但也使得 Linux 系统无法访问硬盘上 Windows 分区的数据。在安全性(Windows 作为备用操作系统,敏感数据几乎没有)和便捷性间权衡,将 BitLocker 功能手动关闭了。
问题与解决
然而,再一次重启电脑进入 Arch Linux 时,却只有 GRUB 的报错:
1 |
|
GRUB 进入了 rescue 模式,需要将配置改正才能正常启动。
修复与启动
1 |
|
可以看到用来安装操作系统的 hd1
盘有 6 个分区,而此时设置为 Linux 根目录挂载点在第 5 个分区。根据记忆,根目录应该在最后一个分区。尝试调整 GRUB 设置:
1 |
|
此时就出现了熟悉的 GRUB 启动项选择菜单,可以正常启动 Arch Linux 了。
重新安装 GRUB
经几番尝试,其他方式均告失败,只有进入 Arch Linux 系统后运行 grub-install
,才成功彻底修复了上述问题。
1 |
|
问题原因
完成修复后,打开「磁盘」功能查看磁盘分区,发现了问题所在:
对于安装 Windows 和 Linux 系统盘的这块 512 GB 三星硬盘,分区 3 为 Windows 的系统盘,分区 5 为 Linux Swap,分区 6 为 Linux 根目录挂载点。而新增的分区 4 是此次 Windows 创建的恢复环境,导致原本处于第 5 分区的 Linux 根目录挂载点变成了第 6 个分区。
添加 Windows 启动项
由于 Windows 10 使用 NTFS 文件系统,首先需要安装 NTFS-3G 以使 Arch Linux 能够识别其分区:
1 |
|
然后安装 os-prober 这个工具来探测其他操作系统:
1 |
|
检查 /etc/default/grub
中关于 os-prober 的配置,该配置项默认为被注释状态,取消注释,(如没有该行就在文件末尾添加),变成如下状态即可:
1 |
|
确保挂载包含 Windows 的分区,再次运行 grub-mkconfig:
1 |
|
由输出提示可以看到,os-prober 正常工作并探测出了 Windows 启动项,下一次启动时即可看到 Windows 选项了。
GRUB 美化
GRUB 支持替换背景图片等自定义外观样式。事实上,在 GNOME-LOOK 、pling上收录了许多 GRUB 美化主题,可以根据喜好下载。此处选择了 vimix 这个主题。
根据 README 提示运行安装脚本即可,在此不作赘述。
参考资料
grub error: unknown filesystem的解决办法 - Linux公社
碎碎念
使用 Linux 的过程是不断折腾的过程,似乎每隔三五天就需要一小修,每三五月一大修。而我非常享受这个「发现问题 - 解决问题 - 记录学习」的过程,对现代操作系统和许多其他计算机编程知识有了更多更 “实用” 的了解。
一年多的 Ubuntu 使用经验,让我对 Linux 有了非常粗浅的认知,理解了一些概念、熟悉了一些命令。切换到 Arch Linux 后,立即被其部分优秀特性吸引(这正是 Arch Linux 用户们津津乐道的):滚动构建而使所有软件版本保持最新、Wiki 文档详细全面汉化程度高、虽然没有了许多软件的官方支持,但 AUR 强大全面更新快……在 Ubuntu 22.04 上问题频发的 GNOME 42 (Wayland) 也终于在 Arch 上有了应有的惊艳表现。