无忧启动论坛

标题: 不用工具两步制作免格式化的Linux+winpe多启动U盘 [打印本页]

作者: yty    时间: 2020-2-19 19:08
标题: 不用工具两步制作免格式化的Linux+winpe多启动U盘
前言:我之前没用过Linux,是最近给iPhone7的ios13.3.1系统越狱接触到的。搜索到了一篇制作Linux启动U盘,然后在Linux环境下用checkra1n软件越狱的文章,其楼主提供了一个安装好checkra1n的小型Linux的ISO,因为这是不完美越狱以后每次重启iPhone都要U盘启动Linux重越一次,所以要保留这个Linux的启动U盘,而我又想在同一块U盘上做一个winpe后续维护和安装Windows,这就有了收集资料完成的这篇文章。新人一个,权当记录已被以后查看。按照下面红字操作即可,蓝字为我有疑惑的部分,留待以后验证,欢迎论指教

平台:Windows
工具:下载的小型Linux的ISO
          微pe制作的windowsPE的iso
原理:先安装小型Linux后安装WindowsPE,在Linux的引导文件grub.cfg中添加WindowsPE的启动项bootx64.efi的路径
步骤:
1.将两个ISO按先Linux后winpe的顺序先后解压到U盘根目录,并重命名同名文件BOOTx64.EFI为BOOTx642.EFI(这就是WindowsPE的引导文件)
(因先有Linux平台的同名文件夹下的同名文件EFI/boot/BOOTx64.EFI,所以解压微pe时需将windows平台的BOOTx64.EFI重命名。Linux下的这个同名BOOTx64.EFI文件是不是引导Linux必须的?可不可以覆盖?)
(如有多个同名文件,则重命名文件夹,在下一步填写这个文件夹路径)
2.打开boot/grub/grub.cfg(这是Linux的引导文件)
找到下面的代码:


menuentry......
......
......
}

(中间省略部分为原有Linux启动项)
在该项结尾处另起一行添加windowsPE的引导项并保存:


menuentry "Windows PE" --class=windows  --hotkey=1 {
    chainloader /EFI/boot/BOOTx642.EFI
}

(路径填写上一步解压并重命名的WindowsPE引导文件的位置)
完。

PS.解压到U盘根目录一般就不会出现下面的错误提示:
如果引导PE时,提示缺少bcd文件,则需要确保bcd文件存放路径是U盘盘符\EFI\MICROSOFT\BOOT\bcd(这个路径是以微pe为例,不知道其他PE如何,是不是统一规定好的?
(如果还是出错,则需要确保设备文件WEPE64.WIM镜像存放在符合BCD记录的对应位置?以微pe为例,BCD记录路径为\WEPE\WEPE64.WIM,可以通过用bootice软件-bcd编辑-其他BCD文件-打开U盘下的BCD文件-智能编辑模式,来查看记录的路径)(或者也可以编辑BCD重新指定wim镜像的路径?


作者: 从此消失    时间: 2020-2-19 20:19
楼主的小linux是哪来的?可否分享

作者: yty    时间: 2020-2-19 20:30
我在这个帖子下的 https://www.feng.com/post/12896620 这是整合checkra1n用来给iPhone越狱的,没有多少其他软件,不推荐越狱以外用途
作者: hilsonma    时间: 2020-2-20 00:37
本帖最后由 hilsonma 于 2020-2-20 00:38 编辑
Linux下的这个同名BOOTx64.EFI文件是不是引导Linux必须的?可不可以覆盖?

linux下的这个bootx64.efi是引导linux的启动文件,不能用windows下的bootx64.efi覆盖
可以用其他grub2的启动文件覆盖,但要确认使用/boot/grub/grub.cfg配置引导,或者重新配置引导
如果引导PE时,提示缺少bcd文件,则需要确保bcd文件存放路径是U盘盘符\EFI\MICROSOFT\BOOT\bcd(这个路径是以微pe为例,不知道其他PE如何,是不是统一规定好的?)

微软的bootx64.efi (实际就是bootmgfw.efi)默认bcd文件存放路径为跟bootx64.efi 同一个文件夹,或者同一个分区下的 \efi\microsoft\boot\bcd
需要确保设备文件WEPE64.WIM镜像存放在符合BCD记录的对应位置?

那是肯定的
或者也可以编辑BCD重新指定wim镜像的路径?

是的,可以编辑bcd重新指定wim镜像的路径。
总之bcd指定的wim路径与实际wim的路径要一到致,bcd文件要跟efi文件同一个文件夹或在同一个分区的\efi\microsoft\boot


你这个免格式化启动的前提是u盘分区是主板支持的文件系统,目前一般是只支持fat格式的,如果你的u盘是ntfs格式而不是fat32格式,那就只有部分主板支持,目前很多主板还是不支持的。
作者: yty    时间: 2020-2-20 01:07
谢谢楼上的细致解答,终于明白了,比我自己到处查资料、尝试好很多,作为自己一个人偶尔用的U盘也足够了
作者: hilsonma    时间: 2020-2-20 01:27
本帖最后由 hilsonma 于 2020-2-20 01:38 编辑
yty 发表于 2020-2-20 01:07
谢谢楼上的细致解答,终于明白了,比我自己到处查资料、尝试好很多,作为自己一个人偶尔用的U盘也足够了

我刚才试过,你这个linux可以只提取casper 和preseed 这两个文件夹到u盘根目录
然后grub2如下引导:
search -n -s -f /casper/vmlinuz
linux /casper/vmlinuz file=/cdrom/preseed/custom.seed boot=casper iso-scan/filename=${iso_path} quiet splash --
initrd /casper/initrd.gz

附件是我的启动方案,将附件的efi 和 pe 这两个文件夹提取放到u盘根目录
将你这个linux 也提取 casper 和 preseed 这两个文件夹放到u盘根目录
再将你喜欢的pe wim镜像改名为pe.wim 放到u盘根目录
就可以用这个u盘启动,菜单第一项进windows,第二项进pe,第三项进u盘pe目录自动菜单,选择CheckRa1n.cfg就会进你的linux.
u.7z (953.31 KB, 下载次数: 17)
作者: 窄口牛    时间: 2020-2-20 07:31
lubuntu这么小,有点意思,下来看看。
作者: yty    时间: 2020-2-20 14:43
hilsonma 发表于 2020-2-20 01:27
我刚才试过,你这个linux可以只提取casper 和preseed 这两个文件夹到u盘根目录
然后grub2如下引导:
se ...

按照兄台的方式成功进入u盘上的pe和Linux,更加精简。但无法进入硬盘的win10,

选择0.Windows
出现/Windows/boot/efi/bootmgfw.efi
选择后出现3行选项
memdisk
loop
hd0,gpt1
分别点进去要么是循环,要么是浏览U盘,应该怎么启动Windows?

grub.cfg和BOOTx64.EFI之间是什么关系,只有BOOTx64.EFI没有grub.cfg也能引导吗?

如果我想修改grub菜单,比如删掉第一项的进Windows,是编辑BOOTx64.EFI文件吗,用什么软件方便编辑呢?如果需要更加精深的知识就算了
作者: hilsonma    时间: 2020-2-20 20:06
本帖最后由 hilsonma 于 2020-2-20 20:16 编辑
yty 发表于 2020-2-20 14:43
按照兄台的方式成功进入u盘上的pe和Linux,更加精简。但无法进入硬盘的win10,

选择0.Windows

我忘记了一个文件
把附件的bcd提取出来放到win10所在分区的 \Windows\Boot\EFI\ 就可以了。
bcd.7z (977 Bytes, 下载次数: 7)

grub.cfg 是grub2的bootx64.efi 的配置文件
只有bootx64.efi没有grub.cfg是因为我把grub.cfg封装到bootx64.efi了,生成了一个单文件的bootx64.efi
参见http://bbs.wuyou.net/forum.php?mod=viewthread&tid=418534

封装成单文件别人无法修改,没有封装的grub.cfg才可以修改。
要修改的请使用下面这个没有封装的(用附件的efi文件夹代替之前的efi文件夹)
efi.7z (822.76 KB, 下载次数: 33)
你之前看到的loop里的内容,就是封装的内容,跟efi.7z里\efi\grub文件夹里的内容是一样的。
用没有封装的版本就看不到memdisk 和 loop ,这两个是grub2 临时生成的内存盘(虚拟盘)。
作者: hilsonma    时间: 2020-2-20 20:30
yty 发表于 2020-2-20 14:43
按照兄台的方式成功进入u盘上的pe和Linux,更加精简。但无法进入硬盘的win10,

选择0.Windows

不对,按你反馈的情况,只出现3行
memdisk
loop
hd0,gpt1
那就是没有识别到Win10分区
你选择hd0,gpt1这项看内容是不是硬盘的efi分区
是的话应该有efi文件夹
下来有microsoft
再下来boot
再下来bootmgfw.efi
选中bootmgfw.efi也能进win10
如果是这种情况的话那我这个启动方案不是很适合你用,请改用其他方案。
作者: yty    时间: 2020-2-20 21:54
hilsonma 发表于 2020-2-20 20:30
不对,按你反馈的情况,只出现3行
memdisk
loop

我是固态硬盘,不知道有没有关系。尝试几次,感觉可能和win10的快速启动有关。

开启微软休眠、快速启动功能,这时候重启用U盘启动进入grub,选择

0.Windows>>/Windows/boot/efi/bootmgfw.efi>>能识别U盘和硬盘的盘符列表,
然后得手动一层层进入C:\Windows\Boot\EFI目录选择bootmgfw.efi启动硬盘的win10,
理想情况是不是点击这一项就自动进入系统?

而如果彻底关机,再用U盘启动,就识别不出硬盘。
作者: yty    时间: 2020-2-20 21:57
yty 发表于 2020-2-20 21:54
我是固态硬盘,不知道有没有关系。尝试几次,感觉可能和win10的快速启动有关。

开启微软休眠、快速启 ...

能修改启动项就已经达到我的目标了,要进win10在grub里重启然后拔掉U盘也一样。
作者: sleet    时间: 2020-2-20 22:11
谢谢楼主分享         




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