无从到有,一步一步教你基于grub4dos制作Legacy(非UEFI)引导启动U盘-教学向20240226

目录

前言

准备工作

(a. 硬件

(b. 软件

制作过程

1、制作grub4dos引导分区

十字路口处

2、自定义grub4dos图形界面及引导菜单(添加相应文件即可)

参考文献


前言

grub4dos是一个启动工具,它是基于GNU GRUB Lagecy项目的二次开发。其目前主要由国内的一些大佬维护和更新,算是GRUB项目在中国的分叉。在广大网友的群策群力下,GRUB4DOS的功能不断完善,目前可以说是非常强大了。grub4dos的显著特点是对主板的Legacy引导(或者说BIOS引导)兼容性好,我实际体验下来,确实是非常好用的一个启动工具。

这两天鼓捣显存测试软件,就顺便研究了一下,下面我就站在前人的肩膀上,把我的一些心得和经验分享给大家,手把手带大家制作一个Legacy(非UEFI)引导的启动U盘。

准备工作

(a. 硬件

至少一台可以开机显示的电脑(两台最好,一个用来配置启动U盘,一个用来验证效果)

一个U盘(大于4G的就行,容量按照所需要的功能酌情增减)

(b. 软件

链接先放在这里,可以看说明,用到的时候再来下载。

附件1、Diskgenius软件

DiskGenius – 正式版下载|免费下载

附件2、BOOTICE软件

BOOTICE下载_BOOTICE中文版免费下载1.3.4.0 - 系统之家 (xitongzhijia.net)

附件3、grub4dos0.4.6a压缩包

grub4dos (chenall.net)

懒人版链接:https://pan.baidu.com/s/1gWgQChbBDf6VGBEhHniZwg?pwd=LHB1 
提取码:LHB1 

附件4、启动U盘根目录全部文件---整合而成的压缩包

链接:https://pan.baidu.com/s/1VdBPtoA6xVjEtWsluU3QVA?pwd=LHB1 
提取码:LHB1 

附件5、系统镜像网站

MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn)

制作过程

1、制作grub4dos引导分区

(1)第一步,先清空一下U盘。打开【附件1、Diskgenius软件】,选中自己的U盘,快速分区,注意千万别选错了

快速分区-MBR-1个分区-(NTFS/exFAT/FAT32三种格式均可,推荐NTFS)-主分区-4K对齐-确定-此步骤完成

(2)分区成功后会出现新盘符。此时打开【附件2、BOOTICE软件】,进行主引导记录(MBR)的写入。

选择目标磁盘为刚才新分区的U盘,同样,注意千万别选错了

目标磁盘-主引导记录

选中序号3处:GRUB4D0S 0.4.5c/0.4.6a (grldr.mbr)-安装配置

取消勾选序号5处-选中序号6处:0.4.6a-写入磁盘

提示写入成功,程序告诉我们:请将 GRLDR(和menu.lst)两个文件拷贝到某分区根目录。接下来我们就按照程序指示的去做。

去网站下载【附件3、grub4dos0.4.6a压缩包】

选择右侧菜单栏0.4.6a,选择最新版本2023年10月的(2024年的链接打不开,可以在github上下载或者按我的链接)下载即可,旧版本的试过几个,兼容性不好,所以还是下载最新版本的比较好。

下载后解压,文件目录如下:

将其中的 grldr 和sample文件夹中 menu.lst 两个文件拷贝到U盘(我这里是H盘)的根目录下。

其中,grldr文件grub4dos的核心启动文件;menu.lst文件 是一个用来编辑grub4dos图形界面的外部菜单的配置文件,本质上是一个文本文件,用记事本打开即可进行修改。

【制作grub4dos引导分区】这一步骤完成。

十字路口处

懒人看这里:

到这里,如果你着急看看效果、想一步到位的话,可以下载附件4、启动U盘根目录全部文件---整合而成的压缩包】,然后将里面的文件全部解压并复制到U盘的根目录中,直接跳转到步骤(8),插到电脑上验证使用即可。而如果你想一步一步实操,就顺着步骤(3)继续往下耐心看。

======================================================================

求知者看这里:

(3)此时,将U盘插入关机状态下的电脑,然后开机进入BIOS(需要提前打开 Legacy启动/CSM兼容),选择U盘启动项。

我这用的华硕B75M-A主板,Del进入BIOS,F8选择启动项。

回车进入,可以看到已经能够显示grub4dos的图形界面,有很多的菜单选项可供选择,点击这些菜单项本质上是运行一串指令,可以通过选中当前菜单并按e进行查看和编辑。因为这里的示例菜单只是一系列的指令,而这些指令对应的参数或者文件我们并没有添加,所以目前有很多菜单是无法正常使用的。

下面是如何编辑一个菜单项的讲解,不感兴趣可跳过

例如:选中菜单13 halt(关机)

然后按下e,便可以看到它对应的指令是halt

因为这个指令时grub4dos原生支持的,并且不需要接收外部参数或加载外部文件,所以菜单13是可以正常运行的。

在当前界面再次按下e,可对其进行编辑,例如我们将其改为reboot,编辑完成后按下回车,完成编辑,同时回到上一个界面。

此时按下b可以启动屏幕上显示的指令(也就是你刚刚修改后的内容)。可以发现,此时运行的效果就是重启电脑,而非关机了。

注意这样修改不会改变菜单文件menu.lst里的实际内容,修改后的指令仅限当次生效

这个技巧在调试的时候还是很有用的,假如你的菜单选项运行错误,你可以检查menu.lst里面的指令是否写错,如果发现错误,可以即时修改并验证,可以避免反复插拔U盘和修改menu.lst文件,极大的提高调试效率。

现在grub4dos引导分区的框架我们已经搭建好了,接下来需要对其进行自定义的配置。

2、自定义grub4dos图形界面及引导菜单(添加相应文件即可)

(4)现在我们回过头来看menu.lst这个文件具体写了些什么(部分有删减)。图方便,我直接搬运【参考文献1】中的内容,请大家自行阅读学习(狗头)。

示例menu.lst

发行版grub4dos压缩包中grldr文件内置菜单(预置菜单)详解

#==================== 初始化命令组(菜单头)部分=========================

pxe detect
#检测当前PXE环境
configfile
#现在预置菜单具有最高控制权。它将在启动设备上的 menu.lst 之前获得控制。
#在预置菜单的初始化命令组中使用不带参数的 configfile 命令,将把控制权转到启动设备上的menu.lst文件。
#只有第一次启动时执行不带参数的 configfile 命令才会执行默认外置菜单,即根目录的menu.lst文件。
#以后任何情况下再次执行这条不带参数的 configfile 命令,都将失效,什么也不做,直接执行 configfile 之后的命令。
default 0
#将默认菜单项设置为菜单0(即第一个菜单项)
timeout 1
#设置自动执行默认菜单项前等待时间为1秒

#====================菜单项(菜单正文)=================================

title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
#设置本项菜单的标题

errorcheck off
#关闭错误检查模式
configfile /boot/grub/menu.lst
#尝试加载/boot/grub/目录下的menu.lst文件
configfile /grub/menu.lst
#尝试加载/grub/目录下的menu.lst文件
if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
#如果当前ROOT是(ud),设置当前磁盘为(ud)所在磁盘,比如(fd0)或(hd0)
if "%@root:~1,1%"=="f" && find --set-root --devices=f /menu.lst && configfile /menu.lst
#如果当前ROOT是fd设备,则在所有的fd设备根目录下查找menu.lst文件,找到的话就将该设备设为根,并加载该菜单文件
find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst
#以上尝试均失败时在所有设备的根目录下查找menu.lst文件,忽略软驱和光驱设备,找到的话就将该设备设为根,并加载该菜单文件
find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst
#上一个查找失败时在所有设备的/boot/grub/目录下查找menu.lst文件,忽略软驱和光驱设备,找到的话就将该设备设为根,并加载该菜单文件 
find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst
#上一个查找失败时在所有设备的/grub/目录下查找menu.lst文件,忽略软驱和光驱设备,找到的话就将该设备设为根,并加载该菜单文件 
errorcheck on
#打开错误检查模式 
commandline
#进入命令行模式

title commandline
#设置本项菜单的标题 

commandline
#进入命令行模式

title reboot
#设置本项菜单的标题 

reboot
#重启启动计算机

title halt
#设置本项菜单的标题 

halt
#关闭计算机

菜单文件的代码主要分为两部分,

第一部分是【初始化命令】,是用来初始化图形界面的,类似于C语言变量、数组等的初始化;

第二部分是【菜单命令】,也是我们重点关心的内容。

大概编程思路就是先在【初始化命令】部分将颜色、字体、路径等设置好。

【菜单命令】部分去自定义需要的功能和需要引导的系统,这一部分的格式很容易理解,

title指定图形界面显示的该菜单选项的名称,用于人机交互;

后面跟上该菜单选项需要执行的指令。

用   #   开头可以注释该行。

具体的指令和语法难以在本文讲清楚,大家可以自行翻阅【参考文献1】的第9章进行学习。我这里直接给大家贴一段可以运行win10 PE系统和Ubuntu Live的菜单代码供大家使用。

可用menu.lst

#====================初始化命令组(菜单头)=================================
color blue/green yellow/red white/magenta white/magenta
timeout 600
find --set-root /menu.lst
 
font /grub/fonts.gz
setmenu  --lang=zh
## menu border color
color border=0xEEFFEE
## set vbe mode
graphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32
## loading splashimage
splashimage /boot/grub/splashimage.xpm || splashimage /boot/grub/splashimage.bmp
default /default
 
#启用菜单自动编号,同时编号和菜单键的分隔符使用空格,更多用法可参见其他相关中 在固定位置访问一些内部变量 部分
write 0x8274 0x2001
 
 
#====================菜单项(菜单正文)=================================
 
 
# 设置菜单项标题, \n 后为在菜单底部显示的帮助信息 
# 后面必须跟一行命令,不然黑屏
title made by LHB 2024/02/25  \n test
echo test!!!
echo 按任意键返回主菜单
# 屏幕显示内容暂停10s,便于调试
pause --wait=10
 
# 本项菜单没有启动敏感命令,因此不能通过上方向键或下方向键选中执行,
# 这并非毫无用处,很多高级菜单都使用了这项特性

title 显示设备列表
echo 按任意键返回主菜单
ls dev
pause --wait=10
 
title 新机子运行Win10   PE  64位(不加载USB2.0驱动)
map /0-Win/w1064pe.iso (hd32)
map --hook
chainloader (hd32)
boot
 
title 启动ubuntu-18.04.4 Live
kernel /1-Ubuntu/vmlinuz boot=casper iso-scan/filename=/1-Ubuntu/ubuntu-18.04.4-desktop-amd64.iso locale=zh_CN.UTF-8
initrd /1-Ubuntu/initrd
 
title commandline
#进入命令行模式
commandline
 
title 重启
reboot
 
title 关机
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

(5)将U盘根目录menu.lst文件的全部内容替换为上述内容;

(6)添加汉字字体包到U盘根目录,即【附件4、启动U盘根目录全部文件---整合而成的压缩包】中的fonts.gz;

(7)添加你需要的镜像文件(我这里用的是win10 PE和Ubuntu18.04镜像)到U盘根目录,即【附件4、启动U盘根目录全部文件---整合而成的压缩包】中的Win和Ubuntu两个文件夹。

到这里,这个可以运行win10 PE系统和Ubuntu Live的启动U盘就已经制作好了。文件目录如下:

(8)把做好的U盘再次插到电脑上进行验证,选择U盘启动,可以看到菜单选项已经变成了menu.lst文件里我们自定义的内容,如下图。

(9)选择1,可以进入PE系统,成功后如下图。

选择2,可以进入Ubuntu系统,成功后如下图。

完结。

本制作方法优点:

使用极其方便,可自定义。

借用【参考文献3】作者的话:

反复地“制作与还原”很方便、很容易,首先从一个空白U盘做成动U盘很容易,然而突然有一天我又想把这款启动U盘还原成空白U盘使用该怎么办呢?很简单,打开启动U盘,按下Ctrl+A键全部选定启动U盘里的文件,即可还原你一个空白的U盘使用——不用格式化U盘!假如那一天我又心血来潮,又想把它再次重新制作成启动U盘,那又该怎么办呢?同样很简单,打开之前已经搭建好grub4dos引导分区框架的U盘,把里面的文件、资料等腾空,该转移的转移,该删除的删除,使整个U盘空白化,然后再将附件4、启动U盘根目录全部文件---整合而成的压缩包】里面的文件解压到你的已经腾空了的空白U盘里面就行了,无论制作与还原,都不格式化U盘,都不影响U盘的读写速度,确实很简单、方便、快捷。

参考文献

[1].  grub4dos-help-2015-02-09.CHM

链接:https://pan.baidu.com/s/1sp-q0Y916xJNUV8WvF3ofg?pwd=LHB1 
提取码:LHB1 

[2].  grub4dos初级教程_CHM图文版_090411.CHM

链接同上

[3].重大更新—我的G4D0.4.6a的启动U盘 支持BIOS/UEFI双启/移动硬盘 7月10日更新 第30版 - GRUB4DOS - 无忧启动论坛 - Powered by Discuz! (wuyou.net)

[4]使用grub4dos制作多系统启动U盘(win7、ubuntu12.04)_grub4dos引导多系统开机启动教程-CSDN博客

目录 1 grub4dos初级程-入门篇 1.1 grub简介 1.2 如何获得grub4dos最新版 1.3 如何安装grub4dos 1.3.1 通过Windows NT的启动菜单进入grub4dos 1.3.2 通过DOS启动grub 1.3.3 通过mbr启动grub 1.3.4 通过Windows VISTA/Window 7的启动菜单进入grub4dos 1.4 如何使用grub4dos 1.5 结言 2 grub4dos初级程-应用篇 2.1 硬上的应用 2.1.1 加载软镜像 2.1.2 启动WinPE 2.1.3 启动系统 2.1.4 引导镜像(ISO仿真) 2.2 光上的应用 2.2.1 grub引导的可启动 2.2.2 BCDW引导GRUB的可启动 2.3 软上的应用 2.3.1 通过DOS启动grub的软应用 2.3.2 引导扇区安装了GRLDR引导记录的软应用 2.4上的应用 2.5 结言 3 grub4dos初级程-进阶篇 3.1 设置密码 3.2 菜单内置 3.3a 使用个性化grub4dos文件名 (grubinst) 3.3b 用批处理自动给grldr改名 (适用于最新版grldr)NEW! 3.4 安装Windows XPE到逻辑分区 3.5 利用savedefault命令传递参数的方法与应用 3.6 利用dd命令传递参数的方法与应用 NEW! 4 附录 Grub legacy 4.01 Grub 命令索引 4.02 Grub 简体中文化版使用方法 4.03 GRUB安装配置使用汇总 4.04 Grub命令使用详解 4.05 GRUB三步通 4.06 Grub相关安装配置及使用实例汇总讲析 Grub2资料 4.07 GRUB2使用简介 by bean NEW! 4.08 GRUB2高级程 by bean NEW! Grub4dos资料 4.09 gfxmenu定制高级程(新增可定制菜单) by bean NEW! 4.10 如何使用grubinst_gui by bean Grub4dos官方文档 4.11 Grub4dos_tutorial (英文) 4.12 Grub4dos简介 4.13 Grub4dos安装和启动 4.14 Grub4dos新手指南 4.15 Grub4dos高级功能 4.16 Grub4dos命令索引 4.17 Grubinst使用介绍 4.18 Grub4dos readme (英文) 4.19 Grub4dos readme (中文) 首页正文 1 grub4dos初级程-入门篇 1.1 grub简介 1.2 如何获得grub4dos最新版 1.3 如何安装grub4dos 1.3.1 通过Windows NT的启动菜单进入grub4dos 1.3.2 通过DOS启动grub 1.3.3 通过mbr启动grub 1.3.4 通过Windows VISTA的启动菜单进入grub4dos 1.4 如何使用grub4dos 1.5 结言
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值