无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 56153|回复: 111
打印 上一主题 下一主题

[原创] Windows下将GRUB2装入memdisk

    [复制链接]
跳转到指定楼层
#
发表于 2015-3-1 15:56:22 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 ql1307096 于 2021-8-9 12:04 编辑

多年前发的个小教程,有很多不足。感谢论坛的朋友的反馈。后来我简化了整个过程,使用win版的cpio,一条批处理全部搞定,分享给有需要的朋友们
  1. cd /d %~dp0
  2. mkdir out\boot\grub\x86_64-efi
  3. xcopy /s /e /y /i x86_64-efi out\boot\grub\x86_64-efi
  4. mkdir out\boot\grub\locale
  5. copy /y locale\zh_CN\grub.mo out\boot\grub\locale\zh_CN.mo
  6. copy /y grub.cfg out\boot\grub\grub.cfg

  7. mkdir out\boot\grub\fonts
  8. copy /y unicode.pf2.gz  out\boot\grub\fonts
  9. copy /y cpio.exe out
  10. copy /y find.exe out
  11. copy /y libiconv2.dll out
  12. copy /y libintl3.dll out
  13. copy /y grub-bootstrap.cfg out
  14. ::copy /y background.png out\boot\grub\

  15. cd out
  16. find ./boot -print|cpio -o -H newc > ./memdisk.cpio
  17. cd ..
  18. 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
  19. @pause
  20. move .\out\bootx64.efi .\
  21. 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目录下的文件如下:

6,现在cygwin应该安装好了吧?运行一次看看,@前面的就是用户名了,

将memdisk目录下的整个boot目录剪切到cygwin安装目录下的home/用户名/目录下,在cygwin中运行命令:find boot -print|cpio -o -H newc > /memdisk.cpio,如果无错误的话应该显示如下图:生成的文件memdisk.cpio在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启动,这个我没有试过,最后看看启动的画面




本文所提及的附件 附件.7z (209.18 KB, 下载次数: 333)

感谢论坛两位前辈“极限驱动”和“niumao”的热心解答

绝对的新手教程,高手的话看看有没有地方还可以改进的 {:soso_e147:}

另外附上我做的成品
attach]210751[/attach] grub2.part2.rar (124.14 KB, 下载次数: 243)

grub2.part1.rar

1 MB, 下载次数: 286, 下载积分: 无忧币 -2

成品

点评

grub-2.02~beta2-for-windows.zip 本来就是直接在windows命令行中使用的东西为什么要多此一举安装个Cygwin运行环境?  发表于 2016-4-17 23:30
既然在linux下已经完全能实现了,何必多此一举在windows再安装伪环境再折腾一次呢?如果说网友只需要成品,你这就是残缺的本成品,如果网友需要掌握过程,就不如在linux下直接操作.  发表于 2015-4-8 12:48
http://www.gaoxuey.com/ 古代穿越小说  发表于 2015-3-5 05:48
http://www.nbymzx.com/Show/5e3pUWEp0WtT/ 妃子谋:王爷采花我采草  发表于 2015-3-3 21:51

评分

参与人数 2无忧币 +10 收起 理由
beidoou + 5 很给力!
shan + 5 赞一个!

查看全部评分

105#
发表于 2023-8-9 07:22:20 来自手机 | 只看该作者
学习学习借鉴一下
回复

使用道具 举报

104#
发表于 2021-1-29 10:03:15 | 只看该作者
谢谢楼主公布自己心得
回复

使用道具 举报

103#
发表于 2021-1-25 10:14:02 | 只看该作者
看看先,多谢了!!
回复

使用道具 举报

102#
发表于 2021-1-8 10:44:40 | 只看该作者
回复

使用道具 举报

101#
发表于 2021-1-6 18:14:53 | 只看该作者
好极了
回复

使用道具 举报

100#
发表于 2020-12-12 16:13:22 | 只看该作者
我是来学习的哦。
回复

使用道具 举报

99#
发表于 2020-12-2 06:47:28 | 只看该作者
本帖最后由 2011cwj6958 于 2020-12-2 11:38 编辑

弄的太复杂了,完全可以Windows下定制的 几条命令直接写批处理。
回复

使用道具 举报

98#
发表于 2020-12-2 03:07:39 | 只看该作者
Windows下将GRUB2装入memdisk
回复

使用道具 举报

97#
发表于 2020-9-23 14:22:37 | 只看该作者
TRYIT
回复

使用道具 举报

96#
发表于 2020-9-14 15:03:40 | 只看该作者
楼主,高!有没有新的发布?
回复

使用道具 举报

95#
发表于 2020-8-5 19:59:36 | 只看该作者
楼主辛苦了,收一个
回复

使用道具 举报

94#
发表于 2020-6-12 10:59:05 | 只看该作者
又遇见好东西了,谢谢分享
回复

使用道具 举报

93#
发表于 2020-4-2 22:23:48 | 只看该作者
学习下,谢谢分享!
回复

使用道具 举报

92#
发表于 2020-3-25 16:37:17 | 只看该作者
memdisk对于小内存来说太慢了,有解决办法吗?
回复

使用道具 举报

91#
发表于 2020-3-19 17:19:28 | 只看该作者
做得不错,点赞!
回复

使用道具 举报

90#
发表于 2020-3-13 11:04:21 | 只看该作者
hilsonma 发表于 2020-3-13 10:54
我还真试了 :
grub-mkimage: error: core image is too big (0xec53b > 0x78000).

是的
回复

使用道具 举报

89#
发表于 2020-3-13 10:54:43 | 只看该作者
wintoflash 发表于 2020-3-13 09:11
BIOS 下一般不能这样弄。不信你可以试试。

我还真试了
grub-mkimage: error: core image is too big (0xec53b > 0x78000).

确实不行,我太想当然了。应该是bios下的core.img有大小限制吧。

点评

是的  详情 回复 发表于 2020-3-13 11:04
回复

使用道具 举报

88#
发表于 2020-3-13 09:11:29 | 只看该作者
hilsonma 发表于 2020-3-13 04:27
可以不用memdisk,直接把模块文件集成到引导程序中去。这样只有一个引导文件bootx64.efi和一个配置文件gr ...

BIOS 下一般不能这样弄。不信你可以试试。

点评

我还真试了 : grub-mkimage: error: core image is too big (0xec53b > 0x78000). 确实不行,我太想当然了。应该是bios下的core.img有大小限制吧。  详情 回复 发表于 2020-3-13 10:54
回复

使用道具 举报

87#
发表于 2020-3-13 04:27:58 | 只看该作者
2012dghdh 发表于 2020-3-13 00:39
赞一个弄了好一会还没成功。

可以不用memdisk,直接把模块文件集成到引导程序中去。这样只有一个引导文件bootx64.efi和一个配置文件grub.cfg。
参考 http://bbs.wuyou.net/forum.php?m ... &fromuid=586362
本贴说的是bios启动的,那就集成一个引导文件g2ldr 和一个配置文件grub.cfg。

如果配置文件比较复杂,甚至还有主题等内容,那再使用memdisk,把这些配置文件等都集成到memdisk中,再生成一个单一的引导文件
参考 http://bbs.wuyou.net/forum.php?m ... &fromuid=586362
同样,bios平台就集成一个单一的g2ldr。

点评

BIOS 下一般不能这样弄。不信你可以试试。  详情 回复 发表于 2020-3-13 09:11
回复

使用道具 举报

86#
发表于 2020-3-13 00:39:07 | 只看该作者
赞一个弄了好一会还没成功。

点评

可以不用memdisk,直接把模块文件集成到引导程序中去。这样只有一个引导文件bootx64.efi和一个配置文件grub.cfg。 参考 http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=418147&pid=3937203&fromu  详情 回复 发表于 2020-3-13 04:27
回复

使用道具 举报

85#
发表于 2020-3-7 09:23:25 来自手机 | 只看该作者
学习了。
回复

使用道具 举报

84#
发表于 2020-3-5 22:48:42 | 只看该作者
来看看旧时光
回复

使用道具 举报

83#
发表于 2020-2-28 18:17:39 | 只看该作者
回复

使用道具 举报

82#
发表于 2020-2-28 17:37:52 | 只看该作者
楼主辛苦了,收一个先。。。
回复

使用道具 举报

81#
发表于 2019-12-24 08:41:28 | 只看该作者
让 江小白 来看看帖子里藏了啥好东西~~~
回复

使用道具 举报

80#
发表于 2019-12-21 18:16:11 | 只看该作者
很给力!
回复

使用道具 举报

79#
发表于 2019-12-18 16:18:45 | 只看该作者
fdhfbluivuytcyu
回复

使用道具 举报

78#
发表于 2019-11-22 02:47:08 | 只看该作者
楼主6666666666666666666666666666
回复

使用道具 举报

77#
发表于 2019-10-29 13:20:12 | 只看该作者
谢谢分享
回复

使用道具 举报

76#
发表于 2019-10-29 12:47:18 | 只看该作者
谢谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 19:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表