自己制作系统U盘
本帖最后由 911061873 于 2018-2-10 18:51 编辑最近刚接触grub2,想全部自己动手打,造一个支持双启动的U盘。并可以安装Windows系统。
我会把相关经验写出来自己留存,也可以供大家参考。
如有错误或者更好的方法,欢迎交流。{:1_186:}
1.准备工作
准备一个U盘
我把它分成了两个区,一个FAT32分区放grub相关文件,一个NTFS分区放一下系统的镜像文件。
因为FAT32不支持单个文件大小超过4G,所以要分成两个区。
下载GRUB2
从grub官网下载for windows版本的。
这里给出当前(2018年2月10日)最新版本的链接grub-2.02-for-windows.zip
2.安装grub2到U盘
把下载好的grub2解压,插入U盘。
以管理员方式启动CMD窗口并切换到当前解压的目录。
运行wmic diskdrive list brief查看U盘的设备ID
那个“\\.\PHYSICALDRIVE2 ”就是U盘的设备ID
接着运行#安装BIOS到U盘
grub-install.exe --boot-directory=g: --recheck --target=i386-pc \\.\PHYSICALDRIVE2
#安装UEFIx32到U盘
grub-install.exe --boot-directory=g: --recheck --target=i386-efi --efi-directory=g: --no-nvram --removable \\.\PHYSICALDRIVE2
#安装UEFIx64到U盘
grub-install.exe --boot-directory=g: --recheck --target=x86_64-efi --efi-directory=g: --no-nvram --removable \\.\PHYSICALDRIVE2
其中的“g:”为我的U盘中的FAT32分区的盘符。
至此已经做好的一个支持BIOS+UEFI的启动U盘了,但目前是命令版的,还没有配置菜单。
3.配置菜单
配置菜单我参考的这篇文章GRUB2配置文件"grub.cfg"详解
以下是我的配置文件
#################
## (1)特殊变量 ##
#################
#默认启动第一个菜单项
set default=0
#如果第一个菜单项启动失败,转而启动第二个菜单项
set fallback=1
#优先使用最常规的1024x768分辨率,以保证在不同的屏幕上拥有一致的菜单效果,如果失败再自动匹配分辨率
set gfxmode=1024x768,auto
#使用自己制作的24px的大号字体以避免默认字体太小看不清
set gfxterm_font=unicode
#将GRUB2设置为简体中文界面
set lang=zh_CN
#指定翻译文件(*.mo)的目录,若未明确设置此目录,则无法显示中文界面。
set locale_dir=$prefix/locale
#每一满屏后暂停输出,以免信息太多一闪而过看不清
set pager=1
#开启密码验证功能,并设置一个名为'root'的超级用户
#set superusers=root
#设置菜单的超时时间为5秒
set timeout=30
#设置主题文件路径
#set theme=$prefix/themes/starfield/theme.txt
#设置菜单选项颜色
set menu_color_normal=green/black
set menu_color_highlight=white/cyan
#################
## (2)公共模块 ##
#################
#两种最流行的磁盘分区格式
insmod part_gpt
insmod part_msdos
#常见文件系统驱动
insmod btrfs
insmod exfat
insmod ext2
insmod fat
insmod iso9660
insmod jfs
insmod ntfs
insmod reiserfs
insmod udf
insmod xfs
insmod zfs
#一次性加载所有可用的视频驱动
insmod all_video
#图形模式终端
insmod gfxterm
#背景图片支持
insmod png
#########################################
## (3)公共命令(必须放在模块和变量之后) ##
#########################################
#激活图形模式的输出终端,以允许使用中文和背景图
terminal_outputgfxterm
export menu_color_normal menu_color_highlight;
#设置背景图片
background_image $prefix/themes/1024x768.png
#加载自己制作的24px的大号字体文件($prefix/fonts/WenQuanYiMicroHeiMono24px.pf2)
loadfont unicode
#设置'root'用户的哈希密码[通过"grub-mkpasswd-pbkdf2"工具生成]
#password_pbkdf2 root grub.pbkdf2.sha512.69.7DBCA469F80EA1C0A8A1E2FEBC4F8463.B073C1C89EC1E85309C3D6A1BAFF4356
#################
## (4)菜单项 ##
#################
menuentry '正常启动(Windows)' --hotkey=1{
if [ 'pc' == $grub_platform ] ; then
if search --file --set --no-floppy /bootmgr ; then
chainloader +1
elif search --file --set --no-floppy /ntldr ; then
chainloader +1
else
echo '没有找到Windows'
sleep --verbose 5
fi
fi
if [ 'efi' == $grub_platform ] ; then
if search --file --set --no-floppy /EFI/Microsoft/Boot/bootmgfw.efi ; then
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
else
echo '没有找到Windows'
sleep --verbose 5
fi
fi
}
if [ 'pc' == $grub_platform ] ; then
source ${prefix}/bios.cfg
else
if [ "x86_64" == $grub_cpu ] ; then
source ${prefix}/efi64.cfg
else
source ${prefix}/efi32.cfg
fi
fi
menuentry "关机" --hotkey=p{
halt
}
menuentry "重启" --hotkey=r{
reboot
}
接下来我要研究UEFI载入PE的问题。成功了我就继续更帖。 抢个沙发{:1_186:} 谢谢分享 下载了,谢谢分享 谢谢分享 好东西。谢谢 支持一下! 这个非常赞啊!把自己的点滴心得拿出来跟大家分享。
谢LZ! 不错,很给力! 支持!!! {:1_183:}{:1_183:} Legacy引导的菜单配置文件我找到位置了,位于/grub/grub.cfg,可是EFI引导的配置文件在什么位置?或者说用你的这个方法安装的/EFI/BOOT/BOOTX64.EFI 这个文件指向??? 谢谢分享,辛苦发帖,学习中 wintoflash 发表于 2018-2-24 09:52
legacy-bios和efi的配置文件是同一个。
你应该没有按照楼主的方法实体操作吧!我实体操作,它们并没有指向同一个配置文件,菜单不一样 感谢无私分享,辛苦发帖,学习中。 lz给的命令,uefi模式64位的grub2的安装是写入到扇区,还是通过efi文件启动? lz给的命令,uefi模式64位的grub2的安装是写入到扇区,还是通过efi文件启动? 路过进来学习一下! 许 终于找到了
页:
[1]