2024年注:

这篇文章已经比较过时了,现在已经有 Ventoy 等工具可以很快地做一个多启动U盘

当时这个系列有好几篇文章,我只把第一篇找到这来做个存档

图完全挂了找不回来了,将就看吧 XD

近期本人成功制作一个多启动U盘,遂有此文,与大家分享经验。

本人制作的这个多启动优盘有如下两个优势:

  1. 多启动,即可进入多款操作系统或工具
  2. 易拓展,可以随时更换集成的系统或工具

以下是本人的制作思路:

要做到多重引导,也许有许多方法,但我选择了GRUB ,理由是绝大多数PE工具箱或者Linux都用到了GRUB进行引导。那么,我们何尝不可在可引导U盘中使用GRUB去进行多系统的引导?所以,我们只需要将U盘制成可引导U盘,然后将GRUB放入其中,就可以实现引导多系统。

再则,GRUB更易更换集成的系统与工具。用EasyBoot+量产做出来的东西不如GRUB好变更。修改GRUB的菜单只需要修改menu.lst就够了, 不需要额外的软件。

所以,带有GRUB的可引导U盘应当是最好的选择。

本想使用GNU GRUB,但是GNU GRUB引导失败,于是改用DOS+GRUB4DOS,如果你想用ntldr/bootmgr+GRUB4DOS,也行。

(效果图)

需要准备的工具如下:

  1. 优盘一只
  2. GRUB4DOS
  3. DOS.img (2024年注:之前的链接失效了,可以找 FreeDOS 的最新版本)
  4. UltraISO (较新版本即可)
  5. 待集成的操作系统

2024年注: 这个系列的文章后续有介绍基于 BOOTICE 直接做 grldr/GRUB4DOS 启动的方式,有兴趣的读者可以自己试试。这里我就不再重新把那篇文章贴出来了。

操作步骤:

一.制作可启动DOS盘(此举会删除U盘中所有数据,请先备份)

  1. 打开UltraISO(win7/vista需要管理员权限),打开解压出来的DOS.img

  1. 启动(B)->写入硬盘映像…

  1. 便捷启动->写入新的硬盘主引导记录(MBR)->USB-HDD+

  1. 写入

至此,U盘的DOS引导就制作完成了。重新启动,并使用USB-HDD模式,就可以看到命令提示符

二.集成GRUB

  1. 将下载到的grub4dos-0.4.4.zip解压,将其中的grub.exe复制到U盘根目录

  2. 创建autoexec.bat

autoexec.bat的作用是在启动DOS的时候启动GRUB4DOS,当然,你也可以在DOS提示符里输入grub来进入DOS,不过为了方便,还是建立一 个。

首先,请在U盘根目录创建autoexec.bat(注意拓展名是bat)

如果你不需要使用DOS的话,你只需要在autoexec.bat中写一句话

grub.exe

如果你还想用DOS或者加一点个性化元素,你还可以自行按照bat脚本的规则扩充,比如本人的

@echo off
cls
echo.Welcome to Samhjn's USB Disk
echo.========================================================================
echo.Please press any key to enter GRUB or CTRL-C to enter DOS
echo.You can also enter GRUB in dos mode by typing "grub"
pause>nul
grub.exe
  1. 建立menu.lst

menu.lst是grub的配置文件,负责菜单项,这个文件在我们集成系统之时还会更改,如果你想之后创建也可以

同autoexec.bat一样,我们需要在U盘根目录里创建menu.lst,然后编辑它,在里面加入以下内容

color black/cyan yellow/cyan
timeout 30
default 0

title Reboot
reboot

title Shutdown
halt

title <=== Back ====
rootnoverify (hd0,3)
makeactive
chainloader +1

这时,GRUB就整好了,此时U盘下会有7个文件,如图

前四个文件是DOS的文件,后三个是GRUB以及为它创建的文件。

当然,搞定它的方式还有不少,这只是其中之一。本人采用这种方法只是因为传说中UltraISO具有更好的兼容性。

三.集成操作系统

有了GRUB,剩下的自然就好办了。考虑到U盘容量的问题,选择的东西大多都是CD之中的。

  1. 先教一个偷懒的办法

将ISO镜像拷贝至U盘,然后在menu.lst的适当位置(每个title与上一句代码之间)添加如下代码

title 菜单选项名
find --set-root 镜像文件路径/镜像文件名
map --mem 镜像文件路径/镜像文件名 (hd32)
map --hook
chainloader (hd32)
boot

汉字部分请使用相关内容替代。特别注意的是镜像文件路径是相对U盘而言的

(p.s,其实两个镜像文件路径/镜像文件名意义不同)

比如你要添加一个WinPE,将文件pe.iso放在U盘根目录,你就要这样写

title Start WinPE
find --set-root /pe.iso
map --mem /pe.iso (hd32)
map --hook
chainloader (hd32)
boot

如果你把他放在一个叫做pe的文件夹中,你要把/pe.iso换成/pe/pe.iso

这个方法的缺点在于,对于有的系统/工具,将造成无法启动或功能缺失。如果你用老毛桃PE,这样整损失不大,但是用深山红叶就得不 偿失了。

  1. Fedora 15/16的集成方法

这里以Fedora16 LiveCD为例,首先,用UltraISO打开CD镜像,然后将镜像文件当中的LiveOS目录全部复制到U盘中。再将镜像文件里isolinux这个目录中的vmlinuz0和initrd0.img两个文件复制到FAT32分区的LiveOS目录当中(用/boot的也可以,其实/boot里才是原始文件,/isolinux那个是符号链接)。完成后截图如下:

在menu.lst适当位置添加如下内容:

title Start/Install Fedora16
root (hd0,3)
kernel /LiveOS/vmlinuz0 root=live:/dev/sdb4 ro liveimg rghb rootfstype=auto
initrd /LiveOS/initrd0.img
boot

这个不一定在所有机器上成功启动。如果出错,请在出现Shell之后执行ls /dev,检查回显,如果有sdX(X可以是任意英文字母),并且在这个sdX之后有且只有一个sdX4,再无sdXn(n为非负整数)出现,那么请在grub中按e,修改/dev/sdb4为/dev/sdX4

  1. 集成深山红叶WinPE工具箱

深山红叶算是一个比较老的WinPE了。比较有代表性。下面我来介绍它的集成方法

首先,提取CD中的PROGRAMS与WXPE文件夹以及BOOTFONT.BIN及WINNT.XPE到U盘,再把WXPE下的SETUPLDR.BIN和NTDETECT.COM移动到U盘根 目录。

然后,编辑menu.lst,加入如下内容:

title Start WindowsPE(ShenShanHongYe)
find --set-root /Setupldr.bin
chainloader /Setupldr.bin
boot

深山红叶WinPE就集成好了,其它的PE2.0集成方法类似。

集成了Fedora 16与深山红叶之后,我的menu.lst如下

color black/cyan yellow/cyan
timeout 30
default 0

title Start/Install Fedora16
root (hd0,3)
kernel /LiveOS/vmlinuz0 root=live:/dev/sdb4 ro liveimg rghb rootfstype=auto
initrd /LiveOS/initrd0.img
boot

title Start WindowsPE(ShenShanHongYe)
find --set-root /Setupldr.bin
chainloader /Setupldr.bin
boot

title Reboot
reboot

title Shutdown
halt

title <=== Back ====
rootnoverify (hd0,3)
makeactive
chainloader +1

2024年注:

当年应 @SXKDZ 要求还写了一篇集成 Windows 7+ PE 的文章。这里暂时也不打算把那篇文章再找出来。这里只简单描述下方法:

  1. 准备相关 wim 镜像
  2. 制作 BOOTMGR 的 BCD 文件

现在有许多 Windows PE 被植入了返利软件,用这种 Windows PE 装系统会自动植入全家桶。其中一些 PE 会盗用老一代 PE 的名号,使用时要特别注意鉴别

  1. 搜索集成方法的方法

当然,我不可能将所有的集成方法都告诉大家,所以当大家需要扩充本工具的功能的时候,需要在网络上自行搜索相关办法。你可以使用如下关键词:

XX硬盘安装

XX GRUB

(XX请使用相关名称代替)

一般来讲,Linux系统都需要提取内核vmlinuz与initframes文件initrd.img,剩下的就是vmlinuz的参数问题。

其实只要掌握了GRUB,就一切都不怕。

最后,希望各位大牛能补充,批评。

参考资料

  1. 使用U+技术制作高兼容性启动U盘实验与分析
  2. Grub4dos for WinPE 启动菜单
  3. Win7下硬盘安装Fedora16 LiveCD