|
|
本帖最后由 不点 于 2025-12-2 16:56 编辑
本软件基于葛明阳大师【一盘走天下】修改而成。葛明阳大师原版地址是
http://wuyou.net/forum.php?mod=viewthread&tid=440693
如果上述链接无效,请在论坛搜 “一盘走天下”,很容易找到。
【自由拼装修改版】不发布成品,只发布制作方法。有需要成品的朋友,请点击上述原版链接。
按照以下步骤制作完成后,可以同时支持 BIOS 和 UEFI 启动。
步骤1、U 盘准备工作(分区、格式化、写引导代码、激活分区)
准备一个 U 盘(大小随意),把它格式化为 FAT32 分区,在其 MBR 上安装 grldr.mbr,或者 wee,分区根目录下放置 grldr 文件。您也可以先启动 bootmgr,再由 bootmgr 来加载 grldr,无论偏爱哪种方式都行。
有朋友指出,上述这段写得太简略,不容易操作。为此,特别作出以下补充说明:
先说说为什么需要 FAT32。这是为了更好地兼容 BIOS 和 UEFI 启动。有些电脑可能直接支持 NTFS 作为启动分区。但是,不一定所有的电脑都支持 NTFS 作为启动分区。所以,没办法,我们就采用 FAT32 分区,来保证最大的兼容性。其实,通常您还需要有个 NTFS 分区,来放置您的 ISO 文件或 WIM 文件,因为这些文件都有可能超过 4G 的大小。
好吧,就假定您需要这两个分区了。FAT32 是主分区,用来 “启动” 的。NTFS 是用来存放 “超大” 文件的,它可以是主分区,也可以是逻辑分区。我们就采用 MBR 分区格式吧。我对 GPT 格式不熟悉,不敢乱说。GPT 也许能行,也许会出毛病,对此我不能确定。
“进行分区” 这一步,很关键。大家知道,分区表后面留了一段空间是闲置的(属于 “隐藏扇区” 这个概念)。有些分区工具会把这段空间弄得很大,比如,1M 那么大。而有些分区工具把它留得很小,只有 32 个扇区(包括 MBR 这个扇区在内;也就是说,MBR 扇区之后的隐藏扇区就只有 31 个了)。如果将来想要在这个 U 盘安装 wee,那是不行的,因为 wee 需要占据 62 个扇区(含 MBR 在内)。如果您不打算安装 wee,而只安装 grldr.mbr 或者微软的引导扇区,那就没啥可担忧的了,随便使用哪个分区工具都没事。如果您将来要安装 wee 的话,您现在就需要考虑 “隐藏扇区数” 的问题。diskgen 这个分区工具能够给您很大的自由,让您可以指定第一分区从哪里开始。如果您很懒,不想动脑筋,在进行分区时,您可以指定分区按照 1M 来对齐,这样,您的隐藏扇区数就很庞大了,绝对够用,不存在任何问题。安装 wee 算是高级话题,我们以下不涉及 wee,而只讨论 grldr.mbr 以及微软的引导扇区。
下面给出 “U 盘准备工作” 的两个操作步骤:
(第1步)正如以上所说,用您的分区工具,把这个 U 盘重新分区、格式化(里面的数据当然就要毁掉了)。如果您的 U 盘碰巧已经是 FAT32 格式了,那就不需要重新分区了,此时您的数据完好无损,不会丢失。当然,如果您想把原先的单一 FAT32 分区分裂为两个分区(FAT32 + NTFS),您可能还是需要有“重新分区和格式化”的动作。如果您的 U 盘容量很大,建议第一分区 FAT32 的大小设定为 31G 或更小一点。剩余的空间作为 NTFS 分区。其实分区大小没有硬性规定,自己权衡即可。这一步有危险!要特别谨慎!不要阴差阳错毁掉硬盘!!
(第2步——grldr.mbr)用 BootICE 把 grldr.mbr 安装到 U 盘的 MBR 上。位于 MBR 上的 grldr 代码,总共占用的扇区数不多,通常不超过 20 个。因此,这一步通常总可以成功。这一步很安全,不会损坏您的分区数据。也就是说,您现有的分区结构,不会受到任何破坏。BootICE 写引导扇区数据,只会写入隐藏区,不会破坏任何已经存在的分区数据。所谓隐藏扇区,其实就是专门为引导扇区而保留的空间。任何一款写引导扇区的软件,都不应该破坏分区数据。当然了,一个不成熟的工具,倒是真有可能毁掉分区数据。BootICE 是很成熟的工具,它不会犯这类严重错误。如果您的隐藏扇区数足够多,这一步您也可以安装 wee。由于安装 wee 属于高级话题,细节还有不少,因此这里不涉及。位于 MBR 上的 grldr 代码(或 wee 代码)能够查找和加载各分区根目录下的 grldr,不管各分区是否激活。
补充说明:BootICE 已经内置了 grldr.mbr 和 wee,因此您无须另外去寻找 grldr.mbr 和 wee;您只需要在 BootICE 的界面上操作即可。需要留意的是,别把盘符搞错了。您应该操作的是某个 U 盘,而不该是您的硬盘,也不该是另外一个 U 盘(比如,碰巧它也插在电脑上)。当然,即使操作错了,BootICE 也不会对分区里面的内容造成实质性的破坏,只不过给您带来点麻烦而已。但是,前面(第1步)“分区和格式化”(diskgen)的动作,那可真是危险了!千万不能阴差阳错毁掉硬盘!!或毁掉另外一个 U 盘!!
其实您不必安装 grldr.mbr (或 wee),您有另一个选择,就是安装微软的引导代码到 MBR:
(第2步——微软 NT 引导代码)用 BootICE 把微软的 NT 代码安装到 U 盘 MBR 上,也安装到 FAT32 分区上。安装微软引导代码到 MBR 后,要记得激活 FAT32 分区,否则,MBR 上的微软引导代码不会加载 FAT32 上的分区引导代码(PBR)。现在您应该明白您走到哪一步了:MBR 接管控制后,控制权成功递交给 PBR 了。而 PBR 上的引导代码,是准备将控制权递交给 NTLDR 或 BOOTMGR 的。在接下来的步骤中,您会在 FAT32 分区的根目录放置 grldr 文件。现在您要明白,微软的引导代码不可能加载 grldr,因此,您接下来不要忘了把 grldr 复制为 ntldr 或 复制为 bootmgr。保险起见,您可以既复制为 ntldr,也复制为 bootmgr。如此一来,微软的引导代码就不会落空了,因为 ntldr、bootmgr 已经有了(虽然看起来有点 “欺骗” 的意味)。
以上两个小步骤做完了,那么 “U 盘准备工作” 也就完成了。这其实是最难的一步了——对 “生手” 来说,主要是理解起来有难度。其余的步骤“步骤2、拷入文件”全是拷贝文件,最多再加上一个整理 iso 碎片的工作,都不难理解。
【鸣谢】感谢 baosheng00 指出错漏。不要忘了,FAT32 分区需要激活,否则 U 盘可能无法成功启动。如果您把 grldr.mbr 或 wee 安装到了 U 盘的 MBR 上,您就不需要激活这个 FAT32 分区了。如果您在 U 盘 MBR 上安装的是 Windows NT 引导代码,那要记住必须激活 FAT32 分区才行,否则 FAT32 分区中的 NTLDR 或 BOOTMGR 不能取得控制权。
步骤2、拷入文件
一、用于 BIOS 启动的 grldr 文件,需放在 U 盘(FAT32 分区,下同)根目录(即“/”之下)。文件来自 grub4dos for legacy BIOS 的发布包。需要注意一点,如果在 “步骤1、U 盘准备工作” 中您采用的是微软的引导代码,此刻您需要把 grldr 复制为 ntldr 和 bootmgr,目的是让微软的引导代码实际上加载的是 grldr。
二、用于 BIOS 启动的 menu.lst 文件,需放在 U 盘根目录(即“/”之下)。内容如下:
- # This is a sample menu.lst file. You should make some changes to it.
- # The old install method of booting via the stage-files has been removed.
- # Please install GRLDR boot strap code to MBR with the bootlace.com
- # utility under DOS/Win9x or Linux.
- #
- # It must be UTF-8 encoding for multi-lingual support. Font lines can be
- # appended to the file. The font lines should be in the unifont.hex format.
- color blue/green yellow/red white/magenta white/magenta
- timeout 10
- color border=0xEEFFEE
- graphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32
- font /unifont-16.0.01.hex.gz
- #把【退出 grub4dos】设为默认启动项,平常不经意插入 U 盘时,让它正常进入操作系统而不是进入 PE
- default 7
- ## Menu AutoNumber
- write 0x8274 0x2001
- title 一盘走天下 EFI.iso, 用于 Win11 电脑
- find --set-root --ignore-floppies --ignore-cd /gmy/EFI.iso
- map /gmy/EFI.iso (255)
- map --hook
- chainloader (255)
- title 一盘走天下 10PE.iso, 用于 Win7、8、10 电脑
- find --set-root --ignore-floppies --ignore-cd /gmy/10PE.iso
- map /gmy/10PE.iso (255)
- map --hook
- chainloader (255)
- title 一盘走天下 03PE.iso, 用于 XP 电脑
- find --set-root --ignore-floppies --ignore-cd /gmy/03PE.iso
- map /gmy/03PE.iso (255)
- map --hook
- chainloader (255)
- title 一盘走天下 ghost.img, 老电脑不支持 PE, 只好启动 DOS
- find --set-root --ignore-floppies --ignore-cd /gmy/ghost.img
- map /gmy/ghost.img (fd0)
- map --hook
- chainloader (fd0)+1
- rootnoverify (fd0)
- title 尝试加载电脑上的 BOOTMGR 来启动 Win7/8/10+
- find --set-root --ignore-floppies --ignore-cd /bootmgr
- chainloader /bootmgr
- title 尝试加载电脑上的 NTLDR 来启动 WinNT/2K/XP
- find --set-root --ignore-floppies --ignore-cd /ntldr
- map () (hd0)
- map (hd0) ()
- map --rehook
- find --set-root --ignore-floppies --ignore-cd /ntldr
- chainloader /ntldr
- title commandline (进入 grub4dos 命令行)
- commandline
- title Exit grub4dos (退出 grub4dos, 控制交给主板, 继续启动)\n这将启动本机原有的操作系统,就像未插入 USB 启动盘一样。
- boot -1
- title reboot (重启)
- reboot
- title halt (关机)
- halt
- # In the end, font lines for unicode chars in unifont.hex format.
- # It should include all unicode chars used in the above menu code.
- # Surely normal ASCII chars are not necessary to be included here.
- 5173:10100810082000003FF8010001000100FFFE010002800280044008203018C006
- 542F:010000801FFC1004100410041FFC10001000100017FC24042404440487FC0404
- 673A:100011F011101110FD10111031103910551055109110111211121212120E1400
- 91CD:001000F83F000100FFFE01001FF011101FF011101FF001003FF80100FFFE0000
复制代码
注意,您需要用 UTF-8 格式来保存菜单文件,否则中文是乱码。
三、用于 UEFI 启动的 BOOTX64.EFI,BOOTIA32.EFI,都放在 U 盘 /EFI/boot/ 文件夹下。文件来自 grub4dos for UEFI 的发布包。
四、用于 UEFI 启动的 menu.lst 文件,需放在 U 盘 /EFI/grub/ 文件夹下。内容如下:
- # 这是一个样品 menu.lst 文件。你应该对它做些改动。
- # 它必须是 UTF-8 编码,以支持多种语言。
- # 字体应该是 unifont.hex 格式。
- #设置倒计时(秒)
- timeout 10
- #把【退出 grub4dos】设为默认启动项,平常不经意插入 U 盘时,让它正常进入操作系统而不是进入 PE
- default 4
- #设置字符颜色(高32位是背景色,低32位是前景色。在命令行执行:echo -rrggbb,可查看对应的颜色。)
- color normal=0xff9933 highlight=0xffff00 helptext=0xff00ff heading=0x66ff00
- #中文支持必须设置图形模式(可使用 graphicsmode 探测系统支持的图形模式)
- # graphicsmode -1 800(水平像素)
- graphicsmode -1 640:800 480:600 || graphicsmode -1
- #加载背景图
- #splashimage /efi/grub/splashimage.jpg || splashimage /boot/grub/splashimage.bmp
- #加载unifont字体(如果不是 16*16 字体,需增加参数,如 --font-high=24)
- #font /efi/grub/unifont.hex.gz
- font /unifont-16.0.01.hex.gz
- #设置菜单框
- #setmenu --box x=4 w=60 y=6 h=9 l=2
- #设置中文菜单按键帮助
- #setmenu --lang=zh
- #设置自动菜单编号
- #setmenu --auto-num-on
- #设置字符串信息
- #setmenu --string=x=y=颜色="字符串"
- #设置日期时间
- #setmenu --string=x=y=颜色="date&time=yyyy-MM-dd HH:mm:ss"
- #设置倒计时
- #setmenu --timeout=x=y=颜色
- #更多菜单编辑功能、动画、图像菜单等等,可参考http://bbs.wuyou.net/forum.php?mod=viewthread&tid=369720&extra=page%3D3
- title 一盘走天下 EFI.iso, 用于 Win11 电脑
- find --set-root /gmy/EFI.iso
- map /gmy/EFI.iso (255)
- map --hook
- chainloader (255)
- title 一盘走天下 10PE.iso, 用于 Win7/8/10 电脑
- find --set-root /gmy/10PE.iso
- map /gmy/10PE.iso (255)
- map --hook
- chainloader (255)
- title 尝试启动电脑上现存的 Windows 系统
- find --set-root /efi/microsoft/boot/bootmgfw.efi
- chainloader /efi/microsoft/boot/bootmgfw.efi
- title commandline (进入 grub4dos 命令行)
- commandline
- title Exit grub4dos (退出 grub4dos, 控制交给主板, 继续启动)\n这将启动本机原有的操作系统,就像未插入 USB 启动盘一样。
- exit_g4d
- title reboot (重启)
- reboot
- title halt (关机)
- halt
复制代码
注意,您需要用 UTF-8 格式来保存菜单文件,否则中文是乱码。
五、多国语言字库文件 unifont-16.0.0.1.hex.gz,需放在 U 盘根目录(即“/”之下)。文件来自 https://www.unifoundry.com/unifont/index.html 。
六、“一盘走天下”中的 iso 和 img 文件,相关下载: http://bbs.wuyou.net/forum.php?mod=viewthread&tid=440693
“一盘走天下.zip” 解压后,在其 “PE” 子文件夹下,就有 EFI.iso 文件。另外三个文件是 03PE.iso, 10PE.iso 和 ghost.img,它们都在 /PE/UD.fba 这个压缩包里面,用 fbinsttool 打开 UD.fba,把这三个文件导出即可。这四个文件 EFI.iso、 03PE.iso、 10PE.iso、 ghost.img 都放在 U 盘 /gmy/ 文件夹下。这四个文件需要整理碎块,保证连续存放;这是因为它们被 map 命令加载时,不带 --mem 参数(不占用内存)。
【提示】 这最后建立的 /gmy/ 文件夹下的 iso、img 文件比较大,您也可以先不建立这个文件夹,待到您确认您的菜单能够正常显示之后,再建立这个 /gmy/ 文件夹也行。如果没有 /gmy/ 文件夹,菜单仍然是可以正常显示出来的,只不过当您选择那些菜单项的时候,由于 map 命令找不到 /gmy/ 下的 iso、img 文件,这会报错。当然,如果这些 iso、img 是存在的,但却有碎块,那也会报错。
至此,启动 U 盘的制作全部完成。
|
评分
-
查看全部评分
|