无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: Jvcon

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

  [复制链接]
发表于 2017-3-2 10:16:24 | 显示全部楼层 |阅读模式
本帖最后由 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之后,又提示如图情况。
请问各位大大,该如何解决?
新建截图-20170302101146.jpg
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启动关系和目录架构
  1. Grub2
  2. ---Grub 2 File Manager
  3. =========
  4. ---ArchLinux LiveCD
  5. ---Ubuntu LiveCD
  6. ---CentOS LiveCD
  7. =========
  8. ---Win7 iso
  9. ---Win8 iso
  10. ---Win10 iso
  11. =========
  12. ---bootmgr
  13. ------Win10PE
  14. ------03PE(网启)
  15. ------Win8 VHD
  16. =========
  17. ---引导本机系统
复制代码


参考
发表于 2017-3-2 10:26:38 | 显示全部楼层
这个要找wintoflash大神,他是GURB2的老大。
回复

使用道具 举报

 楼主| 发表于 2017-3-2 10:51:13 | 显示全部楼层
wintoflash大神在哪里??求指教

点评

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

使用道具 举报

发表于 2017-3-2 11:18:57 | 显示全部楼层
Jvcon 发表于 2017-3-2 10:51
wintoflash大神在哪里??求指教

贴一下你的定制命令吧
回复

使用道具 举报

 楼主| 发表于 2017-3-2 17:33:34 | 显示全部楼层
wintoflash 发表于 2017-3-2 11:18
贴一下你的定制命令吧

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

这一部分是mkimage的指令
  1. 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
  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.tar是不是没有放对位置。  详情 回复 发表于 2017-3-2 19:56
回复

使用道具 举报

发表于 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和哪个合并的?
回复

使用道具 举报

 楼主| 发表于 2017-3-3 11:28:26 | 显示全部楼层
wintoflash 发表于 2017-3-2 19:56
你的memdisk.tar是不是没有放对位置。

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

使用道具 举报

 楼主| 发表于 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写入磁盘,这样启动成功率相对较高。
回复

使用道具 举报

发表于 2017-3-3 12:29:07 | 显示全部楼层
snipaste20170303_122709.png
一开始搜索的是($root)/boot/grub/grub-bios.cfg,但是最终加载的是(memdisk)/boot/grub/grub.cfg,多此一举吧。你的memdisk里面是不是没有grub.cfg?
回复

使用道具 举报

 楼主| 发表于 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 来自手机 | 显示全部楼层
定制部分细节问题得看老大的指导
回复

使用道具 举报

 楼主| 发表于 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里面的代码是直接这样的:
  1. normal (memdisk)/boot/grub/grub.cfg
复制代码
回复

使用道具 举报

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

点评

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

使用道具 举报

 楼主| 发表于 2017-3-4 13:45:40 | 显示全部楼层
wsgdmzr 发表于 2017-3-3 16:28
支持定制折腾,可是当你折腾好后你会发现你定制的GRUB2无法通过Secure Boot关卡,这问题令人很尴尬。


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

点评

我目前用深度的EFI文件,可通过安全启动。  详情 回复 发表于 2017-3-4 22:16
回复

使用道具 举报

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

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

点评

W大,GRUB2签名后引导LINUX可安全通过,但一旦要引导WINPE(我指的是光盘引导) 中间隔着SHELL,却无法通过安全启动,这要如何解决,请指教啊W大。  详情 回复 发表于 2017-3-4 22:14
回复

使用道具 举报

发表于 2017-3-4 22:14:17 | 显示全部楼层
wintoflash 发表于 2017-3-4 15:09
想通过secure boot还是比较容易的,自己签名就行。

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

点评

chainload 其他的 efi 当然不能通过安全启动啦,否则“安全启动”就形同虚设了。 可以用同一个key给shell签名。  详情 回复 发表于 2017-3-4 22:41
回复

使用道具 举报

发表于 2017-3-4 22:16:21 | 显示全部楼层
Jvcon 发表于 2017-3-4 13:45
好像发现论坛里有能通过secure boot的压缩包~??请指教

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

使用道具 举报

发表于 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?m ... &fromuid=487838

点评

只是想把你定制的LINUX跟PE完美的合盘,没曾想会如此的复杂。  详情 回复 发表于 2017-3-4 23:22
可是这样一来就只能给自已的电脑用了,这样的PE就变得毫无意义。  详情 回复 发表于 2017-3-4 23:19
回复

使用道具 举报

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

可以用同一个key给 ...

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

点评

shim.efi重命名为bootx64.efi,复制MokManager.efi到/efi/boot/,将grub的efi文件命名为grubx64.efi,复制到/efi/boot/,将证书复制到/efi/boot/。 shim会首先检验grubx64.efi的证书。如果证书不在安全启动列表里,  详情 回复 发表于 2017-3-5 09:04
回复

使用道具 举报

发表于 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 来自手机 | 显示全部楼层
但对于这个,我目前还没有证据可以确认。
回复

使用道具 举报

发表于 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了。这个方法不只限于自己的机器。
回复

使用道具 举报

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

使用道具 举报

发表于 2017-7-23 10:00:37 | 显示全部楼层
请问楼主下载源代码后在windows下怎么编译?用什么软件呀?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 23:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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