Jvcon 发表于 2017-3-2 10:16:24

在移动硬盘从零开始部署grub2多启动维护盘

本帖最后由 Jvcon 于 2017-3-4 14:06 编辑

关于这个帖子:

这一个帖子是我的新人贴,一个错误把我带入grub2的世界里,同时遇到wsgdmzr、wintoflash、窄口牛的热心解答。所以打算从这里开始记录我慢慢部署自己的多启动维护盘的过程。持续龟速更新。。。(新手勿喷)

2017.03.02 这个神奇的错误
Grub新手,通过自己用命令行mkimage在windows下定制grub2,测试从bios方式启动grub2的时候,一开始提示normal模块not found,我复制了i386-pc文件夹到boot\grub之后,又提示如图情况。
请问各位大大,该如何解决?

2017.03.03 测试突然正常了
在重新将目标移动硬盘用Bootice格式化,写入选择grub2.0主引导,重写了mbr,(依然使用g2ldr,grldr的方式没有尝试)测试变得成功了。
但感觉wintoflash大大提出的定制命令问题,的确感觉有点冗余,但怎么调整,因为对grub2还不算太了解,还需要摸索,谢谢大家指点。

折腾的目标

[*]三种方式引导正常,并且能够得到一定保护
[*]引导linux镜像(livecd)
[*]启动win10pe和03PE(网络启动)
[*]可以安装windows
[*]可以引导小型的vhd
[*]可以作为临时本机系统的引导菜单,对应引导丢失的情况


Issues

[*]GPT和MBR的选择,保护分区的方法
[*]通过Secure Boot的方法


Part1 Windows下定制Grub2
1 首先下载grub2 for windows的源代码 戳这里
2 grub启动关系和目录架构
Grub2
---Grub 2 File Manager
=========
---ArchLinux LiveCD
---Ubuntu LiveCD
---CentOS LiveCD
=========
---Win7 iso
---Win8 iso
---Win10 iso
=========
---bootmgr
------Win10PE
------03PE(网启)
------Win8 VHD
=========
---引导本机系统

参考

[*]极限驱动的Windows定制Grub2
[*]2012angelkyo的===GRUB2一键定制批处理===小白必备利器!
[*]wintosflash的可以通过Secure Boot的GRUB2

wintoflash 发表于 2017-3-4 22:41:06

本帖最后由 wintoflash 于 2017-3-4 22:47 编辑

wsgdmzr 发表于 2017-3-4 22:14
W大,GRUB2签名后引导LINUX可安全通过,但一旦要引导WINPE(我指的是光盘引导) 中间隔着SHELL,却无法通 ...

chainload 其他的 efi 当然不能通过安全启动啦,否则“安全启动”就形同虚设了。

可以用同一个key给shell签名。
sbsign可以给任意efi文件签名,只是shim.efi只能加载grub2/refind的efi,其他的要通过grub2转一下.
参考:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=385353&pid=3319593&fromuid=487838

wsgdmzr 发表于 2017-3-2 10:26:38

这个要找wintoflash大神,他是GURB2的老大。

Jvcon 发表于 2017-3-2 10:51:13

{:2_127:}wintoflash大神在哪里??求指教

wintoflash 发表于 2017-3-2 11:18:57

Jvcon 发表于 2017-3-2 10:51
wintoflash大神在哪里??求指教

贴一下你的定制命令吧

Jvcon 发表于 2017-3-2 17:33:34

wintoflash 发表于 2017-3-2 11:18
贴一下你的定制命令吧

定制的方法是学习帖子windows下定制grub2的。

这一部分是mkimage的指令
grub-mkimage.exe -d i386-pc -C auto -c config.cfg -p /boot/grub -o .\out\core.img -O i386-pc -v biosdisk loopback tar part_msdos fat exfat ntfs reboot configfile normal search_fs_file
这一部分是config.cfg
search.file /boot/grub/grub-bios.cfg root
loopback memdisk /boot/grub/memdisk.tar
set prefix=(memdisk)/boot/grub
insmod part_gpt
insmod iso9660
insmod memdisk
insmod ext2
insmod blocklist
insmod echo
insmod test
insmod configfile
normal (memdisk)/boot/grub/grub.cfg

wintoflash 发表于 2017-3-2 19:56:20

Jvcon 发表于 2017-3-2 17:33
定制的方法是学习帖子windows下定制grub2的。

这一部分是mkimage的指令


你的memdisk.tar是不是没有放对位置。

窄口牛 发表于 2017-3-2 20:15:06

core.img和哪个合并的?

Jvcon 发表于 2017-3-3 11:28:26

wintoflash 发表于 2017-3-2 19:56
你的memdisk.tar是不是没有放对位置。

我的memdisk.tar放在boot\grub下,和cfg、locale、fonts那些一起

Jvcon 发表于 2017-3-3 11:28:58

窄口牛 发表于 2017-3-2 20:15
core.img和哪个合并的?

boot.img

窄口牛 发表于 2017-3-3 11:47:08

那是小规格的mbr文件,直接写入磁盘mbr的。

窄口牛 发表于 2017-3-3 11:48:50

建议core和lnxboot合并改名为grldr,然后用g4d的mbr写入磁盘,这样启动成功率相对较高。

wintoflash 发表于 2017-3-3 12:29:07


一开始搜索的是($root)/boot/grub/grub-bios.cfg,但是最终加载的是(memdisk)/boot/grub/grub.cfg,多此一举吧。你的memdisk里面是不是没有grub.cfg?

Jvcon 发表于 2017-3-3 12:34:01

窄口牛 发表于 2017-3-3 11:48
建议core和lnxboot合并改名为grldr,然后用g4d的mbr写入磁盘,这样启动成功率相对较高。

用inxboot合并吗?我试一试,g4d是什么?求普及

窄口牛 发表于 2017-3-3 12:49:52

grub4dos

窄口牛 发表于 2017-3-3 12:51:21

定制部分细节问题得看老大的指导

窄口牛 发表于 2017-3-3 12:51:30

定制部分细节问题得看老大的指导

Jvcon 发表于 2017-3-3 13:36:56

本帖最后由 Jvcon 于 2017-3-3 13:44 编辑

wintoflash 发表于 2017-3-3 12:29
一开始搜索的是($root)/boot/grub/grub-bios.cfg,但是最终加载的是(memdisk)/boot/grub/grub.cfg,多此 ...

grub-bios.dfg是以bios方式启动时加载的菜单
grub.cfg是一个判断efi64、efi32、bios三种方式对应grub-efi-64,grub-efi-32、grub-bios菜单(这一部分是参考了论坛里面小白定制的命令)

memdisk.tar主要是打包了字体、语言、i386-pc、grub.cfg,以减小大小,令整个boot\grub目录里面只有三个cfg、themes文件夹和memdisk.tar

你这么一提点,感觉好像是多余了,那么normal这一行是可以去掉的吧?

有一个,新的理解
按照小白定制的命令理解,好像search是为了定根目录,用来确定memdisk.tar所在位置,跟着三种方式都以grub.cfg为分叉点,去往不同的cfg。在efi定制的config.cfg里面的代码是直接这样的:normal (memdisk)/boot/grub/grub.cfg

wsgdmzr 发表于 2017-3-3 16:28:57

支持定制折腾,可是当你折腾好后你会发现你定制的GRUB2无法通过Secure Boot关卡,这问题令人很尴尬。

Jvcon 发表于 2017-3-4 13:45:40

wsgdmzr 发表于 2017-3-3 16:28
支持定制折腾,可是当你折腾好后你会发现你定制的GRUB2无法通过Secure Boot关卡,这问题令人很尴尬。

{:2_128:}好像发现论坛里有能通过secure boot的压缩包~??请指教

wintoflash 发表于 2017-3-4 15:09:16

wsgdmzr 发表于 2017-3-3 16:28
支持定制折腾,可是当你折腾好后你会发现你定制的GRUB2无法通过Secure Boot关卡,这问题令人很尴尬。

想通过secure boot还是比较容易的,自己签名就行。

wsgdmzr 发表于 2017-3-4 22:14:17

wintoflash 发表于 2017-3-4 15:09
想通过secure boot还是比较容易的,自己签名就行。

W大,GRUB2签名后引导LINUX可安全通过,但一旦要引导WINPE(我指的是光盘引导) 中间隔着SHELL,却无法通过安全启动,这要如何解决,请指教啊W大。

wsgdmzr 发表于 2017-3-4 22:16:21

Jvcon 发表于 2017-3-4 13:45
好像发现论坛里有能通过secure boot的压缩包~??请指教

我目前用深度的EFI文件,可通过安全启动。

wsgdmzr 发表于 2017-3-4 23:19:25

wintoflash 发表于 2017-3-4 22:41
chainload 其他的 efi 当然不能通过安全启动啦,否则“安全启动”就形同虚设了。

可以用同一个key给 ...

可是这样一来就只能给自已的电脑用了,这样的PE就变得毫无意义。

wsgdmzr 发表于 2017-3-4 23:22:41

wintoflash 发表于 2017-3-4 22:41
chainload 其他的 efi 当然不能通过安全启动啦,否则“安全启动”就形同虚设了。

可以用同一个key给 ...

只是想把你定制的LINUX跟PE完美的合盘,没曾想会如此的复杂。

窄口牛 发表于 2017-3-5 03:57:01

安全启动对于我们用户的好处几乎为0,不过真如你说定制的花屏,非定制的不花屏,倒是有点意义

窄口牛 发表于 2017-3-5 03:58:29

但对于这个,我目前还没有证据可以确认。

wintoflash 发表于 2017-3-5 09:04:17

wsgdmzr 发表于 2017-3-4 23:19
可是这样一来就只能给自已的电脑用了,这样的PE就变得毫无意义。

shim.efi重命名为bootx64.efi,复制MokManager.efi到/efi/boot/,将grub的efi文件命名为grubx64.efi,复制到/efi/boot/,将证书复制到/efi/boot/。
shim会首先检验grubx64.efi的证书。如果证书不在安全启动列表里,就加载MokManager.efi,需要用户手动导入证书。下一次启动时,就直接可以进入grub2了。这个方法不只限于自己的机器。

yunyan100 发表于 2017-6-30 16:39:55

我一直采用bootice写入引导记录,今年新的西数移动硬盘,写了grub4dos,居然和无引导记录是一样,不像你这个,还有grub识别,我的就英语提示没有启动的,efi正常(efi不能在ntfs里,我分了个esp放在这里的),所以我在想,是否是grub4dos太久,不能更上新的东西了,所以也在准备转到grub2来试下,我和hhh333(我喜欢的pe也说了,还有bootice老大,暂时没得到结论,所以也在学习grub2了,如果有bootice那样直接写入引导就好了,grub2应该兼容grub4dos吧?

chen1234wy 发表于 2017-7-23 10:00:37

请问楼主下载源代码后在windows下怎么编译?用什么软件呀?
页: [1]
查看完整版本: 在移动硬盘从零开始部署grub2多启动维护盘