无忧启动论坛

 找回密码
 注册
搜索

=====GRUB2_EFI&BIOS双启动=====

查看数: 48453 | 评论数: 73 | 收藏 85
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-3-4 02:11

正文摘要:

本帖最后由 2012angelkyo 于 2016-11-26 22:44 编辑 链接:http://pan.baidu.com/s/1i56ZIz7 密码:vcts

回复

2012angelkyo 发表于 2016-3-4 02:20:53
本帖最后由 2012angelkyo 于 2016-3-4 16:05 编辑

附相关文件的代码(基于grub-2.02~beta2-for-windows),能看懂的就看,看不懂就算了
EFI单文件批处理

  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  out\boot\grub\fonts
  9. copy /y background.png out\boot\grub\

  10. cd out
  11. find ./boot -print|cpio -o -H newc > ./memdisk.cpio
  12. cd ..
  13. 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

  14. @pause
  15. cd out
  16. rmdir /s /q boot
  17. del /s /q memdisk.cpio
复制代码
grub-bootstrap.cfg内容
  1. normal (memdisk)/boot/grub/grub.cfg
复制代码
grub.cfg内容,此文件在memdisk.cpio里面
  1. if [ "${grub_platform}" == "efi" ]; then
  2.         if [ "${grub_cpu}" == "x86_64" ]; then
  3.                 if        search -s -f /boot/grub/grub-efi-64.cfg ; then
  4.                         echo "Reading (${root})/boot/grub/grub-efi-64.cfg"
  5.                         configfile /boot/grub/grub-efi-64.cfg
  6.                 else
  7.                         echo "Could not find grub-efi-64.cfg file!"
  8.                 fi
  9.         fi
  10.         
  11.         if [ "${grub_cpu}" == "i386" ]; then
  12.                 if        search -s -f /boot/grub/grub-efi-32.cfg ; then
  13.                         echo "Reading (${root})/boot/grub/grub-efi-32.cfg"
  14.                         configfile /boot/grub/grub-efi-32.cfg
  15.                 else
  16.                         echo "Could not find grub-efi-32.cfg file!"
  17.                 fi
  18.         fi
  19. else
  20.         if [ "${grub_platform}" == "pc" ]; then
  21.                 if [ "${grub_cpu}" == "i386" ]; then
  22.                         if        search -s -f /boot/grub/grub-bios.cfg ; then
  23.                                 echo "Reading (${root})/boot/grub/grub-bios.cfg"
  24.                                 configfile /boot/grub/grub-bios.cfg
  25.                         else
  26.                                 echo "Could not find grub-bios.cfg file!"
  27.                         fi
  28.                 fi
  29.         else
  30.                 echo "unknow platform!"
  31.         fi
  32. fi
复制代码

find & cpio  for windows
find&amp;cpio_windows.7z (639.09 KB, 下载次数: 338)




点评

不错,学习了!  发表于 2016-7-1 11:15

评分

参与人数 2无忧币 +10 收起 理由
2011cwj6958 + 5 很给力!
ql1307096 + 5 很给力!

查看全部评分

jzura 发表于 2016-11-26 06:44:45
2012angelkyo 发表于 2016-3-4 15:01:21
2011cwj6958 发表于 2016-3-4 13:53
先赞一个,一个与众不同的模板,目录结构简单清爽。
提个建议,BIOS版能直接引导g2ldr.mbr文件就更加方便

可以啊,菜单里自己添加一个启动项呗。。。

点评

我的意思是用其他的引导比如Windows的bcd或者 Grub4DOS的grldr,直接引导g2ldr.mbr文件  详情 回复 发表于 2016-3-4 16:04
2011cwj6958 发表于 2016-3-4 13:53:16
先赞一个,一个与众不同的模板,目录结构简单清爽。
提个建议,BIOS版能直接引导g2ldr.mbr文件就更加方便

点评

可以啊,菜单里自己添加一个启动项呗。。。  详情 回复 发表于 2016-3-4 15:01
boy6585948 发表于 2016-3-4 11:37:43
LZ给力啊!!GRUB2什么时候可以跟G4D一样强大呢???
dfswb 发表于 2016-3-4 10:13:39
顶,好帖,这个版块太安静了!
shan 发表于 2016-3-4 09:39:40
顶帖子,谢谢分享技术,
2012angelkyo 发表于 2016-3-4 02:26:21
本帖最后由 2012angelkyo 于 2016-3-4 16:03 编辑

BIOS版批处理
  1. cd /d %~dp0

  2. mkdir out\boot\grub\i386-pc
  3. xcopy /s /e /y /i i386-pc out\boot\grub\i386-pc

  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  out\boot\grub\fonts
  9. copy /y background.png out\boot\grub\


  10. grub-mkimage.exe -d i386-pc -C auto -c out\grub-bootstrap-bios.cfg -p /boot/grub -o .\out\core.img -O i386-pc -v biosdisk loopback tar part_msdos fat exfat ntfs search_fs_file

  11. copy /B out\boot.img + out\core.img out\g2ldr

  12. @pause
复制代码
执行完批处理,进入out文件里夹,用7zip手动压缩boot文件夹为memdisk.tar,然后将它放到最终成品的boot/grub/下面。

grub-bootstrap-bios.cfg内容
  1. search.file /boot/grub/grub-bios.cfg root
  2. loopback memdisk /boot/grub/memdisk.tar
  3. set prefix=(memdisk)/boot/grub
  4. insmod part_gpt
  5. insmod iso9660
  6. insmod memdisk
  7. insmod ext2
  8. insmod blocklist
  9. insmod echo
  10. insmod test
  11. insmod configfile
  12. normal (memdisk)/boot/grub/grub.cfg
复制代码

(memdisk)/boot/grub/grub.cfg内容跟EFI版一样,看楼上。。。



bjaxiong 发表于 2023-5-7 22:22:24
有现成的压缩包,赞一个!最近想搞一搞grub
寒冰YE 发表于 2023-5-5 21:13:50
grldr文件乱码!!!
dawnstar 发表于 2020-11-21 16:09:40
请教一下,你这个grub有没有办法像江南一根葱那样的有列出电脑硬盘里面的iso、wim和img等功能,还有像文件管理器那样子,可以自由选择。
dawnstar 发表于 2020-11-20 10:14:56
赞一个。。。
蓝星明月 发表于 2020-7-1 20:14:29
谢谢!!!
深谷憂狼 发表于 2020-4-19 00:11:34
看起来好漂亮
wintoflash 发表于 2019-12-26 20:16:03
pky317 发表于 2019-12-26 15:02
测试uefi模块不必装win7,win10也可以,只需在grub下加载slic,然后进入win10,用SLIC ToolKit查看,如果 ...

现在不再用单独的loadslic模块了,我修改了acpi模块,加 --slic 参数。
用 acpi --slic /dell.bin
测试 uefi 下可以识别,bios下也可以。

http://bbs.wuyou.net/forum.php?m ... d=418141&extra=


pky317 发表于 2019-12-26 15:02:25
wintoflash 发表于 2019-12-26 10:59
uefi和bios下修改acpi表的方式不同,要另外写代码,不能直接编译。
既然在你的电脑上成功了,那就好。请 ...

测试uefi模块不必装win7,win10也可以,只需在grub下加载slic,然后进入win10,用SLIC ToolKit查看,如果模拟的slic表正常,就成功了

点评

现在不再用单独的loadslic模块了,我修改了acpi模块,加 --slic 参数。 用 acpi --slic /dell.bin 测试 uefi 下可以识别,bios下也可以。 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=418141&extra=  详情 回复 发表于 2019-12-26 20:16
pky317 发表于 2019-12-26 13:09:20
wintoflash 发表于 2019-12-26 10:59
uefi和bios下修改acpi表的方式不同,要另外写代码,不能直接编译。
既然在你的电脑上成功了,那就好。请 ...

用acpi命令加载slic会提示验证失败,系统无法激活




用vgashim好像还需要对显卡驱动进行处理的,我没试过,我是在实机上将win7安装到vhd中的,因为硬盘是GPT格式,只能使用uefi引导。如果主板可以开启CSM和关闭Secure Boot,那么利用WinNTSetup将win7安装到vhd中,再用BOOTICE修改BCD添加一项vhd引导即可,如果主板不支持就没办法。或者你改好后传上来让大家帮忙测试
wintoflash 发表于 2019-12-26 10:59:22
本帖最后由 wintoflash 于 2019-12-26 12:12 编辑
pky317 发表于 2019-12-26 07:37
我在虚拟机中测试,grldr和loadslic.mod都正常,实机应该也可以,或者你上传一个64位uefi的模块,我实机 ...

uefi和bios下修改acpi表的方式不同,要另外写代码,不能直接编译。
既然在你的电脑上成功了,那就好。请再测试一下用acpi命令加载slic,看看能不能成功。根据代码,acpi命令和loadslic的原理差不多。

另外请问win7怎么改成uefi启动?
vmware的uefi好像没有csm。我用了vgashim,卡在 starting windows ...上了


点评

测试uefi模块不必装win7,win10也可以,只需在grub下加载slic,然后进入win10,用SLIC ToolKit查看,如果模拟的slic表正常,就成功了  详情 回复 发表于 2019-12-26 15:02
用acpi命令加载slic会提示验证失败,系统无法激活 [attachimg]407984[/attachimg] [attachimg]407985[/attachimg] 用vgashim好像还需要对显卡驱动进行处理的,我没试过,我是在实机上将win7安装到vhd中的,因  详情 回复 发表于 2019-12-26 13:09
pky317 发表于 2019-12-26 07:56:43
wintoflash 发表于 2019-12-25 21:04
我也是醉了。研究了半天,发现你给我的这个loadslic源码好像没效果。
把这个补丁打到grub4dos上,用load ...

你可以用附件的SLIC ToolKit.exe检测一下SLIC是否模拟成功,如果检测到只有一个SLIC表(有两个会出现提示的,起作用的是第一个),而系统已安装与第一个SLIC对应的证书和产品密钥,那么肯定可以正常激活的




SLIC ToolKit.7z (329.12 KB, 下载次数: 11)

pky317 发表于 2019-12-26 07:37:08
wintoflash 发表于 2019-12-25 21:04
我也是醉了。研究了半天,发现你给我的这个loadslic源码好像没效果。
把这个补丁打到grub4dos上,用load ...

我在虚拟机中测试,grldr和loadslic.mod都正常,实机应该也可以,或者你上传一个64位uefi的模块,我实机测试一下

点评

uefi和bios下修改acpi表的方式不同,要另外写代码,不能直接编译。 既然在你的电脑上成功了,那就好。请再测试一下用acpi命令加载slic,看看能不能成功。根据代码,acpi命令和loadslic的原理差不多。 另外请问win  详情 回复 发表于 2019-12-26 10:59
wintoflash 发表于 2019-12-25 21:04:51
pky317 发表于 2019-12-25 16:15
我没用过slic这个外部命令,也不知slic.bin是哪个厂商的,用我上传的附件中的LENOVO-2.1_CB-01.BIN替换sl ...

我也是醉了。研究了半天,发现你给我的这个loadslic源码好像没效果。
把这个补丁打到grub4dos上,用loadslic命令照样不能激活。



作为对比,用slic外部命令可以正常激活。

dell.tar.gz (2.03 KB, 下载次数: 4)
grldr.tar.gz (163.28 KB, 下载次数: 3)
所以移植的模块也没用

loadslic.tar.gz (2.54 KB, 下载次数: 5)

点评

你可以用附件的SLIC ToolKit.exe检测一下SLIC是否模拟成功,如果检测到只有一个SLIC表(有两个会出现提示的,起作用的是第一个),而系统已安装与第一个SLIC对应的证书和产品密钥,那么肯定可以正常激活的  详情 回复 发表于 2019-12-26 07:56
我在虚拟机中测试,grldr和loadslic.mod都正常,实机应该也可以,或者你上传一个64位uefi的模块,我实机测试一下  详情 回复 发表于 2019-12-26 07:37
pky317 发表于 2019-12-25 17:45:37
刚才在Win8.1上测试kms激活系统(BIOS中的SLIC表不完整),可以顺利激活。这说明SLIC表不完整不会影响win8.1通过kms的方式激活
pky317 发表于 2019-12-25 16:15:35
本帖最后由 pky317 于 2019-12-25 16:20 编辑
wintoflash 发表于 2019-12-25 12:49
刚下了win8,安装上之后结果根本不会用,我还是用win7测试吧。
请教一下,slic 对win7版本有要 ...

我没用过slic这个外部命令,也不知slic.bin是哪个厂商的,用我上传的附件中的LENOVO-2.1_CB-01.BIN替换slic.bin试试

点评

我也是醉了。研究了半天,发现你给我的这个loadslic源码好像没效果。 把这个补丁打到grub4dos上,用loadslic命令照样不能激活。 所以移植的模块也没用  详情 回复 发表于 2019-12-25 21:04
pky317 发表于 2019-12-25 16:08:16
本帖最后由 pky317 于 2019-12-25 16:28 编辑

slic.bin的大小应该是374字节,用winhex打开这个文件在前面两行可以看到是哪个电脑品牌的SLIC表,然后在win7下导入对应厂家的数字证书和产品密钥即可激活系统。附件是联想的SLIC和证书(把LENOVO-2.1_CB-01.BIN替换slic.bin),以管理员身份运行CMD,执行下面命令:
slmgr /ilc LENOVO-2.1.XRM-MS
slmgr /ipk 6K2KY-BFH24-PJW6W-9GK29-TMPWP
即可激活系统,可能需要重启
联想的SLIC和证书.7z (2.12 KB, 下载次数: 9)
pky317 发表于 2019-12-25 14:07:22
wintoflash 发表于 2019-12-25 12:49
刚下了win8,安装上之后结果根本不会用,我还是用win7测试吧。
请教一下,slic 对win7版本有要 ...

如果你是测试用kms的方式激活win7,不能选旗舰版,其它版本好像都可以,专业版和企业版一定可以。
pky317 发表于 2019-12-25 13:28:53
wintoflash 发表于 2019-12-25 12:49
刚下了win8,安装上之后结果根本不会用,我还是用win7测试吧。
请教一下,slic 对win7版本有要 ...

对win7版本没有要求,不过还需要配合对应的数字证书和产品密钥才能激活。你可以参考一下下面的内容:
https://www.zhihu.com/question/25695388

点评

我从grub4dos的ntboot里面提取了slic外部命令和slic.bin 在grub4dos下执行 /slic /slic.bin 然后进入win7 接下来该怎么做?  详情 回复 发表于 2019-12-25 15:02
wintoflash 发表于 2019-12-25 12:49:44
pky317 发表于 2019-12-24 22:27
我明天找时间装个win8.1验证一下

刚下了win8,安装上之后结果根本不会用,我还是用win7测试吧。
请教一下,slic 对win7版本有要求吗?是 VL 版本的才能激活吗?

点评

不知slic.bin是哪个厂商的,用我上传的附件替换slic.bin试试  详情 回复 发表于 2019-12-25 16:15
如果你是测试用kms的方式激活win7,不能选旗舰版,其它版本好像都可以,专业版和企业版一定可以。  详情 回复 发表于 2019-12-25 14:07
对win7版本没有要求,不过还需要配合对应的数字证书和产品密钥才能激活。你可以参考一下下面的内容: https://www.zhihu.com/question/25695388  详情 回复 发表于 2019-12-25 13:28
pky317 发表于 2019-12-24 22:27:08
wintoflash 发表于 2019-12-24 22:09
如果win8/8.1可用话我可以研究一下.
win10能用的话就更好了

我明天找时间装个win8.1验证一下

点评

刚下了win8,安装上之后结果根本不会用,我还是用win7测试吧。 请教一下,slic 对win7版本有要求吗?是 VL 版本的才能激活吗? [attachimg]407892[/attachimg]  详情 回复 发表于 2019-12-25 12:49
wintoflash 发表于 2019-12-24 22:09:52
pky317 发表于 2019-12-24 22:00
有些文章提到,采用KMS方式激活win7/8的时候会去校验SLIC表,如果SLIC表完整或不存在,那么系统可以正常 ...

如果win8/8.1可用话我可以研究一下.
win10能用的话就更好了

点评

我明天找时间装个win8.1验证一下  详情 回复 发表于 2019-12-24 22:27
pky317 发表于 2019-12-24 22:00:03

有些文章提到,采用KMS方式激活win7/8的时候会去校验SLIC表,如果SLIC表完整或不存在,那么系统可以正常激活。不过有些品牌机内置了一个残缺的SLIC表,导致kms激活失败,据说win10不受影响。如果增加一个slic模块,对一些坚守win7的朋友来说是好事。
w大如果有兴趣又有时间,不妨研究一下,下面是grub4dos的SLIC补丁源码:
https://github.com/liudongmiao/grub4dos-patch

点评

如果win8/8.1可用话我可以研究一下. win10能用的话就更好了  详情 回复 发表于 2019-12-24 22:09
ge 发表于 2019-12-23 16:09:53

经IT之家探索测试后,发现了以下可行的方法。有此需求的朋友们可以参考下面的方法来操作:
1、在你正在使用的Win7/Win8.1系统中(注意,要确保系统已经激活)打开下载的Win10 ISO镜像,在Sources文件夹中找到gatherosstate.exe程序,把它复制到桌面。
提示:Win7系统下可使用魔方虚拟光驱(点此下载)打开ISO镜像。
2、双击gatherosstate.exe,稍后会在桌面生成名为GenuineTicket.xml的文件(名字翻译过来就是“正版通行证”),这份文件至关重要,把它保存好。
3、然后用你熟悉的安装方法安装Win10吧。U盘法、硬盘法、光盘法,随你选。但要注意一定要确保安装前后系统版本相对应,参考《Win10正式版版本这么多,我到底该下载哪一个?》。安装过程中跳过一切密钥输入步骤。
4、安装完成后,打开C:\ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket文件夹(注意ProgramData为隐藏文件夹),然后把保存的GenuineTicket.xml文件复制到这个目录中。
5、重启电脑,确保系统已联网,稍后就会自动激活了。你也可以在系统属性中手动点击“立即激活”。
ge 发表于 2019-12-23 16:08:57

能激活7就可以了
wintoflash 发表于 2019-12-23 10:11:47
ge 发表于 2019-12-23 07:55
有办法将SLIC集成到里面吗?类似于XORBOOT UEFI版?

SLIC能激活win10不?

点评

有些文章提到,采用KMS方式激活win7/8的时候会去校验SLIC表,如果SLIC表完整或不存在,那么系统可以正常激活。不过有些品牌机内置了一个残缺的SLIC表,导致kms激活失败,据说win10不受影响。如果增加一个slic模块,  详情 回复 发表于 2019-12-24 22:00
ge 发表于 2019-12-23 07:55:33
有办法将SLIC集成到里面吗?类似于XORBOOT UEFI版?

点评

SLIC能激活win10不?  详情 回复 发表于 2019-12-23 10:11
ahxx 发表于 2019-12-22 23:25:00
非常感谢楼主分享,&#128591;
ahxx 发表于 2019-12-22 23:24:49
这么晚才看到教程,我白注册这么早论坛了
langyun 发表于 2019-12-12 08:30:11
UEFI怎么启动ISO呢?
langyun 发表于 2019-11-7 09:06:06
想要做一个GRUB2,双启动的U盘,下载了你的附件
为什么第一步就出错了

2012-07-26_103731.jpg (80.8 KB, 下载次数: 223)

2012-07-26_103731.jpg

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 04:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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