无忧启动论坛

标题: =====GRUB2_EFI&BIOS双启动===== [打印本页]

作者: 2012angelkyo    时间: 2016-3-4 02:11
标题: =====GRUB2_EFI&BIOS双启动=====
本帖最后由 2012angelkyo 于 2016-11-26 22:44 编辑


grub2 EFI
和BIOS双启动制作说明:
1.首先格式化需要制作成双启动磁盘的第一个分区为FAT32格式
2.然后打开Bootice,选择好磁盘后,点主引导记录—恢复—选择恢复文件g2ldr.mbr,点击恢复。.

为以防万一,恢复之前可先备份一下:

3.复制压缩包里的2个文件夹到第一步所格式化的那个分区里。

4.制作完成。
对于BIOS已经可以启动GRUB2了,BIOS的菜单文件为\boot\grub\grub-bios.cfg
用Notepad++打开自行修改添加你的启动项,不懂的请自行百度
不要用Windows的文本编辑它,会改变它的编码,那就无法启动了。
对于UEFI主板,只需要把EFI文件夹放到EFI分区里,然后用Bootice添加一个启动项。
首先用CMD命令行(管理员权限)的diskpart命令挂载你的EFI分区,如何挂载自行百度。
然后:

Done.
目录结构说明

目录名,文件名,请不要乱改。
你能改的只能是grub-bios.cfg这个菜单的内容。这是BIOS主板的启动菜单。
grub-efi-64.cfg,这是UEFI主板的启动菜单。
重要的事情再说一遍,请用Notepad++修改它们的内容,添加你的启动项。
你下载的主题包,解压后的文件夹,放在/boot/grub/themes下面,然后修改启动菜单就能就能更换主题了。

比如你下载的主题解压后文件夹名字为StylishDark,那么只需要将上图箭头部份的Vimix修改为StylishDark就行了。
链接:http://pan.baidu.com/s/1i56ZIz7 密码:vcts




作者: 2012angelkyo    时间: 2016-3-4 02:20
本帖最后由 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&cpio_windows.7z (639.09 KB, 下载次数: 340)





作者: 2012angelkyo    时间: 2016-3-4 02:26
本帖最后由 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版一样,看楼上。。。




作者: shan    时间: 2016-3-4 09:39
顶帖子,谢谢分享技术,
作者: dfswb    时间: 2016-3-4 10:13
顶,好帖,这个版块太安静了!
作者: boy6585948    时间: 2016-3-4 11:37
LZ给力啊!!GRUB2什么时候可以跟G4D一样强大呢???
作者: 2011cwj6958    时间: 2016-3-4 13:53
先赞一个,一个与众不同的模板,目录结构简单清爽。
提个建议,BIOS版能直接引导g2ldr.mbr文件就更加方便
作者: 2012angelkyo    时间: 2016-3-4 15:01
2011cwj6958 发表于 2016-3-4 13:53
先赞一个,一个与众不同的模板,目录结构简单清爽。
提个建议,BIOS版能直接引导g2ldr.mbr文件就更加方便

可以啊,菜单里自己添加一个启动项呗。。。
作者: 2011cwj6958    时间: 2016-3-4 16:04
本帖最后由 2011cwj6958 于 2016-3-4 16:23 编辑

我的意思是用其他的引导比如Windows的bcd或者 Grub4DOS的grldr,直接引导g2ldr.mbr文件 换句话说就是不修改原来引导的从其他的引导环境进入grub2,
作者: 2011cwj6958    时间: 2016-3-4 16:04
2012angelkyo 发表于 2016-3-4 15:01
可以啊,菜单里自己添加一个启动项呗。。。

我的意思是用其他的引导比如Windows的bcd或者 Grub4DOS的grldr,直接引导g2ldr.mbr文件
作者: sysop    时间: 2016-3-4 19:21
貌似不错哦
作者: 2013qiuwei0209    时间: 2016-4-8 11:19
用了下,虚拟机里面没有问题,实机测试的时候引导PE花屏!!! 又用了神雕的winly,没有出现花屏现象

作者: 2013qiuwei0209    时间: 2016-4-8 11:19
用了下,虚拟机里面没有问题,实机测试的时候引导PE花屏!!! 又用了神雕的winly,没有出现花屏现象

作者: wt5002    时间: 2016-4-17 18:23
专门注册来感谢楼主的。非常好的在windows下定制grub2的范例。
作者: wt5002    时间: 2016-4-17 18:26
2011cwj6958 发表于 2016-3-4 16:04
我的意思是用其他的引导比如Windows的bcd或者 Grub4DOS的grldr,直接引导g2ldr.mbr文件

实测BCD和Grub4DOS可以引导压缩包中的g2ldr.mbr
作者: wdtx    时间: 2016-4-26 13:22
谢谢提供
作者: 黎小兵    时间: 2016-4-26 16:02
我试试,老是不行啊
作者: 黎小兵    时间: 2016-4-26 16:02
我试试,老是不行啊
作者: cannibal2008    时间: 2016-4-28 19:15
这么眼熟,楼主在恩山上做的三启动软路由也是这个界面
作者: sphicf    时间: 2016-6-6 16:27
不错不错,值得学习啊!












励志故事 li96.com
作者: huxdz    时间: 2016-6-26 13:45
好多啊,哈哈,谢谢您
作者: ql1307096    时间: 2016-7-1 11:17
请教下楼主:uefi模式下grub2引导win7失败。使用chainloader (hd0,1)/efi/microsoft/boot/bootmgfw.efi,试了一下,使用grub2引导win7的bootmgfw.efi,xorboot.efi都是失败,只能引导shell.efi。然后在shell下引导win7
作者: ql1307096    时间: 2016-7-1 18:51
EFI模式使用gurb2的chainloader能启动win10吗?我的电脑启动不了,。
作者: wintoflash    时间: 2016-7-1 20:46
本帖最后由 wintoflash 于 2016-7-1 20:48 编辑
ql1307096 发表于 2016-7-1 11:17
请教下楼主:uefi模式下grub2引导win7失败。使用chainloader (hd0,1)/efi/microsoft/boot/bootmgfw.efi,试 ...


路径写错了。grub2的分区表示方法和grub4dos不一样。
应该为 (hd0,msdos2) (mbr分区表)
或者为 (hd0,gpt2) (gpt分区表)
作者: ql1307096    时间: 2016-7-1 21:14
wintoflash 发表于 2016-7-1 20:46
路径写错了。grub2的分区表示方法和grub4dos不一样。
应该为 (hd0,msdos2) (mbr分区表)
或者为 (hd0, ...

路径没错,可以用TAB键补全,改成(hd0,gpt1)/这样的也是一样的错误。
作者: tulongwa    时间: 2016-7-3 21:11
真希望我能看懂
作者: zyy    时间: 2016-10-14 16:13
下载看看,学习中
作者: devilma    时间: 2016-10-14 16:36

作者: sdqz10    时间: 2016-10-17 10:40
您好,你的这个作品,从任何角度,是我见过最优美的!!
作者: jnax    时间: 2016-11-4 06:09
资源已经失效,楼主能否补下资源到百度盘?多谢
作者: wangqiang108    时间: 2016-11-4 17:13
能不能更新下啊?
作者: zqjiang    时间: 2016-11-11 19:22
资源已经失效
作者: jzura    时间: 2016-11-26 06:44
请楼主继续发好贴,支持你












[url=http://191568853.qzone.qq.com]重庆民间道士道法驱邪,收徒弟[/url]
作者: shugo    时间: 2016-12-16 14:11
谢谢楼主的共享












宏纳防静电地板
作者: yunyan100    时间: 2017-9-2 21:51
lz,我看上你这个东西了,本来我是有grub4dos,下过其他的,好多文件也要放入grub,所以我不太喜欢,你这个我改了批处理,不过grub2无效,我还是用回grub,因为生成放入grub文件夹里的内容少且易看,有个问题想问下,我转到了grub4ds后,再转回grub,直接在grub4dos里转到你的g2ldr.mbr是可以的,但是转这个是正确的吗?
作者: jonixchen    时间: 2017-9-16 23:18
您好,閱讀了您發的文章([发布] =====GRUB2_EFI&BIOS双启动=====),覺得棒極了,我想把它加入到我的windows7的開機選單,方便可以給我g2ldr的檔案嗎?感謝您!
作者: daier    时间: 2017-9-19 09:20
谢谢分享!
作者: wwj402    时间: 2017-11-29 19:01
有用,感谢分享!!!
作者: lm0006    时间: 2017-11-30 22:25
本帖最后由 lm0006 于 2017-11-30 22:27 编辑

感谢分享了。
马上就引导成功了,有没有加入PEwim菜单的命令
作者: xyyit    时间: 2018-7-13 08:48
试了下界面不错,uefi正常引导,legacy+gpt恢复mbr后黑屏显示grub_闪动加载不了
作者: srneutron    时间: 2019-1-17 17:00
谢谢分享

作者: dtnetclub    时间: 2019-2-27 21:48

这是什么软件的界面啊??
作者: inxiaoxi    时间: 2019-3-25 00:04
万分感谢楼主,学习了
作者: langyun    时间: 2019-11-6 09:07
这个是最新的版本吧
现在还可以用来制作启动U盘吗?
作者: langyun    时间: 2019-11-7 09:06
想要做一个GRUB2,双启动的U盘,下载了你的附件
为什么第一步就出错了

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

2012-07-26_103731.jpg

作者: langyun    时间: 2019-12-12 08:30
UEFI怎么启动ISO呢?
作者: ahxx    时间: 2019-12-22 23:24
这么晚才看到教程,我白注册这么早论坛了
作者: ahxx    时间: 2019-12-22 23:25
非常感谢楼主分享,🙏

作者: ge    时间: 2019-12-23 07:55
有办法将SLIC集成到里面吗?类似于XORBOOT UEFI版?
作者: wintoflash    时间: 2019-12-23 10:11
ge 发表于 2019-12-23 07:55
有办法将SLIC集成到里面吗?类似于XORBOOT UEFI版?

SLIC能激活win10不?
作者: ge    时间: 2019-12-23 16:08
wintoflash 发表于 2019-12-23 10:11
SLIC能激活win10不?

能激活7就可以了
作者: ge    时间: 2019-12-23 16:09
wintoflash 发表于 2019-12-23 10:11
SLIC能激活win10不?

经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、重启电脑,确保系统已联网,稍后就会自动激活了。你也可以在系统属性中手动点击“立即激活”。
作者: pky317    时间: 2019-12-24 22:00
wintoflash 发表于 2019-12-23 10:11
SLIC能激活win10不?

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

如果win8/8.1可用话我可以研究一下.
win10能用的话就更好了
作者: pky317    时间: 2019-12-24 22:27
wintoflash 发表于 2019-12-24 22:09
如果win8/8.1可用话我可以研究一下.
win10能用的话就更好了

我明天找时间装个win8.1验证一下
作者: wintoflash    时间: 2019-12-25 12:49
pky317 发表于 2019-12-24 22:27
我明天找时间装个win8.1验证一下

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


作者: pky317    时间: 2019-12-25 13:28
wintoflash 发表于 2019-12-25 12:49
刚下了win8,安装上之后结果根本不会用,我还是用win7测试吧。
请教一下,slic 对win7版本有要 ...

对win7版本没有要求,不过还需要配合对应的数字证书和产品密钥才能激活。你可以参考一下下面的内容:
https://www.zhihu.com/question/25695388
作者: pky317    时间: 2019-12-25 14:07
wintoflash 发表于 2019-12-25 12:49
刚下了win8,安装上之后结果根本不会用,我还是用win7测试吧。
请教一下,slic 对win7版本有要 ...

如果你是测试用kms的方式激活win7,不能选旗舰版,其它版本好像都可以,专业版和企业版一定可以。
作者: pky317    时间: 2019-12-25 16:08
本帖最后由 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, 下载次数: 10)

作者: pky317    时间: 2019-12-25 16:15
本帖最后由 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试试
作者: pky317    时间: 2019-12-25 17:45
刚才在Win8.1上测试kms激活系统(BIOS中的SLIC表不完整),可以顺利激活。这说明SLIC表不完整不会影响win8.1通过kms的方式激活
作者: wintoflash    时间: 2019-12-25 21:04
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, 下载次数: 5)
grldr.tar.gz (163.28 KB, 下载次数: 4)
所以移植的模块也没用

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


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

我在虚拟机中测试,grldr和loadslic.mod都正常,实机应该也可以,或者你上传一个64位uefi的模块,我实机测试一下
作者: pky317    时间: 2019-12-26 07:56
wintoflash 发表于 2019-12-25 21:04
我也是醉了。研究了半天,发现你给我的这个loadslic源码好像没效果。
把这个补丁打到grub4dos上,用load ...

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




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


作者: wintoflash    时间: 2019-12-26 10:59
本帖最后由 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 ...上了



作者: pky317    时间: 2019-12-26 13:09
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引导即可,如果主板不支持就没办法。或者你改好后传上来让大家帮忙测试

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

测试uefi模块不必装win7,win10也可以,只需在grub下加载slic,然后进入win10,用SLIC ToolKit查看,如果模拟的slic表正常,就成功了
作者: wintoflash    时间: 2019-12-26 20:16
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=



作者: 深谷憂狼    时间: 2020-4-19 00:11
看起来好漂亮
作者: 蓝星明月    时间: 2020-7-1 20:14
谢谢!!!
作者: dawnstar    时间: 2020-11-20 10:14
赞一个。。。
作者: dawnstar    时间: 2020-11-21 16:09
请教一下,你这个grub有没有办法像江南一根葱那样的有列出电脑硬盘里面的iso、wim和img等功能,还有像文件管理器那样子,可以自由选择。
作者: 寒冰YE    时间: 2023-5-5 21:13
grldr文件乱码!!!

作者: bjaxiong    时间: 2023-5-7 22:22
有现成的压缩包,赞一个!最近想搞一搞grub




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3