Windows 下使用 grub2 制作美观的维护U盘

本来是想用 grub4dos 的,但是那个的界面比较难看,于是就找到了 grub,就有了这篇文章
这篇文章主要针对 BIOS,UEFI 可能不适用


预览

这是最终效果:
主菜单
实用工具子菜单:
工具提取自老毛桃PE,当然也可以自己从其他地方找
子菜单
文件管理器:
可以从Github上下载
文件管理器
要用到的所有软件/文件:https://pan.baidu.com/s/1FSRUtPi7Md7jaAIUgJypQQ


创建虚拟磁盘

为了方便测试,先使用虚拟磁盘来安装
创建一个虚拟机,并用Daemon Tools Lite(注意安装的时候取消捆绑软件)加载虚拟磁盘
Daemon Tools Lite

右键计算机,选择管理,进入磁盘管理,此时应该会看到有一块新磁盘,记下那是几号磁盘
(注:如果你使用VMware来加载虚拟磁盘的话,这里是不会显示出磁盘的)
磁盘管理

安装 Grub2

从上面的网盘里下载grub-2.0.2-for-windows.zip,解压
解压后的文件

在解压的文件夹里打开 cmd,运行命令:
如果你不知道是 BIOS 还是 UEFI,那 3 个命令都运行一遍

//BIOS请运行:
grub-install --boot-directory=X: --recheck --target=i386-pc \\.\PHYSICALDRIVE2

//UEFI 32请运行:
grub-install --boot-directory=X: --recheck --target=i386-efi \\.\PHYSICALDRIVE2

//UEFI 64请运行:
grub-install --boot-directory=X: --recheck --target=x86_64-efi \\.\PHYSICALDRIVE2

注意X为你的盘符(下同),将\\.\PHYSICALDRIVE2中的2替换为之前记下来的数字

cmd-安装成功
取消挂载磁盘,运行虚拟机,成功出现了界面,不过是命令行模式
grub2命令行

最基本的菜单

下面来新建配置文件
X:/grub/中,新建文件grub.cfg,并加入以下内容:

#这是注释,脚本语法同 Bash
#关机
menuentry "shutdown" {
	halt;
}

#重启
menuentry "reboot"  {
	reboot;
}

保存,启动虚拟机,现在我们有了两个最基本的菜单项
grub2菜单

修改为中文界面

grub-2.02-for-windows\locale\zh_CN\grub.mo文件复制到X:\grub\locale中,并重命名为zh.mo
修改grub.cfg

#加载字体需要的模块
insmod font;  #insmod 加载一个模块
insmod gfxterm;
insmod vbe;

#-----加载中文界面(BIOS)---
#加载字体
loadfont unicode;
set gfxmode=auto;
set gfxpayload=keep;
set gfxterm_font=unicode;
terminal_output gfxterm;
	
#设置语言
set locale_dir=$prefix/locale;
set lang=zh_CN;

#---------菜单项-----------

#重启
menuentry "重启" { reboot; }

#关机
menuentry "关机" { halt; }

卸载磁盘,启动虚拟机,现在应该看得到中文了:
中文菜单界面

美化菜单

你可以在Gnome-look上搜索主题,或者在其他地方也行
搜索的时候要注意必须是 grub 主题
搜索主题页面
下载一个主题,解压,连着文件夹一起复制到X:\grub\themes\下,如果文件夹名字有空格请修改掉
我这里下的是 Poly Light 主题
theme文件夹
修改grub.cfg
(不变的地方省去,下同,在文章的最后有完整的配置文件)

#......

#设置主题文件路径
#注:$prefix 为 grub 所在目录(即 X:/grub/)
#poly-light 修改为你下载的主题的文件夹名字
set theme=$prefix/themes/poly-light/theme.txt;

#---------菜单项-----------
#......


顺便提一下,我下的这个支持多语言,但默认是英文,需要修改一下
如果是英文的话也可以按照这个方法翻译成中文

打开X:\grub\themes\主题名字\theme.txt

支持多语言的主题

找到某个text,按如下图修改,直到再找不到text为止
(注释英文的text,取消注释中文的text
修改示意图

不支持多语言的主题

找到某个text,直接修改引号内的内容,直到再找不到text为止
修改示意图
注意不要把%开头的字符给修改掉了(如%d%s!否则某些文本会失效(比如倒计时提示)

运行虚拟机,查看效果:
美化后的菜单
瞬间比之前的黑窗口要漂亮多了!

启动光盘/硬盘/软盘镜像

grub 原生并不支持直接启动 ISO 文件,需要借助外部工具memdisk来实现
下载syslinux.zip,解压,找到memdisk文件(没有扩展名)
为了保持目录整洁,在X:/下创建目录boot,将memdisk复制到boot文件夹下
boot目录
boot目录下创建pe文件夹,将你的 PE 镜像复制进去(或者其他路径也行)

修改grub.cfg文件:

#设置memdisk路径
set memdisk=/boot/memdisk

#......

insmod memdisk; #加载镜像文件需要的模块

#-----加载中文界面(BIOS)---

#......

#---------菜单项-----------

#启动老毛桃ISO
menuentry "启动老毛桃 PE" {
	echo "正在加载老毛桃 PE...";
	linux16 $memdisk iso raw;
	initrd16 /boot/pe/LaoMaoTao-PE.iso; #修改路径为你的 PE 的路径
}

#重启
menuentry "重启" { reboot; }

#关机
menuentry "关机" { halt; }

如果不是光盘镜像,只需要修改:

#如果是软盘镜像
linux16 $memdisk flopply raw;

#如果是硬盘镜像
linux16 $memdisk harddisk raw;

启动虚拟机,测试:
加载中
成功加载:
老毛桃启动菜单
你也可以专门把PE文件提取出来,只启动PE,具体请百度

加载ISO文件的时间有点久,为了方便查看进度,再增加一个进度条
修改grub.cfg

#......
insmod progress; #启用进度显示
#......

效果图:
加载进度

最终配置文件

下面只需要寻找各种 Win PE、Linux Live CD、工具等,再加进去就OK
这是一个简单的例子:
(文件管理器来自:https://a1ive.github.io/grub2-filemanager/)

#---------配置-----------

#默认启动第一个菜单项
set default=0;

#每一满屏后暂停输出,以免信息太多一闪而过看不清
set pager=1;

#设置菜单的超时时间为30秒
set timeout=30;

#设置主题文件路径
#注:$prefix 为 grub 所在目录(即 X:/grub/)
set theme=$prefix/themes/poly-light/theme.txt;

#设置memdisk路径
set memdisk=/boot/memdisk

#-------加载模块-------
insmod progress; #启用进度显示
insmod vbe;
insmod font; #加载字体需要的模块
insmod gfxterm;
insmod memdisk; #加载镜像文件的模块
insmod png;   #如果主题的背景是.png格式需要的模块
#insmod jpeg; #如果主题的背景是.jpg格式则需要这个

#-----加载中文界面(BIOS)---
#加载字体
loadfont unicode;
set gfxmode=auto;
set gfxpayload=keep;
set gfxterm_font=unicode;
terminal_output gfxterm;
	
#设置语言
set locale_dir=$prefix/locale;
set lang=zh_CN;



#---------菜单项-----------

#从硬盘启动
menuentry "[1]正常启动(Windows)" --hotkey=1 {  #--hotkey=某个按键 :设置快捷键
    if [ 'pc' == $grub_platform ] ; then
        if search --file --set /bootmgr ; then
            chainloader +1
        elif search --file --set /ntldr ; then
            chainloader +1
        fi
    elif [ 'efi' == $grub_platform ] ; then
        if search --file --set /EFI/Microsoft/Boot/bootmgfw.efi ; then
            chainloader /EFI/Microsoft/Boot/bootmgfw.efi
        fi
    fi
}

menuentry "[2]启动老毛桃 PE" --hotkey=2 {
	echo "正在加载老毛桃 PE...";
	
	linux16 $memdisk iso raw;
	initrd16 /boot/pe/LaoMaoTao-PE.iso;
}

#子菜单 - 工具箱
submenu "[3]实用工具箱" --hotkey=3 {
	set image=/boot/imgs/; #镜像文件目录
	load_theme; #重新加载主题
	
	menuentry "[1]运行 Ghost 三合一 (支持 SATA 光驱)" --hotkey=1 {
		echo "正在加载 Ghost 三合一...";
		linux16 $memdisk flopply raw;
		initrd16 $image/3GHOST.IMG;
	}
	
	menuentry "[2]运行 DiskGenius Dos 版" --hotkey=2 {
		echo "正在加载 DiskGenius Dos 版...";
		linux16 $memdisk iso raw;
		initrd16 $image/DGDOS.iso;
	}
	
	menuentry "[3]运行 Max Dos 工具箱" --hotkey=3 {
		echo "正在加载 Max Dos 工具箱...";
		linux16 $memdisk flopply raw;
		initrd16 $image/MAXDOS.IMG;
	}
	
	menuentry "[4]运行硬盘再生器 2011" --hotkey=4 {
		echo "正在加载硬盘再生器...";
		linux16 $memdisk iso raw;
		initrd16 $image/HDDREG.ISO;
	}
	
	menuentry "[5]运行 MHDD V4.6(硬盘检测)" --hotkey=5 {
		echo "正在加载 MHDD V4.6...";
		linux16 $memdisk flopply raw;
		initrd16 $image/MHDD.IMG;
	}
}

#文件管理器
menuentry "[4]Grub 文件管理器" --hotkey=4 {
	echo "正在加载文件管理器......";
	
	#BIOS
	if [ "${grub_platform}" = "pc" ]; then
		linux /boot/file_manager/loadfm;
		initrd /boot/file_manager/grubfm.iso;
	#UEFI(未测试)
	else
		chainloader /grubfm.efi;
	fi 
}

#重启
menuentry "[R]重启" --hotkey=r { reboot; }

#关机
menuentry "[S]关机" --hotkey=s { halt; }


#------------函数-----------

#加载主题
function load_theme {
	set theme=$prefix/themes/poly-light/theme.txt;
}

安装到U盘

很简单,用之前一样的方法安装,只不过替换一下盘符和磁盘号,再将文件都复制到U盘里即可

参考文章/网站

Grub 中文手册:http://www.jinbuguo.com/linux/grub.cfg.html
Grub 官方 Wiki:https://www.gnu.org/software/grub/manual/grub/grub.html
Arch Linux Grub Wiki:https://wiki.archlinux.org/index.php/GRUB_(简体中文)
grub2 详解(翻译和整理官方手册):https://www.cnblogs.com/f-ck-need-u/archive/2017/06/29/7094693.html

设置中文字体:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=308028
自己制作系统U盘:http://wuyou.net/forum.php?mod=viewthread&tid=404623
加载 ISO/IMG 文件:http://blog.sina.com.cn/s/blog_8ea8e9d50101kjfg.html
引导 ISO:https://blog.csdn.net/bush2582/article/details/18428555?locationNum=2
设置子菜单:https://unix.stackexchange.com/questions/62733/how-to-correctly-set-up-the-right-grub-2-default-menu-entry
安装主题:https://blog.csdn.net/w84963568/article/details/78884003
使用 grub2 制作 U盘引导 iso(需搭梯子):http://xstarcd.github.io/wiki/Linux/boot-multiple-iso-from-usb-via-grub2-using-linux.html

  • 2
    点赞
  • 8
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

XcantloadX

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值