|
本帖最后由 ql1307096 于 2021-8-9 12:04 编辑
多年前发的个小教程,有很多不足。感谢论坛的朋友的反馈。后来我简化了整个过程,使用win版的cpio,一条批处理全部搞定,分享给有需要的朋友们
- cd /d %~dp0
- mkdir out\boot\grub\x86_64-efi
- xcopy /s /e /y /i x86_64-efi out\boot\grub\x86_64-efi
- mkdir out\boot\grub\locale
- copy /y locale\zh_CN\grub.mo out\boot\grub\locale\zh_CN.mo
- copy /y grub.cfg out\boot\grub\grub.cfg
- mkdir out\boot\grub\fonts
- copy /y unicode.pf2.gz out\boot\grub\fonts
- copy /y cpio.exe out
- copy /y find.exe out
- copy /y libiconv2.dll out
- copy /y libintl3.dll out
- copy /y grub-bootstrap.cfg out
- ::copy /y background.png out\boot\grub\
- cd out
- find ./boot -print|cpio -o -H newc > ./memdisk.cpio
- cd ..
- grub-mkimage.exe -m out\memdisk.cpio -d out\boot\grub\x86_64-efi -c out\grub-bootstrap.cfg -p "(memdisk)/boot/grub" -O x86_64-efi -o .\out\bootx64.efi -v newc iso9660 part_msdos part_gpt ext2 cpio memdisk blocklist minicmd loopback fat ntfs gfxterm reboot configfile normal echo test gfxmenu gfxterm search gzio
- @pause
- move .\out\bootx64.efi .\
- rmdir /s /q out
复制代码
所有需要的文件都打包上传到网盘。欢迎吐槽。
https://ql1307096.lanzoui.com/i41B0segu1e
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在论坛几位前辈的帮助下,成功将grub2装入到memdisk中,这样不用带着一大堆的模块,整个grub2就几个文件。发布一下方法,供新手参考吧,老手的话看看能否提出更好的意见。。
1,首先下载grub2的Windows包
http://alpha.gnu.org/gnu/grub/grub-2.02~beta2-for-windows.zip
2,下载并安装Cygwin(在windows下使用linux命令,在本文中主要为了打包cpio文件),下载并安装cygwin需要点时间,可以搜索下载离线安装包,在下载或者安装的过程中可以干些其他的事情,,
3,解压grub2的windows包,随便解压到哪里都行,我解压到D盘根目录下,进入到解压后的i386-pc目录里,这里有grub2的全部模块,如果全部安装到memdisk中,最后编译的时候会提示内核太大而失败,因此只能做适当的精简,保留必须的,文件太多了,一个个的复制实在是麻烦,我写了个批处理,放到i386-pc目录运行一下就行,运行成功后会在i386-pc目录生成memdisk.cpio\boot\grub\i386-pc新的目录结构,memdisk.cpio\boot\grub\i386-pc下面则是精简后的模块了。现在的目录应该是这样的:d:\grub-2.02~beta2-for-windows\i386-pc\memdisk.cpio\boot\grub\i386-pc。
4,下面的几步操作都在memdisk.cpio目录下进行的,在boot\grub下新建一文本文件,改名为grub.cfg,输入以下内容,保存为utf-8无bom格式编码,
set locale_dir=${prefix}/locale
if search -s -f /grub2/grub.cfg; then
search --no-floppy -f --set=root /grub2/grub.cfg
configfile /grub2/grub.cfg
else
loadfont $prefix/font.pf2
menuentry "" {
true
}
menuentry "===cat (memdisk)/bot/grub/grub.cfg===" {
true
}
fi
5,在boot\grub下建立目录locale,将d:\grub-2.02~beta2-for-windows\locale\zh_CN\grub.mo改名为zh_CN.mo并复制到刚刚新建的locale目录下,将附件中的font.pf2复制到boot\grub下,现在文件基本上都准备好了memdisk目录下的文件如下:
memdisk中的文件
6,现在cygwin应该安装好了吧?运行一次看看,@前面的就是用户名了,
cygwin
将memdisk目录下的整个boot目录剪切到cygwin安装目录下的home/用户名/目录下,在cygwin中运行命令:find boot -print|cpio -o -H newc > /memdisk.cpio,如果无错误的话应该显示如下图:生成的文件memdisk.cpio在cygwin的安装目录下,
cygwin打包
7,移动memdisk.cpio到d:\grub-2.02~beta2-for-windows下,运行cmd,切换到d:\grub-2.02~beta2-for-windows目录,运行:
grub-mkimage.exe -O i386-pc -d i386-pc -p (memdisk)/boot/grub -o core.img -m memdisk.cpio -v biosdisk newc blocklist fat iso9660 pxe reiserfs memdisk cpio minicmd part_msdos ext2 ntfs loopback gfxmenu gfxterm reboot normal search。生成的core.img大约300多K,将core.img移动到d:\grub-2.02~beta2-for-windows\i386-pc下,命令行下运行copy /b lnxboot.img+core.img g2ldr。
8,完成了,g2ldr可以用Grub4dos的kernel启动,应该也可以用g2ldr.mbr启动,这个我没有试过,最后看看启动的画面
g4d引导
grub2菜单
grub2环境
本文所提及的附件
附件.7z
(209.18 KB, 下载次数: 315)
|
评分
-
查看全部评分
|