|
|
本帖最后由 不点 于 2025-12-2 11:50 编辑
本软件基于葛明阳大师【一盘走天下】修改而成。葛明阳大师原版地址是
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 格式了,那就不需要重新分区了,此时您的数据完好无损,不会丢失。如果您的 U 盘容量很大,建议第一分区 FAT32 的大小为 31G 或更小一点。剩余的空间作为 NTFS 分区。其实分区大小没有硬性规定,自己权衡即可。
(第2步——grldr.mbr)用 BootICE 把 grldr.mbr 安装到 U 盘的 MBR 上。位于 MBR 上的 grldr 代码,总共占用的扇区数不多,通常不超过 20 个。因此,这一步通常总可以成功。这一步很安全,不会损坏您的分区数据。也就是说,您现有的分区结构,不会受到任何破坏。BootICE 写引导扇区数据,只会写入隐藏区,不会破坏任何已经存在的分区数据。所谓隐藏扇区,其实就是专门为引导扇区而保留的空间。任何一款写引导扇区的软件,都不应该破坏分区数据。当然了,一个不成熟的工具,倒是真有可能毁掉分区数据。BootICE 是很成熟的工具,它不会犯这类严重错误。如果您的隐藏扇区数足够多,这一步您也可以安装 wee。由于安装 wee 属于高级话题,细节还有不少,因此这里不涉及。位于 MBR 上的 grldr 代码(或 wee 代码)能够查找和加载各分区根目录下的 grldr,不管各分区是否激活。
其实您不必安装 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 盘准备工作” 也就完成了。这其实是最难的一步了——对 “生手” 来说,主要是理解起来有难度。剩余的步骤全是拷贝文件,最多再加上一个整理 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 盘的制作全部完成。
|
评分
-
查看全部评分
|