尧图精选

grub4dos制作纯Legacy启动U盘:MBR/PBR与menu.lst实战

🕒 发布时间:2026/10/1 5:14:25 📁 来源:尧图网络
上个月帮朋友翻修一台2012年的老笔记本BIOS界面里翻遍了都找不到UEFI这一项而我手头几只U盘全是前几年做的UEFI启动盘插上去连认都不认。折腾过的人都懂这不是盘坏了是引导方式对不上。于是我又把压箱底的 grub4dos 翻出来重新做了一只纯 Legacy非UEFI引导启动U盘。这篇文章就把整个制作过程从头到尾拆开讲grub4dos 到底是什么、它和 UEFI 引导的本质差别在哪、U盘的分区和文件系统怎么规划、引导链是怎么一级级接上的、menu.lst 怎么写才能真的把 PE 或工具盘跑起来以及我在真机上踩过的那些坑。适合手里有老机器、老主板、工控设备或者某些只认 Legacy 的专用终端的同学也适合想弄明白引导这件事底层到底在干什么的人。全程不需要什么高深背景跟着做就行。1. 先弄清Legacy与UEFI的底层差异再判断要不要走grub4dos这条路1.1 两种引导方式的本质区别Legacy 引导这套东西正式叫法是 BIOS 引导或者叫 MBR 引导。它的逻辑非常原始主板加电自检完成后BIOS 去读启动设备的第一个扇区也就是 512 字节的 MBR把里面的引导代码加载到内存 0x7C00 处执行然后由这段代码去找到活动分区、读分区引导记录 PBR再加载操作系统自己的引导程序。整个过程是链式的一环扣一环任何一环缺失都会卡住。UEFI 完全是另一套思路。它不读 MBR而是去读一个 FAT 格式的 EFI 系统分区按固定路径找 .efi 可执行文件比如 \EFI\BOOT\BOOTX64.EFI。UEFI 本身带文件系统驱动、带网络栈、带图形界面等于主板里内置了一个小操作系统。好处是启动快、支持大容量 GPT 磁盘、支持 Secure Boot 校验签名代价是它跟老硬件、老系统、老工具链的兼容性差了一大截。这两套东西最要命的地方在于——它们互相不认。一只做好的 UEFI 启动盘插在纯 Legacy 主板上BIOS 只会去读它的 MBR而 UEFI 盘的 MBR 往往只是一段占位代码什么都没干结果就是插上去没反应或者直接从硬盘启动了。反过来纯 Legacy 盘插在只开 UEFI 模式的新机器上同样启动不了。所以做盘之前第一件事是确认目标机器的引导模式。1.2 哪些场景grub4dos依然是更优解有人会问现在都什么年代了还折腾 Legacy我自己的判断是以下这些场景里 grub4dos 不仅没过时反而是最省事的方案。第一类是 2012 年以前的老机器。这些主板压根没有 UEFI只有传统 BIOS你只能走 Legacy 路线。第二类是工控机、收银机、医疗设备、老式服务器它们往往锁死在 Legacy 模式甚至 BIOS 里连 CSM 开关都没有。第三类是需要一个U盘装一堆东西的维护场景grub4dos 的菜单可以同时挂载多个 PE、多个 DOS 工具盘、多个 Linux ISO、多个内存诊断程序靠一个 menu.lst 统一切换这在 UEFI 下要配多个 .efi 反而更麻烦。第四类是老系统比如某些只支持 MBR 引导的旧版系统UEFI 下装起来各种别扭Legacy 下一路顺。grub4dos 还有个杀手锏它内置了磁盘映射能力可以把一个 ISO 文件当成光驱来用把 IMG 文件当成软盘来用甚至能加载内存盘驱动让 Windows 安装程序识别到映射出来的虚拟光驱。这个能力在 UEFI 引导器里要么缺失要么实现起来复杂得多。1.3 开工前的软硬件清单准备的东西不多但每样都得对。硬件方面一只 U 盘容量建议 8GB 以上因为要放 PE 和若干 ISO如果只放 DOS 工具2GB 都够。U 盘主控建议选普通 USB 2.0/3.0 存储盘就行不要用某些加密盘、量产特殊盘它们的分区表可能被固件锁住写不进去引导代码。软件方面BootICE写 MBR/PBR 的神器免费、grub4dos 官方发布包含 grldr、grldr.mbr、menu.lst 示例、一个虚拟机用于验证VMware 或 VirtualBox 都行、DiskPart系统自带不用额外装、以及你要放进去的 PE 镜像或工具 ISO。注意grub4dos 的版本请认准 0.4.6a 这条稳定线网上流传的某些魔改版带额外插件容易在特定主板上翻车。文件来源尽量走官方发布渠道别随手从论坛附件里抓。2. U盘分区表与文件系统怎么规划才不返工2.1 MBR还是GPT这里没有选择困难做 Legacy 启动盘分区表必须是 MBR。原因很简单BIOS 加电后只认 MBR它读的是磁盘第一个扇区里面包含引导代码和分区表。GPT 磁盘的第一个扇区是保护性 MBR里面那段代码基本是空壳BIOS 读完不知道该干嘛直接跳过了。所以操作上很明确整只 U 盘用 MBR 分区表不要用 GPT。如果你之前用 Windows 的磁盘管理把 U 盘初始化成了 GPT得先转回来。转换这一步会清空数据做之前把东西备份好。2.2 FAT32、NTFS、exFAT怎么选文件系统这块要看你的实际需求三个选项各有取舍。FAT32 是兼容性最好的几乎所有 BIOS 和老引导器都能读grub4dos 读它毫无压力。缺点是单文件不能超过 4GB一个稍大的 Windows 安装 ISO 就塞不进去了。NTFS 能放大文件grub4dos 内置了 NTFS 读取驱动读是没问题的。但写入需要额外驱动而且某些老主板的 BIOS 在纯 Legacy 模式下对 NTFS 的 PBR 识别不稳定我遇到过一两次主板直接跳过的情况。exFAT 介于两者之间单个文件可以超大但 grub4dos 对 exFAT 的支持不算完整只在较新版本里有条件支持稳妥起见不建议作为主分区。我的常规做法是U 盘做单个 FAT32 主分区把日常工具和小的 PE 放这里如果有超过 4GB 的大 ISO就再分一个 NTFS 分区专门放大文件menu.lst 里用 find --set-root 去定位。这样兼顾兼容性和容量。2.3 用DiskPart把U盘洗成干净底板动手前先用 DiskPart 把 U 盘彻底清一遍这一步能省掉后面很多莫名其妙的故障。以管理员身份打开命令提示符依次执行diskpart list disk select disk 2 # 这里换成你U盘对应的编号千万别选错 clean create partition primary select partition 1 active format fsfat32 quick assign exit逐条说一下为什么这么下。list disk先看清楚编号选错盘等于把硬盘清了这是最危险的步骤。clean会抹掉所有分区信息包括可能残留的 GPT 保护性 MBR。create partition primary建主分区。active是打活动分区标记这一步非常关键因为 Legacy 引导链里 BIOS 是去读活动分区的 PBR 的没有活动标记引导代码找不到落脚点。format fsfat32 quick快速格式化成 FAT32。assign给它分配盘符方便后续拷文件。注意如果 U 盘之前被做成了 UEFI 启动盘clean之后一定要确认它变回了 MBR 布局。可以再执行一次list disk看 GPT 那一列有没有星号有星号说明还是 GPT需要重新初始化。3. grub4dos的文件构成与引导链拆解3.1 grldr、grldr.mbr、menu.lst分别是干什么的grub4dos 发布包里文件不少但真正参与引导的就三个。grldr 是主程序。它本质上是一个可以被 BIOS 直接加载的执行体里面内置了文件系统驱动、命令行、脚本解析能力。它通常放在 U 盘根目录或某个固定路径下。grldr.mbr 是一段引导代码镜像专门用来写进磁盘的 MBR 区域。它的职责非常单一找到 grldr 并把控制权交过去。它内部硬编码了去各个分区根目录搜索 grldr 的逻辑所以只要 grldr 在根目录基本都能找到。menu.lst 是菜单配置文件纯文本。它决定了开机后显示什么菜单、每一项对应什么操作、超时多久自动进入默认项。这个文件放在 grldr 同级目录下或者放在 grldr 能找到的路径里。3.2 从BIOS到菜单的四级引导链把整个链路串起来看从上电到出现菜单中间经历了四层第一层BIOS 读磁盘第一个扇区执行 MBR 里的 grldr.mbr 代码。第二层grldr.mbr 扫描各个分区的文件系统寻找 grldr 文件。第三层找到 grldr 后把它加载进内存并跳转执行此时 grub4dos 就等于接管了整台机器。第四层grldr 读取同目录下的 menu.lst渲染出菜单等你选择。理解这个链条的意义在于排查问题。如果开机后光标一闪一闪什么都不出问题在第一层MBR 没写对。如果出现 grub4dos 的提示符但找不到菜单问题在第三、四层grldr 位置不对或 menu.lst 编错了。如果出现菜单但选进去报错问题在具体启动项配置。按这个层次排查效率比瞎试高得多。3.3 写引导代码的两种工具路线写 MBR 引导代码我常用的有两条路线。第一条是 BootICE图形界面对新手友好。打开后选物理磁盘点主引导记录选择 grub4dos 那一项确认写入即可。它还支持备份和恢复 MBR改坏了能回滚这点很实用。第二条是命令行工具 grubinst适合批量操作或脚本化。优点是快缺点是参数不熟容易写错位置。不管哪条路线都要记住写 MBR 和写 PBR 是两件事。BootICE 里主引导记录对应 MBR分区引导记录对应 PBR。有些老主板只认 PBR 引导这时候两边都得写。我一般习惯两个都写成 grub4dos兼容面最广。4. 从零开始一步步把U盘做成可引导盘4.1 第一步分区、格式化、打活动标记这一步其实就是上一章 DiskPart 那几条命令的完整执行。做完之后用磁盘管理或 BootICE 确认三件事分区表是不是 MBR、分区有没有活动标记、文件系统是不是 FAT32。有一点容易忽略簇大小。FAT32 默认簇大小随分区容量变化8GB 盘可能是 4KB32GB 盘可能到 32KB。簇太大对小文件多的情况不友好但引导文件本身不大影响有限。如果你要往里塞大量小文件比如一堆 DOS 工具可以手动指定分配单元大小为 4096 字节减少空间浪费。4.2 第二步写入MBR与PBR引导代码打开 BootICE左上角选择你的 U 盘设备。先点主引导记录在弹出的列表里选 grub4dos然后点安装/配置。有些版本会让你选 grldr 的文件名和搜索路径默认就行。写完它会提示成功。接着点分区引导记录选中第一个分区同样在类型列表里找 grub4dos写入。这里如果找不到 grub4dos 选项说明 BootICE 版本较老换新一点的版本。写完最好点一下备份把 MBR 存一份出来命名清楚比如 u盘mbr备份.bin。以后万一引导坏了直接恢复比重新写快得多。注意写引导代码时如果系统提示设备正在使用或写入失败多半是 U 盘被某个后台程序占用杀毒、同步盘、资源管理器预览。关掉相关进程或重启资源管理器再试。4.3 第三步拷贝文件与编写第一份menu.lst把 grub4dos 包里的 grldr 拷到 U 盘根目录。menu.lst 也拷一份到根目录然后用记事本或 Notepad 打开编辑。第一份配置不用太复杂先保证能出菜单、能进命令行default 0 timeout 10 title 启动 grub4dos 命令行 commandline title 从本机硬盘启动 find --set-root --devicesh /bootmgr chainloader /bootmgr title 重启 reboot title 关机 haltdefault 0表示默认选第一项timeout 10是等待 10 秒。commandline是进 grub4dos 的命令行调试时特别有用。find --set-root --devicesh /bootmgr是去硬盘上找 bootmgr 文件找到就把根目录切过去然后 chainloader 加载它实现从本机硬盘启动。这个技巧在实际维护中很常用万一 U 盘启动失败还能切回硬盘系统。menu.lst 的编码必须是 ASCII 或 UTF-8 无 BOM。中文菜单容易乱码如果一定要用中文需要用 grub4dos 的字体支持配置起来麻烦。我个人的建议是菜单文字用英文或拼音省心。4.4 第四步虚拟机先试再上真机这一步千万别省。新建一个虚拟机系统类型选任意但最关键的是把固件类型设为 BIOS不是 UEFI。然后把物理 U 盘以物理磁盘方式接入虚拟机或者干脆用虚拟机直接引导这个 U 盘。我习惯用 VMware添加硬盘时选使用物理磁盘选 U 盘对应的 PhysicalDrive。开机后如果能看到 grub4dos 菜单说明引导链通了。进命令行敲几个命令试试比如ls看能不能列目录find /grldr看能不能找到文件。虚拟机能起来但真机起不来常见原因是主板 BIOS 里 USB 启动的识别模式。有些主板把 U 盘识别为 USB-HDD有些识别为 USB-ZIP识别方式不同会导致 MBR 解析位置不同。BootICE 里可以切换这两种模式多试几次就能找到匹配的。注意真机测试前先在 BIOS 里关掉 Secure Boot开启 CSM 或 Legacy 兼容模式。有些新主板默认纯 UEFILegacy 选项藏在 CSM 下面不打开的话 U 盘在启动菜单里根本不出现。5. menu.lst实战常用命令与可直接抄的启动项模板5.1 map、memdisk、chainloader三条主线的取舍grub4dos 引导外部镜像主要靠三条命令线理解它们的区别能少走很多弯路。map 是把镜像映射成磁盘设备。map --mem /xx.iso (0xff)把整个 ISO 读进内存再映射成虚拟光驱兼容性最好但吃内存不加--mem是直接映射省内存但要求 ISO 支持这种加载方式很多 PE 不支持。映射完必须map --hook让映射生效再chainloader (0xff)启动。memdisk 是专门处理软盘和硬盘镜像的模块适合 .img 文件。用法是kernel /memdisk然后initrd /xx.img它会模拟出一个软盘或硬盘给系统用。chainloader 是最直接的把一个引导扇区加载进来执行适合引导 PE 的引导文件、Windows 的 bootmgr、或者另一个分区上的系统。三条线不是互斥的同一个菜单里可以混用。选择逻辑是ISO 用 mapIMG 用 memdisk现成引导文件用 chainloader。5.2 四类典型启动项模板下面这几个模板我用了很多年基本覆盖日常需求直接抄改路径就行。引导 PE 的 ISO内存够大时首选title WinPE (map --mem) find --set-root /iso/pe.iso map --mem /iso/pe.iso (0xff) map --hook chainloader (0xff)引导 DOS 工具盘 IMGtitle DOS Tools find --set-root /img/dos.img kernel /memdisk initrd /img/dos.img引导 Linux 发行版 ISOtitle Linux ISO find --set-root /iso/linux.iso map --mem /iso/linux.iso (0xff) map --hook kernel (0xff)/casper/vmlinuz bootcasper iso-scan/filename/iso/linux.iso initrd (0xff)/casper/initrd从硬盘启动系统title Boot from Hard Disk find --set-root --devicesh /bootmgr chainloader /bootmgrLinux 那条要注意不同发行版的 kernel 和 initrd 路径不一样vmlinuz 和 initrd 的实际位置得先解开 ISO 看一眼路径写错了就会报 file not found。5.3 参数计算与容易忽略的细节map --mem 吃内存这件事得算一算。假设你的 PE ISO 是 2GB加载进内存至少要 2GB 可用内存加上系统其他开销实际建议物理内存 4GB 以上。ISO 越小越稳所以能精简就精简。map --hook这一句不能省。它的作用是让映射立即生效不写的话后面的 chainloader 读到的还是原始设备等于白映射。find --set-root是找文件并切换根目录多个镜像分散在不同路径时特别有用。加--devicesh可以限定只搜硬盘加快速度避免在 U 盘上反复扫描。还有个容易忽略的点grub4dos 对文件路径大小写敏感menu.lst 里写的路径必须和实际文件名完全一致。Windows 下不区分大小写容易养成随手写的习惯到了 grub4dos 这里就会报找不到。注意menu.lst 里的路径建议用正斜杠/不要用反斜杠。另外 grldr 本身要放在能被找到的根目录如果放在子目录里得在 MBR 配置里指定搜索路径增加复杂度。6. 常见问题排查与我的踩坑记录6.1 故障速查表现象可能原因处理办法开机直接进硬盘U盘没反应MBR 没写对或活动分区没打重写 MBR检查活动标记光标闪烁无任何输出MBR 引导代码损坏用 BootICE 恢复备份或重写出现 grub4dos 提示符找不到 menu.lst 或 grldr 位置不对确认 grldr 和 menu.lst 在根目录菜单出现但选项报错启动项路径或参数写错逐项核对路径大小写与文件名虚拟机正常真机异常USB-HDD/USB-ZIP 识别模式不符BootICE 切换模式重试map --mem 报内存不足ISO 太大内存不够改用直接 map 或换小镜像写入引导代码失败U盘被占用或写保护关闭占用进程检查写保护开关6.2 几条文档里不会写的经验第一做盘之前先确认目标机器到底吃哪种引导。我见过有人做了半天 Legacy 盘结果机器是纯 UEFI 的白忙一场。判断方法很简单进 BIOS 看有没有 CSM 选项或者看启动菜单里 U 盘有没有 UEFI 前缀。第二U 盘尽量用 USB 2.0 口做引导测试。有些老主板对 USB 3.0 的引导支持不好插 3.0 口不认插 2.0 口就行。等确认引导没问题了再换 3.0 口提速。第三多准备一只备用 U 盘。引导代码写坏、分区表被搞乱这种事太常见了有备用盘能保证你手头永远有可用工具不至于陷入没有启动盘就修不了启动盘的死循环。第四menu.lst 改完存盘时确认编码。用记事本存容易出现 BOM 头grub4dos 读到会出问题。我一般用 Notepad右下角把编码切成 UTF-8 无 BOM 或 ANSI存完再检查一遍。第五真机调试时把网线拔掉或者断开网络。有些 PE 启动后会尝试联网更新卡在网络等待上看起来像是启动失败其实只是卡住了。排除这个干扰能省不少判断时间。我自己的习惯是每做完一只引导盘都记一条小笔记U 盘型号、grub4dos 版本、什么主板验证通过、menu.lst 里哪几项实测可用。时间久了这份笔记比任何教程都值钱因为它是针对你手头设备清单的定制答案。下次再遇到一台认不出的老机器翻笔记比重新摸索快得多。grub4dos 这套东西看着古老但只要引导链的四个层次想清楚配置其实比 UEFI 那套签名、分区、路径规则简单直接做熟之后十分钟就能出一只可用的盘。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →