使用 grub4dos 实现高度兼容的 Windows 10 和 Ubuntu 双启动选择

作者:V君 发布于:2021-9-11 9:54 Saturday 分类:折腾手记

TL;DR for 高级玩家

1) 更新 MBR/PBR
2) 在对应分区拷入 grldr 撰写 menu.lst 配置文件
3) 重启,享受可选启动选择
x) 修改 default 指定默认选中项

为新手展开详细的操作步骤

①更新 MBR/PBR

我喜欢使用 BOOTICE 来更新 MBR 和 PBR,它的官网似乎挂了,得用搜索引擎找其他三方网站提供的下载。 本文撰写时找到的网站是 MAJOR GEEKS 这个页面还另外提供了32位的下载。 若这个网站无法访问,还可以用我下好的副本。 BOOTICE 的使用方法非常简单,打开之后选中目标磁盘,点击更新主引导记录就能写 MBR。 我喜欢使用 NT6 的 MBR,它的策略是从激活的分区启动。 接着是更新 PBR,点击更新分区引导记录,目标分区选择活动分区,将类型更改成 GRUB4DOS,根据实际情况选择版本即可。 在运行着的 Win10 情况下这个工具可能无法更新系统分区 PBR 这时候就需要用 Win10 安装盘或者其他 PE 来跑 BOOTICE 了。 (当然你有多台电脑也可以把硬盘插到另一台电脑上来写 PBR,我就经常这样干 乂目) 更新 MBR/PBR 这一步就完成了,现在电脑无法启动,会显示 No grldr,因为还需要把 grldr 放到活动分区根目录

②在对应分区拷入 grldr 撰写 menu.lst 配置文件

我们可以在 grub4dos 的官网或者 GitHub 下载 grldr, 本文使用的版本是 grub4dos-0.4.6a-2021-08-13 若无法访问官网或 GitHub,也可以用我下好的副本,这个副本只有 grldr 单个文件。 将 grldr 放到活动分区根目录就能手动敲命令行选择系统来启动了。 为了进一步偷懒我们可以在旁边放一个配置文件 menu.lst 来呈现列表界面,用键盘方向键选择要启动的系统,还可以倒计时启动选择指定的系统。这里提供一个 menu.lst 的示例(感谢Kirkx)。

timeout 10
default 0

title Windows 10
    root (hd0,0)
    chainloader /bootmgr

title Ubuntu
    root (hd0,1)
    kernel /boot/vmlinuz root=UUID=00000000-1111-2222-3333-444444444444 ro
    initrd /boot/initrd.img

这里要注意一下 Linux 内核参数的分区 UUID,有三种方法可以获取。分别是在 Linux 终端打 ls /dev/disk/by-uuid、在 grub4dos 命令行打 UUID、在 Windows 使用 DiskGen 之类的分区工具查看。 注意这里有个坑, DiskGen 提供的 UUID 格式和 Linux 内核参数的格式不一样,在最后一组十六进制的前4个字符之后需要加一个横杠才能使用,否则内核会告诉你找不到卷。 到这里就结束了,可以重启电脑,选择一个系统来启动了。

听我扯扯

最近搞来一台比较奇怪的机器,经过各种尝试最终确定下来它只能用 bootmgr 和 grub4dos 这两个引导器,其他(grub2、syslinux、……)的统统无法启动,会反复循环重启。由于需要在 Win10 和 Ubuntu 之间切换,那就把 grub4dos 用起来,弄懂了如何使用 grub4dos 启动 Linux ~

(两天后)回过头来悄悄吐槽 Ubuntu自带的 GRUB2 的配置文件好难读懂,明明一个 chainloader 就可以解释清楚的事情,为啥要写这么多行。老手莫笑,毕竟我年幼的时候也吐槽过为啥 SQLite 一个文件就能带走全家,为啥还有 SQL Server 这种要安装成服务的家伙。 格局小了哈

标签: linux 系统安装 Windows10 Ubuntu

评论(0) 引用(0) 浏览(625)

Powered by emlog 去你妹的备案 sitemap