无忧启动论坛

标题: 我这样制作启动U盘 [打印本页]

作者: hilsonma    时间: 2020-3-13 12:31
标题: 我这样制作启动U盘
本帖最后由 hilsonma 于 2020-9-12 16:40 编辑

UEFI启动U盘的制作

1.Bootice -- 使用bootice了解U盘的分区结构,确定EFI分区
    使用bootice 的分区管理来查看是否有FAT16或FAT32分区
      如果有,就把这个分区做为EFI分区,如果这个分区没有盘符就设为可见以便复制启动文件
      如果没有FAT16分区也没有FAT32分区,就使用DiskGenius建一个FAT32分区,再使用bootice设为可见

2.DiskGenius -- 如果需要改变U盘的分区结构,使用DiskGenius
    使用DG在U盘的后面建一个FAT32分区
    可设定卷标为ESP,分区大小比PE镜像稍大即可,我的PE是不到300MB,所以我的EFI分区为300MB
    所建分区为主分区,如果建不了主分区就先建逻辑分区再将逻辑分区转为主分区

3.文件资源管理器 -- 复制启动文件
    将EFI引导文件放到EFI分区
    如果原来EFI区是不可见的话就使用bootice将原数据区设为可见,EFI区会自动恢复不可见。

附件是我的启动文件,是单文件efi,内置菜单。要修改请使用单文件efi定制包
请用自己的PE镜像替换pe.wim,也可以到这里下载一个.

原附件: esp.7z (953.17 KB, 下载次数: 534)
效果图:


新附件: EFI.7z (2.13 MB, 下载次数: 239)
使用这个启动文件,只需要将PE镜像放到diy文件夹,U盘启动后会出现自动菜单。
如果不存在diy文件夹或者diy文件夹里面没有文件,就会进入grub2命令行。
效果图:



下面是制作示意图:














作者: hilsonma    时间: 2020-3-13 12:31
本帖最后由 hilsonma 于 2020-8-27 09:01 编辑

BIOS启动U盘的制作

如果电脑不支持UEFI启动,就需要制作传统启动的U盘。
传统启动U盘的制作,需要建立扇区引导。
首先了解U盘的分区结构,看第一分区的起始扇区号是什么,这样就知道分区前面有多少个扇区可以用来建立引导。
如果U盘第一分区的起始扇区号不小于16384,可以使用ud引导
如果不小于63,可以使用wee引导
如果不小于16,可以使用g4d引导
如果小于16,可以使用winnt引导
如果是0,说明是fdd格式,没有mbr,可以使用g4d作pbr引导。
以上是依照U盘原来的分区结构来建立引导,不需要调整分区结构。
如果是老电脑,以上有些引导不成功,可以考虑强制建立ud引导,如果第一分区的起始扇区号小于16384,就要调整分区结构使得第一分区前有足够8M空间用来建立ud引导。

以下是ud启动U盘的制作,需要在U盘分区前端预留8MB的ud空间,如果不喜欢这格式,可参考WEE启动U盘的制作

1.Bootice -- 使用bootice了解U盘的分区结构,确定ud空间
    使用bootice的分区管理确定u盘第一分区起始扇区为16384
      如果不是就使用DG调整U盘第一分区起始扇区为16384

2.DiskGenius -- 如果需要改变U盘的分区结构,使用DG
    使用DG调整U盘第一分区起始扇区为16384,这样0-16383扇区共8MB就空闲出来可以无损格式化成ud

3.Fbinst -- fb无损格式化并复制启动文件
    用DG预留了ud空间后就可以fbinst无损格式化并写入启动文件,可以用一个脚本完成。

附件是我的fbinst无损格式化脚本,内置菜单。
内置菜单引导的PE是任意分区根目录下的pe.wim,也可以使用自动菜单选择引导任意分区\pe中的镜像。
要修改内置菜单请使用bootice修改grldr的内置菜单,修改后重新执行无损格式化脚本。
原附件: ud.7z (2.09 MB, 下载次数: 290)
效果图:


新附件: ud.7z (2.09 MB, 下载次数: 187)
使用新附件,需要将PE镜像放到diy文件夹,U盘启动后会出现自动菜单。
如果不存在diy文件夹或者diy文件夹里面没有文件,就会进入grub for dos 命令行。
效果图:



以下是制作示意图:












作者: fulibo    时间: 2020-3-13 12:49
谢谢分享!
作者: 2010sya    时间: 2020-3-13 13:44
赞一个
作者: dmgy    时间: 2020-3-13 13:51
俺也用惯了Bootice。
作者: 我是小白    时间: 2020-3-13 16:42
直接用BOOTICE U+V2就可以分区 为啥要用DG? 我小白 望扫盲
作者: hilsonma    时间: 2020-3-13 17:04
我是小白 发表于 2020-3-13 16:42
直接用BOOTICE U+V2就可以分区 为啥要用DG? 我小白 望扫盲

bootice u+v2是重新分区并格式化,是会损坏数据的,我用DG是无损调整,不损坏数据。无需备份直接操作。

另外使用DG调整是自动扇区对齐的,我给的ud区大小16384个扇区也是扇区对齐的,应该不会影响u盘读写效率。而u+v2我不是很了解,我不确定是否会影响u盘读写。

因为我的操作是无损的,可以重复操作,无限更新,u+v2我不懂更新,但显然不能随意调整,每次调整要先备份数据,否则数据消失。
作者: xin266    时间: 2020-3-13 17:40
感觉有点高深啊
作者: 我是小白    时间: 2020-3-13 17:58
hilsonma 发表于 2020-3-13 17:04
bootice u+v2是重新分区并格式化,是会损坏数据的,我用DG是无损调整,不损坏数据。无需备份直接操作。
...

明白了 我是看论坛里的大神这样操作的也跟着操作了 优盘掉速后要怎么修复?
作者: hilsonma    时间: 2020-3-13 19:27
我是小白 发表于 2020-3-13 17:58
明白了 我是看论坛里的大神这样操作的也跟着操作了 优盘掉速后要怎么修复?

使用DG对U盘进行扇区对齐检测,如果确实是没有扇区对齐(字体红色,对齐栏目显示N),那就要备份数据后重新分区,分区时注意扇区对齐,建议使用DG重新分区,使用DG分区时默认是扇区对齐的。
作者: Liberation    时间: 2020-3-13 21:00
hilsonma 发表于 2020-3-13 19:27
使用DG对U盘进行扇区对齐检测,如果确实是没有扇区对齐(字体红色,对齐栏目显示N),那就要备份数据后重新 ...

扇区对齐可以解决掉速?
作者: hilsonma    时间: 2020-3-13 21:22
Liberation 发表于 2020-3-13 21:00
扇区对齐可以解决掉速?

如果没有对齐的话重新对齐肯定有改善,但我不能肯定是否完全解决。
作者: 2010sya    时间: 2020-3-13 21:32
hilsonma 发表于 2020-3-13 21:22
如果没有对齐的话重新对齐肯定有改善,但我不能肯定是否完全解决。

测试了下,开启Secure Boot的话,uefi方式无法启动,请问有办法解决吗?
作者: 9695    时间: 2020-3-13 21:40
手动制作启动盘,很多年前的事了
作者: hilsonma    时间: 2020-3-13 22:27
本帖最后由 hilsonma 于 2020-3-24 10:01 编辑
2010sya 发表于 2020-3-13 21:32
测试了下,开启Secure Boot的话,uefi方式无法启动,请问有办法解决吗?

开了SecureBoot不能直接引导本贴的引导文件,需要使用安全启动方案。
之前很多贴子提供了安全启动方案的,不过win10升级后也不能用了,你要一个个试,因为我没有做测试。
如果一时不知用哪个方案,不妨先试下附件这个。
(附件经试无效已删除)

使用方法:将原来的bootx64.efi改名为grubfmx64.efi
将附件4个文件提取出来跟grubfmx64.efi (原来的bootx64.efi) 放一起
重新启动后首先会进入 Shim 验证失败的界面 < ERROR >
按回车键进入shim密钥管理画面 < Shim UEFI key management >
按任意键进入mok管理画面 < perform MOK management >
选择 Enroll hash from disk 进入 < Select Binary >
选择 grubx64.efi 进入 < [Enroll MOK] >
选择 Continue 进入 < Enroll the key(s)? >
选择 Yes
在之后的菜单中选择 Reboot ,重启计算机。


作者: 2010sya    时间: 2020-3-13 23:05
hilsonma 发表于 2020-3-13 22:27
开了SecureBoot不能直接引导本贴的引导文件,需要使用安全启动方案。
之前很多贴子提供了安全启动方案的 ...

按照上述步骤试了下,可以过secure boot,也能出现引导菜单,但无法启动64pe.wim
换另一台机器,需要重复上述步骤,也无法启动64pe.wim
作者: xban    时间: 2020-3-13 23:27
谢谢分享
作者: xhan    时间: 2020-3-13 23:27
谢谢分享
作者: hilsonma    时间: 2020-3-13 23:59
本帖最后由 hilsonma 于 2020-3-24 10:03 编辑
2010sya 发表于 2020-3-13 23:05
按照上述步骤试了下,可以过secure boot,也能出现引导菜单,但无法启动64pe.wim
换另一台机器,需要重 ...

是不是原来不能出现引导菜单?
现在改名并加4个文件后能出引导菜单但不能启动pe.wim

如果是这样的话那还要加两个驱动和两个模块,请清除之前的启动文件 (\efi\boot\ 里的全部内容),然后将附件espsb.7z解压到efi分区再测试(注意用自己的pe镜像替换pe.wim),如果启动pe还有问题再尝试把 \efi\grub\run\ms\bootmgfw.efi 换成win7的(bootmgfw7.7z中的那个)。

请告知结果。
(附件经试无效已删除)





作者: 碧海蓝天    时间: 2020-3-14 00:31
这个必须支持一下
作者: 2010sya    时间: 2020-3-14 01:21
本帖最后由 2010sya 于 2020-3-14 01:24 编辑
hilsonma 发表于 2020-3-13 23:59
是不是原来不能出现引导菜单?
现在改名并加4个文件后能出引导菜单但不能启动pe.wim

非常感谢你的答复!
pe.wim还是起不来,下面分别是使用两个附件的结果:



1.jpg (65.47 KB, 下载次数: 187)

espsb.7z

espsb.7z

2.jpg (71.71 KB, 下载次数: 181)

bootmgfw7.7z

bootmgfw7.7z

作者: Liberation    时间: 2020-3-14 07:31
hilsonma 发表于 2020-3-13 21:22
如果没有对齐的话重新对齐肯定有改善,但我不能肯定是否完全解决。

谢谢回复,我试试看
作者: sounydqb    时间: 2020-3-14 09:09
多启动PE怎么制作呢
作者: hilsonma    时间: 2020-3-14 10:37
sounydqb 发表于 2020-3-14 09:09
多启动PE怎么制作呢

你说的多启动是指多种启动方式还是指多个PE?
如果是多种启动方式请告知你要哪些启动方式。
如果是多种PE你只需将各种PE镜像放在任一分区根目录下的PE目录中,然后使用我的启动方案中的第三个菜单“2.Menu /pe"就可以选择要启动的镜像进行启动。
作者: sounydqb    时间: 2020-3-14 11:47
多个PE,只需将各种PE镜像放在任一分区根目录下的PE目录中,然后使用我的启动方案中的第三个菜单“2.Menu /pe"就可以选择要启动的镜像进行启动。谢谢分享!
作者: hilsonma    时间: 2020-3-14 15:35
本帖最后由 hilsonma 于 2020-3-14 15:36 编辑
2010sya 发表于 2020-3-14 01:21
非常感谢你的答复!
pe.wim还是起不来,下面分别是使用两个附件的结果:

wintoflash回复说最新版的grub2可以,我正在下载,可惜一直下载失败,等下载完成后我更新方案给你。或者你自行下载wintoflash的最新版grub2重新生成bootx64.efi(改名grubfmx64.efi)替换到上面的启动方案中。
作者: hilsonma    时间: 2020-3-14 20:38
2010sya 发表于 2020-3-14 01:21
非常感谢你的答复!
pe.wim还是起不来,下面分别是使用两个附件的结果:

再试试这个附件,只试一台电脑就可以了,行就行,不行还是不行的。 espsb.7z (1.45 MB, 下载次数: 83)

作者: 2010sya    时间: 2020-3-14 21:04
本帖最后由 2010sya 于 2020-3-14 21:08 编辑
hilsonma 发表于 2020-3-14 20:38
再试试这个附件,只试一台电脑就可以了,行就行,不行还是不行的。

测试了2台机器,都正常了,非常感谢!

另外,帮我重新打包一个bootx64.efi吧:
. $prefix/run/run.cfg
set timeout=10
menuentry "0.Windows"  --hotkey=0 {run /Windows/Boot/EFI/bootmgfw.efi;}
menuentry "1.WinPE"    --hotkey=1 {run /pe.wim;}
menuentry "2.Menu /pe" --hotkey=2 {run /pe;}
menuentry "3.Reboot"   --hotkey=3 {reboot;}
menuentry "4.Halt"     --hotkey=4 {halt;}
要求 menuentry "2.Menu /pe" --hotkey=2 {run /pe;}
改为menuentry "2.Menu /DIY" --hotkey=2 {run /DIY;}并作为默认启动项,谢谢!



作者: hilsonma    时间: 2020-3-14 21:10
本帖最后由 hilsonma 于 2020-3-14 21:20 编辑
2010sya 发表于 2020-3-14 21:04
测试了2台机器,都正常了,非常感谢!

另外,帮我重新打包一个bootx64.efi吧:

efi+cfg
espsb.7z (1.33 MB, 下载次数: 98)


作者: hilsonma    时间: 2020-3-14 21:29
本帖最后由 hilsonma 于 2020-3-24 10:04 编辑
2010sya 发表于 2020-3-14 21:04
测试了2台机器,都正常了,非常感谢!

另外,帮我重新打包一个bootx64.efi吧:

帮我试试这个方案行不行。
(附件无效已删除)

作者: 2010sya    时间: 2020-3-14 21:54
hilsonma 发表于 2020-3-14 21:29
帮我试试这个方案行不行。

这个不行,过不了安全启动
作者: 2010sya    时间: 2020-3-14 21:56
经过测试,目前发现只有在FAT32分区的PE64.WIM能够正常启动,iso启动不了,NTFS分区的wim也启动不了!
作者: hilsonma    时间: 2020-3-14 21:56
2010sya 发表于 2020-3-14 21:54
这个不行,过不了安全启动

知道了,谢谢。
作者: hilsonma    时间: 2020-3-14 22:06
本帖最后由 hilsonma 于 2020-3-14 22:10 编辑
2010sya 发表于 2020-3-14 21:56
经过测试,目前发现只有在FAT32分区的PE64.WIM能够正常启动,iso启动不了,NTFS分区的wim也启动不了!

有什么提示吗?
将wim放到主分区看行不行,就是主分区的NTFS如C盘,不是逻辑分区的NTFS
我知道这样意义不太大,只是想证实

我现在给你的是用的ntboot模块,或者可以试试wimboot模块。

我也不知问题出在哪里。这类问题我很早之前就碰过,用xorboot或直接bootmgfw.efi 都是这样,但好象也没听别人说,只是我自己碰上,现在才看到你说这样的问题。
至于iso我也是没有办法,我试过关闭secureboot的情况下是可以启动iso的,开启secureboot不能启动iso了我就没有办法了,反正我是不用iso的,都是提取wim直接启动。

作者: ksafei    时间: 2020-3-14 22:23
本帖最后由 ksafei 于 2020-3-14 22:33 编辑
hilsonma 发表于 2020-3-14 22:06
有什么提示吗?
将wim放到主分区看行不行,就是主分区的NTFS如C盘,不是逻辑分区的NTFS
我知道这样意义 ...

1.wim无论放哪个分区用新版wimboot都可启动;
2.新版ntboot手动命令对启动盘以外NTFS分区的wim不能启动,但在W大的grubfmx中可用ntboot启动任何分区的wim;
3.iso用map无论secureboot是否开关一直都可正常启动
作者: 2010sya    时间: 2020-3-14 22:28
本帖最后由 2010sya 于 2020-3-14 22:30 编辑
hilsonma 发表于 2020-3-14 22:06
有什么提示吗?
将wim放到主分区看行不行,就是主分区的NTFS如C盘,不是逻辑分区的NTFS
我知道这样意义 ...

你说得对,wim在逻辑分区启动不了。

在mbr/gpt的NTFS主分区都可以!
作者: hilsonma    时间: 2020-3-14 22:35
ksafei 发表于 2020-3-14 22:23
1.wim无论放哪个分区用新版wimboot都可启动;
2.新版ntboot手动命令对非启动盘NTFS分区的wim不能启动, ...

现在 2010sya 用的就是我给的方案,是用 wintoflash 的最新版做的
启动wim 用的是 (下面语句$1就是wim镜像)
ntboot -e $prefix/run/ms/bootmgfw.efi -s $prefix/run/ms/boot.sdi $1;
启动iso 用的是 (下面语句$1就是iso镜像)
map $1
作者: ksafei    时间: 2020-3-14 22:43
本帖最后由 ksafei 于 2020-3-14 22:47 编辑
hilsonma 发表于 2020-3-14 22:35
现在 2010sya 用的就是我给的方案,是用 wintoflash 的最新版做的
启动wim 用的是 (下面语句$1就是wim镜 ...

你的这个run方案还没测试,上面所说的是我U盘菜单使用体会
经过W大的改进,新版map、wimboot、ntboot功能都很强大了,看你run方案中文件很少,出问题是不是与缺少mod有关

作者: hilsonma    时间: 2020-3-14 22:54
ksafei 发表于 2020-3-14 22:43
你的这个run方案还没测试,上面所说的是我U盘菜单使用体会
经过W大的改进,新版map、wimboot、ntboot功 ...

不是缺少mod的问题,mod我都集成到grubfmx64.efi中去了,少了mod的话在不在主分区都启动不了的。
我集成的模块都是wintoflash最新的模块,刚下载的。
作者: hilsonma    时间: 2020-3-14 22:57
2010sya 发表于 2020-3-14 22:28
你说得对,wim在逻辑分区启动不了。

在mbr/gpt的NTFS主分区都可以!

试一下这个方案,之前的方案是使用ntboot模块启动wim的,现在这个方案改用wimboot启动wim.
espsb_wimboot.7z (1.33 MB, 下载次数: 83)
作者: ksafei    时间: 2020-3-14 23:31
hilsonma 发表于 2020-3-14 22:57
试一下这个方案,之前的方案是使用ntboot模块启动wim的,现在这个方案改用wimboot启动wim.

刚测试,选1-pe.wim和2-diy(其他分区中wim)都报错 ....000f
作者: ksafei    时间: 2020-3-14 23:47
hilsonma 发表于 2020-3-14 22:57
试一下这个方案,之前的方案是使用ntboot模块启动wim的,现在这个方案改用wimboot启动wim.

用新版wimboot中的bootmgfw.efi、boot.sdi、bcd替换ms文件夹中,启动正常了
作者: hilsonma    时间: 2020-3-15 00:15
本帖最后由 hilsonma 于 2020-3-15 00:26 编辑
ksafei 发表于 2020-3-14 23:47
用新版wimboot中的bootmgfw.efi、boot.sdi、bcd替换ms文件夹中,启动正常了

感谢测试。我刚重启试了一下,没有secureboot也是启动失败。

新版的wimboot中的bootmgfw.efi, boot.sdi, bcd 是指哪里的,或者在这里上传一下,谢谢。

有时间的话也帮忙试一下29楼的那个方案,将你说的bootmgfw.efi 和 boot.sdi 替换到方案中,看ntboot方案是不是也能启动逻辑分区的wim。如果可以的话那就是我的方案中的bootmgfw.efi和boot.sdi的原因。

我的电脑没有办法试安全启动,wintoflash说可以vm或qemu试,我现在也没有装vm,我的qemu中没有安全启动选项。
我是用20200229的grub2版本的,刚才换成最新版一试都启动不了pe.


@wintoflash


作者: ksafei    时间: 2020-3-15 00:48
hilsonma 发表于 2020-3-15 00:15
感谢测试。我刚重启试了一下,没有secureboot也是启动失败。

新版的wimboot中的bootmgfw.efi, boot.sd ...

应该感谢你,一直在拜读你的帖子,学习中很有受益
grubfm的wimboot.gz中提取,现将bootmgfw.efi, boot.sdi, bcd打包 ms.7z (735.88 KB, 下载次数: 26)

29楼方案待测试再反馈


作者: ksafei    时间: 2020-3-15 00:52
hilsonma 发表于 2020-3-15 00:15
感谢测试。我刚重启试了一下,没有secureboot也是启动失败。

新版的wimboot中的bootmgfw.efi, boot.sd ...

0305后的grub2:  Wimboot/NTBOOT UEFI Secure Boot
作者: ksafei    时间: 2020-3-15 01:26
本帖最后由 ksafei 于 2020-3-15 01:41 编辑

29楼方案测试反馈(替换bootmgfw.efi、boot.sdi):

1.环境:secureboot开启

2.启动U盘:
   EFI区(fat32):ntboot wim+map iso 均启动正常
   数据区(ntfs):ntboot wim+map iso 均启动正常

3.硬盘gpt(ntfs):
    ntboot wim  报错0xc000000e
     map iso      启动正常




作者: wintoflash    时间: 2020-3-15 09:24
ksafei 发表于 2020-3-15 01:26
29楼方案测试反馈(替换bootmgfw.efi、boot.sdi):

1.环境:secureboot开启

grubfm 启 gpt 分区 wim (NTBOOT) 是否报错?
作者: xzst110    时间: 2020-3-15 09:36
学习了,谢谢
作者: hilsonma    时间: 2020-3-15 10:04
本帖最后由 hilsonma 于 2020-3-15 10:29 编辑
wintoflash 发表于 2020-3-15 09:24
grubfm 启 gpt 分区 wim (NTBOOT) 是否报错?

我刚下载了grubfm-zh_CN.7z,提取grubfmx64.efi 改名为bootx64.efi 放到u盘fat32分区,用此u盘开机后不论是引导esp分区的pe.wim(ntboot和wimboot都试了)还是引导c:\windows\boot\efi\bootmgfw.efi 都出现0xc000009a

grubfm的ntboot和wimboot结果


grubfm的运行 c:\windows\boot\efi\bootmgfw.efi (chain.sh)结果


用最新grub2自己生成的bootx64.efi chainloader c:\windows\boot\efi\bootmgfw.efi结果


机器信息


作者: ksafei    时间: 2020-3-15 11:27
本帖最后由 ksafei 于 2020-3-15 11:47 编辑
wintoflash 发表于 2020-3-15 09:24
grubfm 启 gpt 分区 wim (NTBOOT) 是否报错?

grubfm 启动 gpt 分区 wim (NTBOOT) 正常。
grubfm启动esp分区的 /efi/microsoft/boot/bootmgfw.efi也正常
但是,用grub2自己生成的grubx64.efi,无论ntboot gpt 分区 wim还是chainloader 引导esp分区的 /efi/microsoft/boot/bootmgfw.efi都会报错,如楼上情形

作者: wintoflash    时间: 2020-3-16 09:00
hilsonma 发表于 2020-3-15 10:04
我刚下载了grubfm-zh_CN.7z,提取grubfmx64.efi 改名为bootx64.efi 放到u盘fat32分区,用此u盘开机后不论 ...

https://support.microsoft.com/en ... ll-or-start-an-oper
作者: 2011zym0550    时间: 2020-3-16 10:04
技术贴,学习了谢谢
作者: hilsonma    时间: 2020-3-16 17:49
wintoflash 发表于 2020-3-16 09:00
https://support.microsoft.com/en-us/help/4020050/blinitializelibrary-failed-xxx-error-when-you-ins ...

谢谢。我搜到一些答案,但说的解决办法是换内存和更新bios。
奇怪的是我用20200229的grub2没有问题,用新版的就不行,我现在只好用回0229版本。





作者: wintoflash    时间: 2020-3-16 18:01
hilsonma 发表于 2020-3-16 17:49
谢谢。我搜到一些答案,但说的解决办法是换内存和更新bios。
奇怪的是我用20200229的grub2没有问题,用 ...

那只能从0229之后每天的版本都拉下来编译测试一遍。
这个错误是内存碎片过多的意思。



作者: hilsonma    时间: 2020-3-16 19:41
本帖最后由 hilsonma 于 2020-3-16 20:19 编辑
wintoflash 发表于 2020-3-16 18:01
那只能从0229之后每天的版本都拉下来编译测试一遍。
这个错误是内存碎片过多的意思。

我想做测试,但看了一下https://github.com/a1ive/grub,不知道怎么拉每天的版本,然后也不懂怎样编译
作者: wintoflash    时间: 2020-3-16 20:25
本帖最后由 wintoflash 于 2020-3-16 20:27 编辑
hilsonma 发表于 2020-3-16 19:41
我想做测试,但看了一下https://github.com/a1ive/grub,不知道怎么拉每天的版本,然后也不懂怎样编译

这个是用git做的版本管理,搜索git的用法即可。
如果不想学git的用法,可以网页操作切过去然后 git clone。
编译也不难,
./bootstrap
./configure --prefix=$HOME/PKG --target=x86_64 --with-platform=efi
make -j8 && make install
常见的 Linux 软件编译三部曲。

由于我现在完全不用windows了,所以没法自己测试。
另外最近一段时间有些事情,所以也没空写代码,如果有人愿意接手这个项目就更好了。逐版本编译测试还是比较麻烦的,很浪费时间,没时间的话还是算了吧。






作者: edit009    时间: 2020-3-17 19:21
Liberation 发表于 2020-3-13 21:00
扇区对齐可以解决掉速?

解决不了的,慢格式化可以解决一部分掉速,其他就只能量产了
作者: cbl    时间: 2020-3-17 19:51

作者: Liberation    时间: 2020-3-18 08:07
edit009 发表于 2020-3-17 19:21
解决不了的,慢格式化可以解决一部分掉速,其他就只能量产了

量产可以解决掉速?
作者: ice147bing    时间: 2020-3-18 13:00
谢谢分享!
作者: wawakuliao    时间: 2020-3-18 21:01
感谢分享
作者: 2013lucky5156    时间: 2020-3-18 23:21
学习了,以前一直很混乱,现在思路清晰了
作者: qiyuexx    时间: 2020-3-20 16:57
h大 打扰您一下  按照这个方法我是应该把efi文件夹和pe.wim放到隐藏区 还是把efi里的boot文件夹和pewim放隐藏区 我都试了 都不成功 能帮忙分析一下吗 不胜感激
作者: qiyuexx    时间: 2020-3-20 18:37
qiyuexx 发表于 2020-3-20 16:57
h大 打扰您一下  按照这个方法我是应该把efi文件夹和pe.wim放到隐藏区 还是把efi里的boot文件夹和pewim放隐 ...

已经搞定了
作者: hilsonma    时间: 2020-3-20 20:29
qiyuexx 发表于 2020-3-20 18:37
已经搞定了

搞定就好。我今天下午没有上来看所以没有及时回复。
efi文件夹放在efi分区也就是fat分区,不管是不是隐藏的。
pe.wim放efi区或数据区都可以,如果是隐藏的efi区会更好些。
当然,如果是容量小的U盘,efi区同数据区可以是同一个分区,也就是只有一个fat32分区。
这些都是看你原来的分区结构而定,也可以灵活部署。
作者: 童心学艺    时间: 2020-3-21 07:48
谢谢楼主分享!
作者: qiyuexx    时间: 2020-3-23 13:30
hilsonma 发表于 2020-3-20 20:29
搞定就好。我今天下午没有上来看所以没有及时回复。
efi文件夹放在efi分区也就是fat分区,不管是不是隐 ...

感谢h大回复
作者: 2012abc.    时间: 2020-3-25 11:41
谢谢分享
作者: qiyuexx    时间: 2020-3-25 14:06
H大 打扰您一下 有时间能不能出一个win10pe+Clonezilla合盘的教程 找了好多地方 都超级复杂 打扰了
作者: hilsonma    时间: 2020-3-25 20:37
本帖最后由 hilsonma 于 2020-3-25 21:43 编辑
qiyuexx 发表于 2020-3-25 14:06
H大 打扰您一下 有时间能不能出一个win10pe+Clonezilla合盘的教程 找了好多地方 都超级复杂 打扰了

就用1楼和2楼的启动方案,你只需将win10pe的镜像和clonezilla的镜像放到u盘(或者任意一个分区)的根目录下的pe目录中,然后使用启动方案中的第三项菜单Menu /pe 找到你要启动的镜像按回车就可以启动了。

pe镜像可以是iso也可以是wim。
clonezilla镜像是iso
如果不想要iso的光盘启动菜单,可以提取iso中的live文件夹放到u盘(或者任意一个分区)的根目录下,并在pe目录下放两个启动配置文件,uefi的可以叫做clonezilla.cfg,bios的可以叫做clonezilla.lst,要启动clonezilla时只要使用菜单Menu /pe找到相应的启动配置文件按回车就可以了。

使用启动配置文件比直接使用iso文件要复杂一点,好处是不需要选择一次iso菜单,直接进入clonezilla。(如果不提取live直接使用iso,进去iso后首先会出现一个光盘菜单的。)

附clonezilla.cfg的内容:
  1. search --set -f /live/vmlinuz
  2. linux /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 noeject locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  3. initrd /live/initrd.img
复制代码

clonezilla.lst的内容:
  1. find --set-root --devices=h /live/vmlinuz
  2. kernel /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 noeject locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  3. module /live/initrd.img
复制代码


补充一下:如果不使用clonezilla的iso镜像而提取live文件夹,在启动clonezilla的时候是要用图形终端的,1楼的引导文件是文字终端,请用附件图形引导文件代替。
esp_gfx.7z (1.96 MB, 下载次数: 37)
作者: qiyuexx    时间: 2020-3-27 09:31
hilsonma 发表于 2020-3-25 20:37
就用1楼和2楼的启动方案,你只需将win10pe的镜像和clonezilla的镜像放到u盘(或者任意一个分区)的根目录下 ...

十分感谢H大大 我按照您说的去研究一下
作者: longpanda    时间: 2020-4-8 22:56
hilsonma 发表于 2020-3-16 17:49
谢谢。我搜到一些答案,但说的解决办法是换内存和更新bios。
奇怪的是我用20200229的grub2没有问题,用 ...

这个问题是UEFI中内存碎片过多,很多时候是UEFI的BIOS或者bootloader申请释放内存的正常操作导致的。其实并不算是问题。就是Windows太矫情,碎片数超过512就会报错,Linux上面都不会管这些。本来这些内存大部分进入OS之后就是会被重新管理分配的。

这个问题也是能破的,就是比较麻烦。只简单说下,就是在启动windows之前,查看UEFI的memmap,把中间有空洞的空闲内存给申请走。这样就让整个系统中的碎片数降下来,就能过。






作者: xbwin96e    时间: 2020-4-8 23:03
需要点时间
作者: hilsonma    时间: 2020-4-8 23:09
longpanda 发表于 2020-4-8 22:56
这个问题是UEFI中内存碎片过多,很多时候是UEFI的BIOS或者bootloader申请释放内存的正常操作导致的。其实 ...
就是在启动windows之前,查看UEFI的memmap,把中间有空洞的空闲内存给申请走。这样就让整个系统中的碎片数降下来,就能过。


我不懂这些操作。有没有进一步的提示或者直接出手。
作者: longpanda    时间: 2020-4-8 23:16
hilsonma 发表于 2020-4-8 23:09
我不懂这些操作。有没有进一步的提示或者直接出手。

我最近搞Ventoy实在没时间搞,或者可以请  @wintoflash  大出手    不过这个和特定主板BIOS也有关系,而且是Windows这个矫情货,搞起来也没多大意思。
作者: hilsonma    时间: 2020-4-8 23:21
本帖最后由 hilsonma 于 2020-4-8 23:27 编辑
longpanda 发表于 2020-4-8 23:16
我最近搞Ventoy实在没时间搞,或者可以请  @wintoflash  大出手    不过这个和特定主板BIOS也有 ...

他也没那个时间,而你后面这话才更关键。

我就是一小白,你再进一步提示我该看哪些资料该学什么知识有可能解决,或者说一声现阶段我没你们那个水平就解决不了那我也好死心。


你就告诉我,需要什么知识才会“查看UEFI的memmap”,要学会什么技能才能“把中间有空洞的空闲内存给申请走”,学个十天八天或者个把月能不能达成。
作者: longpanda    时间: 2020-4-8 23:24
hilsonma 发表于 2020-4-8 23:21
他也没那个时间,而你后面这话才更关键。

我就是一小白,你再进一步提示我该看哪些资料该学什么知识有 ...

如果楼主有UEFI的基础,会写一个简单的helloworld的EDK的Application Module的话,应该是可以解决的。如果之前没有UEFI的基础,可能就有一些门槛了。而且这个问题和特定BIOS也有一定关系,那样我就建议你不要去搞了。
作者: hilsonma    时间: 2020-4-8 23:28
longpanda 发表于 2020-4-8 23:24
如果楼主有UEFI的基础,会写一个简单的helloworld的EDK的Application Module的话,应该是可以解决的。如 ...

这样说我明白了,你所说的我真的一窍不通,只能放弃了。感谢你的解答。
作者: wintoflash    时间: 2020-4-9 08:34
本帖最后由 wintoflash 于 2020-4-9 08:36 编辑
hilsonma 发表于 2020-4-8 23:28
这样说我明白了,你所说的我真的一窍不通,只能放弃了。感谢你的解答。

1) 换 Win8/8.1 的 bootmgfw.efi 试试。
2) 进 grub 控制台 执行以下命令,截图(输出有好几页)。(需要 lsefimmap 模块)
        set pager=1
        lsefimmap


作者: rstart    时间: 2020-4-9 13:53
呃现在就一个启动iso的pe写入u盘,其他的pe 扔iso目录下就可以了
作者: hilsonma    时间: 2020-4-10 07:52
本帖最后由 hilsonma 于 2020-4-10 08:29 编辑
wintoflash 发表于 2020-4-9 08:34
1) 换 Win8/8.1 的 bootmgfw.efi 试试。
2) 进 grub 控制台 执行以下命令,截图(输出有好几页)。(需要 l ...

图是截出来了,但是不会看。

看得出从b020000那一段开始不一样。最后5行是一样的。
启动失败的,573-5=568,是超过了512,但不懂哪些是空闲的,怎样申请走
启动成功的,309-5=304,是分段少了很多。


刚新下载的grub2,就是启动失败的,截图18张,共573行(纯地址段,不含表头,最后5行是总结)


。。。
。。。


之前的老版本,就是能正常启动的,截图13张,共309行(纯地址段,不含表头,最后5行是总结)


。。。
。。。

作者: wintoflash    时间: 2020-4-11 16:06
本帖最后由 wintoflash 于 2020-4-11 16:09 编辑
hilsonma 发表于 2020-4-10 07:52
图是截出来了,但是不会看。

看得出从b020000那一段开始不一样。最后5行是一样的。
你这个固件有毒啊,搞出这么多 16KB 4KB 的碎片。
fixmmap.7z (944 Bytes, 下载次数: 5)
试试这个模块。
  1. insmod /fixmmap
  2. fixmmap
复制代码

然后再执行其他的 比如启动 Windows。

此模块会占用所有小于 100MB 的可用内存片段。



作者: hilsonma    时间: 2020-4-11 16:29
wintoflash 发表于 2020-4-11 16:06
你这个固件有毒啊,搞出这么多 16KB 4KB 的碎片。

试试这个模块。

有fixmmap刷屏,但问题依旧。使用lsefimmap查看还是有18页,照样很多4k,8k16k的。
作者: wintoflash    时间: 2020-4-11 16:36
执行完 fixmmap 之后截图。
作者: hilsonma    时间: 2020-4-11 16:59
wintoflash 发表于 2020-4-11 16:36
执行完 fixmmap 之后截图。

grub.cfg里执行过fxmmap后在命令行再执行的截图:




...
...

grub.cfg里没有执行过fxmmap,在命令行执行的截图:



...
...




...
...

作者: wintoflash    时间: 2020-4-11 17:07
那就奇怪了。看起来小的片段都已经被填上了。
显示 "conv-mem" 的是可用内存。填充之后就变成了 "ldr-data"。
那我也没办法了。
作者: hilsonma    时间: 2020-4-11 18:39
wintoflash 发表于 2020-4-11 17:07
那就奇怪了。看起来小的片段都已经被填上了。
显示 "conv-mem" 的是可用内存。填充之后就变成了 "ldr-data ...

虽然没办法,还是感谢帮忙,你已经努力了,谢谢。
作者: longpanda    时间: 2020-4-12 13:30
wintoflash 发表于 2020-4-11 17:07
那就奇怪了。看起来小的片段都已经被填上了。
显示 "conv-mem" 的是可用内存。填充之后就变成了 "ldr-data ...

使用AllocatePage,以EFI_ALLOCATE_ADDRESS 指定地址,使用 EFI_BOOT_SERVICE_DATA 类型进行申请,就可以填平中间的缝隙。我早先之前是这样临时解决这个问题的。代码找不着了,我记得是这样。
作者: wintoflash    时间: 2020-4-12 14:18
longpanda 发表于 2020-4-12 13:30
使用AllocatePage,以EFI_ALLOCATE_ADDRESS 指定地址,使用 EFI_BOOT_SERVICE_DATA 类型进行申请,就可以 ...

EfiLoaderData 不行吗,非得是 EfiBootServicesData?
@hilsonma 试试? fixmmap.tar.gz (1 KB, 下载次数: 3)



作者: longpanda    时间: 2020-4-12 15:30
wintoflash 发表于 2020-4-12 14:18
EfiLoaderData 不行吗,非得是 EfiBootServicesData?
@hilsonma 试试?

loader data 和 bsdata系统不会给你合并在一起。
从前面的截图看好像也是如此
作者: hilsonma    时间: 2020-4-12 18:28
wintoflash 发表于 2020-4-12 14:18
EfiLoaderData 不行吗,非得是 EfiBootServicesData?
@hilsonma 试试?

成功启动,非常感谢!!!
终于可以用上最新版的grub2了!!!

fixmmap前lsefimmap有18页,这次fixmmap后lsefimmap只有9页,成功启动。
作者: 871127qq    时间: 2020-4-13 21:00
受益匪浅,谢谢分享
作者: 秋月云开    时间: 2020-4-13 22:27
longpanda 发表于 2020-4-8 23:24
如果楼主有UEFI的基础,会写一个简单的helloworld的EDK的Application Module的话,应该是可以解决的。如 ...

【hilsonma】谦虚的态度令人敬佩!
作者: tien7689    时间: 2020-4-20 12:26
太高深了,純推不下,小弟功力還不夠,再多逛論壇多學習後再來試試
感謝辛苦分享
作者: mxai    时间: 2020-4-21 14:52
谢谢分享。
作者: caogenwenhua    时间: 2020-4-21 15:19
学习学习!
作者: ggmm888    时间: 2020-4-23 16:22
本帖最后由 ggmm888 于 2020-4-23 16:32 编辑

.Fbinst -- fb无损格式化并复制启动文件
    用DG预留了ud空间后就可以fbinst无损格式化并写入启动文件,可以用一个脚本完成。

附件是我的fbinst无损格式化脚本,内置菜单。
内置菜单引导的PE是任意分区根目录下的pe.wim,也可以使用自动菜单选择引导任意分区\pe中的镜像。
要修改内置菜单请使用bootice修改grldr的内置菜单,修改后重新执行无损格式化脚本。
ud.7z (2.09 MB, )


上面附里的工具如何使用,在win7x64 里面无法运行,以管理员身份运行批处理,也不行

3.jpg (42.18 KB, 下载次数: 141)

3.jpg

作者: hilsonma    时间: 2020-4-23 17:15
本帖最后由 hilsonma 于 2020-4-23 17:16 编辑
ggmm888 发表于 2020-4-23 16:22
.Fbinst -- fb无损格式化并复制启动文件
    用DG预留了ud空间后就可以fbinst无损格式化并写入启动文件, ...

下载后需要解压释放文件到本地磁盘,共5个文件,放到一个文件夹后,再进入这个文件夹,点击批处理文件。

你没有解压就直接在压缩包中运行就是上图的结果。

因为在压缩包中点击批处理文件的话,默认只解压批处理文件这一个文件到临时文件夹去运行的,其余的文件并没有解压到临时文件夹,所以提示找不到fbinst,而脚本只是为了简化参数,真正起作用的还是fbinst.exe
作者: ggmm888    时间: 2020-4-23 17:26
本帖最后由 ggmm888 于 2020-4-23 17:39 编辑

我解压出来了,放到桌面操做也不行,放到无中文的文件夹中也不行
直接双击批处理文件运行,得到下图,看不到各个盘的大小,不感操作,不知选那个盘好


我要看到下面图中硬盘大小,才敢操作

4.jpg (46.67 KB, 下载次数: 138)

4.jpg

fb03.jpg (47.59 KB, 下载次数: 145)

fb03.jpg

作者: hilsonma    时间: 2020-4-23 17:42
本帖最后由 hilsonma 于 2020-4-23 17:51 编辑
ggmm888 发表于 2020-4-23 17:26
我解压出来了,放到桌面操做也不行,放到无中文的文件夹中也不行
直接双击批处理文件运行,得到下图,看不 ...

再用附件试试。我在脚本中加了句 pushd %~dp0

如果还不行你就解压到 d:\ud
然后进入cmd窗口,敲入以下命令(后面是减号和字母L)然后回车,截图看看
d:\ud\fbinst -l

ud.7z (2.09 MB, 下载次数: 30)





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