无忧启动论坛

标题: 启动盘中mod处理方式和CD启动时的一些做法,不知有没有什么问题 [打印本页]

作者: 从此消失    时间: 2020-2-6 10:08
标题: 启动盘中mod处理方式和CD启动时的一些做法,不知有没有什么问题
在处理mod时,尤其放U盘时,文件太多太慢,我的做法是把mod、主题、配置之类都装进一个ISO,然后在启动文件里loopback并设置prefix

在CD启动win10pe的时候,不能直接chainbootx64efi,我做一个启动ISO,然后只包含efi启动项,启动img里放的bootx64efi和bootia32.efi,然后map该iso,目前可以正常启动pe,在安全引导下可以启动。

不知道这两种方法有没有什么问题

作者: 从此消失    时间: 2020-2-6 10:26
如果修改了BCD名称加sbpolicy也可以正常启动PE
作者: 从此消失    时间: 2020-2-6 13:13
匿名者 发表于 2020-2-6 12:05
ISO其实不太合适(文件名限制)。tar.gz或cpio.gz可能更好。

这个文件名限制指的是什么?
如果压制成这两种格式,在启动的时候怎么调用?也可以loopback?这个一直也没弄明白,我是把所有的mod包括bios和efi32和64的,还有主题,字体,配置等,不管以什么方式启动,都先会loop这个iso然后设置为prefix,启动用的ldr和efi还是另外生成的
作者: 从此消失    时间: 2020-2-6 13:38
匿名者 发表于 2020-2-6 13:34
最原始的 iso9660 规范中,ISO里面只支持 8.3 格式的文件名。
RRIP 扩展支持长度不超过255的文件名,且 ...

原来是这个样子的,想问下如果不用loopback的话,还有什么方法能在启动过程中加载并可以grub2识别?
作者: hao138    时间: 2020-2-6 14:11
都是技术活,了解了解一下。
作者: 从此消失    时间: 2020-2-6 15:40
匿名者 发表于 2020-2-6 15:05
为什么不用 loopback ?

就是一直在用loopback,想了解下还有没有其他方法
作者: 从此消失    时间: 2020-2-6 17:12
匿名者 发表于 2020-2-6 15:52
为什么要设计另外一种和loopback完全一样的命令?

说的是哦,明白了,大神就是大神,各种问题各种解决
作者: hilsonma    时间: 2020-2-6 17:59
匿名者 发表于 2020-2-6 13:34
最原始的 iso9660 规范中,ISO里面只支持 8.3 格式的文件名。
RRIP 扩展支持长度不超过255的文件名,且 ...

请教一下,gz 和 xz 的不同?

我搜到的资料是xz 压缩率比gz 好,不知你的看法怎样
还有两者的启动时间,哪个更快,还是区别不大?
看你之前的示例是使用gz,是不是你觉得gz比xz更适用?或者有什么其他原因?
作者: 从此消失    时间: 2020-2-6 19:30
匿名者 发表于 2020-2-6 18:06
xz压缩率高于gz
但是解压速度远远低于gz
为了几百kb而等上几秒,我觉得不值。

还是gz比xz好使,xz在efi32下启动失败,而gz则正常,速度上感觉gz比xz的确要快不少
作者: hhh333    时间: 2020-2-6 20:19
本帖最后由 hhh333 于 2020-2-6 20:21 编辑

你怎么安全引导?第一启是什么?我认为是不成立的。loopback并不是过安检的。
作者: 从此消失    时间: 2020-2-6 22:36
hhh333 发表于 2020-2-6 20:19
你怎么安全引导?第一启是什么?我认为是不成立的。loopback并不是过安检的。

loopback当然不能过安全引导,安全引导用的卡巴那套(自动过),32位的安全引导用的a1ive那套(手动过)
这主题也没讨论安启
作者: 从此消失    时间: 2020-2-6 22:57
匿名者 发表于 2020-2-6 22:41
h3说的应该是这个

这个时候应该已经和安启没关系了,这两个引导文件我都有修改,引导BCD改名,目前没有实体机安启测试条件,vm里可以过,再说了这个只是个研究,一般情况下都是U盘移动盘启动的,都没有光驱了,刻盘也没啥用
作者: hhh333    时间: 2020-2-7 09:25
从此消失 发表于 2020-2-6 22:57
这个时候应该已经和安启没关系了,这两个引导文件我都有修改,引导BCD改名,目前没有实体机安启测试条件 ...

1、麻烦先看清楚VM是不是打开了那个安全启动开关,而且要删除已经安装的证书;
2、我测试卡巴的那个对ISO有限制,在打开SB的状态下运行bootx64.efi是找不到光盘上的BCD的(这个已经发文有详细测试)
3、在打开SB的状态下,W大的RUN和FM都是不能启动PE.WIM,用wimboot也过不了

你所谓的过SB我是高度怀疑的。不信你把ISO发过来我测试一下。

作者: 江南一根葱    时间: 2020-2-7 11:46
hhh333 发表于 2020-2-7 09:25
1、麻烦先看清楚VM是不是打开了那个安全启动开关,而且要删除已经安装的证书;
2、我测试卡巴的那个对IS ...

开安全启动一直在启wim啊,很愉快地在启
作者: hhh333    时间: 2020-2-7 16:08
江南一根葱 发表于 2020-2-7 11:46
开安全启动一直在启wim啊,很愉快地在启

我是说光启,光盘第一启动,光盘上的PE
作者: 江南一根葱    时间: 2020-2-7 16:28
hhh333 发表于 2020-2-7 16:08
我是说光启,光盘第一启动,光盘上的PE

好像十多年没考虑过光启了。。。。没必要吧
作者: 从此消失    时间: 2020-2-7 17:51
hhh333 发表于 2020-2-7 09:25
1、麻烦先看清楚VM是不是打开了那个安全启动开关,而且要删除已经安装的证书;
2、我测试卡巴的那个对IS ...

很确定是打开SB的,而且很确定没有已经安装的证书,因为都会新建进行测试。
其一可用shell或shell模块进行加载
菜单写法(如果不加sbpolicy模块,过不了SB):
insmod sbpolicy
sbpolicy --install
insmod shell
shell --delay=0 --startup
支持文件:
需要在光启efi引导文件中放入对应的boot加载项,并且存在startup.nsh文件,文件内容示例
echo -off

set efiname64 "jr64befi"(这是64位的引导文件名,本人这样命名,可随意改,需对应放入efi引导项文件名,后缀就是efi)
set efiname32 "jr32befi"(这是32位的引导文件名,本人这样命名,可随意改,需对应放入efi引导项文件名,后缀就是efi)
echo Seach for "%efiname64%.efi"...
for %b in fs0 fs1 fs2 fs3 fs4 fs5 fs6 fs7 fs8 fs9
echo Seaching %b ...
if exist %b:\%efiname64%.efi then
echo %efiname64% found in %b:!
%b:
%efiname64%
if not %lasterror% == 0 then
%efiname32%
endif
exit
endif
endfor

其二就是本贴所写:
菜单写法(当然也需要sbpolicy模块过SB):
insmod sbpolicy
sbpolicy --install
insmod map
map --type=CD ($root)/JRKJ/efibtiso.iso

efibtiso.iso,此iso做成单efi启动,iso内容可随意,只放一个txt也可
然后efi引导文件只放bootx64和bootia32这两个efi引导文件
很确定是可以启动,而且很顺利《BCD也可以改名)

作者: hhh333    时间: 2020-2-7 22:23
本帖最后由 hhh333 于 2020-2-7 23:08 编辑
从此消失 发表于 2020-2-7 17:51
很确定是打开SB的,而且很确定没有已经安装的证书,因为都会新建进行测试。
其一可用shell或shell模块进 ...

有做好的ISO吗?能够光启的。
另外还要硬盘上没有安装,如果硬盘上有,找到的是硬盘上的BCD,不是光盘上的。

我刚才又试了一下,如果硬盘上没有安装,从光盘启动找不到光盘上的BCD。



作者: 从此消失    时间: 2020-2-8 00:03
本帖最后由 从此消失 于 2020-2-8 00:05 编辑
hhh333 发表于 2020-2-7 22:23
有做好的ISO吗?能够光启的。
另外还要硬盘上没有安装,如果硬盘上有,找到的是硬盘上的BCD,不是光盘上 ...

efibtiso.7z (1.2 MB, 下载次数: 7)

引导文件64B,32B

这就是需要改名的原因了,也可以再改

作者: hhh333    时间: 2020-2-8 09:09
本帖最后由 hhh333 于 2020-2-8 09:40 编辑
从此消失 发表于 2020-2-8 00:03
引导文件64B,32B

这就是需要改名的原因了,也可以再改

引导不了。请问是用什么打包的。你的VM莫一直是硬盘在启动。你发一个光启的ISO。
作者: 从此消失    时间: 2020-2-8 12:32
hhh333 发表于 2020-2-8 09:09
引导不了。请问是用什么打包的。你的VM莫一直是硬盘在启动。你发一个光启的ISO。

我不知道你为什么总会进到硬盘,我硬盘从单纯的分区格成fat32,再到分efi分区,都放进去bcd文件,当然是同名
怎么都进不去硬盘bcd,包括shell方式和这个map方式
下面是我的一个模板,有点粗糙,凑合着看吧
7Z分卷,去7z解压

JR_GR2TOOL.7z.001.7z (2 MB, 下载次数: 9)


JR_GR2TOOL.7z.002.7z (2 MB, 下载次数: 9) JR_GR2TOOL.7z.003.7z (2 MB, 下载次数: 11)


JR_GR2TOOL.7z.004.7z (443.83 KB, 下载次数: 9)



作者: 从此消失    时间: 2020-2-8 12:41
一个大概的环境演示,别在意细节

视频演示.7z (341.11 KB, 下载次数: 0)





作者: 从此消失    时间: 2020-2-8 12:43
这个环境,有两块硬盘,都有efi分区(和没有efi分区有fat32分区效果一样)
然后iso就是上面传的那个,里面的菜单是为示例改动,别在意细节
两块硬盘的引导文件都是原版的,未改动,里面同时有BCD和64B两个BCD,64B是从iso里复制出来稍加修改项目而来,并不能引导到硬盘里
作者: hhh333    时间: 2020-2-8 13:08
从此消失 发表于 2020-2-8 12:41
一个大概的环境演示,别在意细节

打包命令麻烦发上来,你这个不能编辑,我一直是用oscdimg打包再用ultriso编辑的
作者: hhh333    时间: 2020-2-8 14:19
已打包成功,在找原因,为什么我用另外的工具打包不行。
作者: 从此消失    时间: 2020-2-8 14:29
用oscdimg应该是不能正常启动的吧?
这个一直用的mkisofs进行打包的

作者: hhh333    时间: 2020-2-8 14:54
从此消失 发表于 2020-2-8 14:29
用oscdimg应该是不能正常启动的吧?
这个一直用的mkisofs进行打包的

两个打包都没问题,用oscdimg打包可以随便编辑。
实际上最关键的是boot\grub\grub.cfg必须要小写(包括目录和路径),我的一直是大写,定义ISO时选允许小写也不行。
作者: 从此消失    时间: 2020-2-8 15:08
用oscdimg打包bios下可以启动?
这个测试是不能启动的呀,bios也是grub2引导?
来个打包命令
作者: hhh333    时间: 2020-2-8 16:07
本帖最后由 hhh333 于 2020-2-8 16:09 编辑
从此消失 发表于 2020-2-8 15:08
用oscdimg打包bios下可以启动?
这个测试是不能启动的呀,bios也是grub2引导?
来个打包命令

H3CD.7z (1.44 MB, 下载次数: 11) 这是用你那个文件打包的,你把你的文件全放进去就可以启动,乱编辑EFI启动信息不会丢失。bios是isolinux,你可以在ultriiso换成其他的

作者: wintoflash    时间: 2020-2-8 17:33
hhh333 发表于 2020-2-8 16:07
这是用你那个文件打包的,你把你的文件全放进去就可以启动,乱编辑EFI启动信息不会丢失。bios是isolinux ...

有没有批处理脚本?
作者: 从此消失    时间: 2020-2-8 17:42
hhh333 发表于 2020-2-8 16:07
这是用你那个文件打包的,你把你的文件全放进去就可以启动,乱编辑EFI启动信息不会丢失。bios是isolinux ...

好吧,但是bios如果不是grub2就算了,其实BIOS用G4D也挺好
作者: hhh333    时间: 2020-2-8 17:47
本帖最后由 hhh333 于 2020-2-8 17:59 编辑
wintoflash 发表于 2020-2-8 17:33
有没有批处理脚本?
  1. @echo off
  2. rem 请将要打包的所有文件解包到硬盘中的一个空文件夹下再运行本批处理,
  3. rem 生成的ISO与该文件夹位于同一目录下;isoname变量定义生成的ISO文件
  4. rem 的名称。
  5. set r=-copyright http://bbs.wuyou.com -P H3
  6. set isoname=H3CD
  7. if not "%1"=="" set set isoname=%1
  8. PUSHD %~dp0
  9. SET TP=%CD%
  10. cd ..\..
  11. set isodir=%cd%
  12. For /F "tokens=1" %%i In ('DATE /T') do SET d=%%i
  13. cd %TP%
  14. cls
  15. color 3f

  16. :start
  17. set cb=
  18. set bt=
  19. set prog=H3PE EFI与BIOS双引导ISO生成程序
  20. SET LS=====================================================================
  21. SET LD=--------------------------------------------------------------------
  22. title %prog%
  23. Echo.
  24. Echo %LS%
  25. Echo                  %prog%
  26. Echo %LD%
  27. Echo.
  28. echo     请选择生成EFI的引导方式:
  29. echo.
  30. echo       [1] MS原生64/32-EFI
  31. echo       [2] Grub2接管的64/32-EFI
  32. echo       [3] rEfind接管的64/32-EFI
  33. echo       [4] xorboot接管的64/32-EFI
  34. echo       [5] shim接管的xorboot 64-EFI
  35. echo       [6] shim接管的Grub2 64-EFI
  36. echo       [7] 卡巴静默过安检再转Grub2
  37. echo       [8] Ubuntu静默过安检再转Grub2
  38. echo       [q] 退出程序
  39. echo.
  40. Echo %LD%
  41. echo     注:以上5/6可以通过Secure验证,启动时要选证书
  42. echo       如果还不能通过Secure验证,请回复第[1]项;
  43. Echo %LD%
  44. Echo      Edit by:blithewind、H3          盗版不究
  45. Echo %LS%
  46. set /p choice= 请选择 (1/2/3/4/5/6/7/8/q) ,然后按回车:
  47. if "%choice%"=="" goto start
  48. if not "%choice%"=="" set choice=%choice:~0,1%
  49. if /i "%choice%"=="1" set efifile=..\..\efi\efisys.bin
  50. if /i "%choice%"=="2" set efifile=..\..\efi\grub2.bin
  51. if /i "%choice%"=="3" set efifile=..\..\efi\refind.bin
  52. if /i "%choice%"=="4" set efifile=..\..\efi\xorboot.bin
  53. if /i "%choice%"=="5" set efifile=..\..\efi\sxorboot.bin
  54. if /i "%choice%"=="6" set efifile=..\..\efi\sgrub2.bin
  55. if /i "%choice%"=="7" set efifile=..\..\efi\skpgrub2.bin
  56. if /i "%choice%"=="8" set efifile=..\..\efi\ubtgrub2.bin
  57. if /i "%choice%"=="q" exit

  58. :OSCDIMG
  59. oscdimg -m -o -j1 -h -u1 -udfver102 -l%isoname% -bootdata:2#p0,e,bH3_MGRLD.BIN#pEF,e,b%efifile% %isodir% %isodir%\..\%isoname%.ISO

  60. pause
复制代码
打包以后再用UltraISO搞成这样的,再定义启动(bios的)就无往而不利了

这个是MK打包的,打了后就不能改了,有改动要重新打包
  1. @echo off
  2. rem 请将要打包的所有文件解包到硬盘中的一个空文件夹下再运行本批处理,
  3. rem 生成的ISO与该文件夹位于同一目录下;isoname变量定义生成的ISO文件
  4. rem 的名称。
  5. set r=-copyright http://bbs.wuyou.com -P H3
  6. set isoname=H3CD
  7. if not "%1"=="" set set isoname=%1
  8. PUSHD %~dp0
  9. SET TP=%CD%
  10. cd ..\..
  11. set isodir=%cd%
  12. For /F "tokens=1" %%i In ('DATE /T') do SET d=%%i
  13. cd %TP%
  14. cls
  15. color 3f

  16. :start
  17. set cb=
  18. set bt=
  19. set prog=H3PE EFI与BIOS双引导ISO生成程序
  20. SET LS=====================================================================
  21. SET LD=--------------------------------------------------------------------
  22. title %prog%
  23. Echo.
  24. Echo %LS%
  25. Echo                  %prog%
  26. Echo %LD%
  27. Echo.
  28. echo     请选择生成EFI的引导方式:
  29. Echo.
  30. echo         [1] MS原生64/32 EFI
  31. echo         [2] Grub2接管的64/32 EFI
  32. echo         [3] rEfind接管的64/32 EFI
  33. echo         [4] xorboot接管的64/32 EFI
  34. echo       [5] shim接管的xorboot 64-EFI
  35. echo       [6] shim接管的Grub2 64-EFI
  36. echo       [7] 卡巴静默过安检再转Grub2(不支持UDF、Joliet)
  37. echo         [q] 退出程序
  38. echo.
  39. Echo %LD%
  40. echo     注:以上5/6可以通过Secure验证,启动时要选证书
  41. echo       如果还不能通过Secure验证,请回复第[1]项;
  42. echo         此方式打包的ISO如果用UltraISO编辑将丢失EFI启动信息。
  43. Echo %LD%
  44. Echo      Edit by:blithewind、H3          盗版不究
  45. Echo %LS%
  46. set /p choice= 请选择 (1/2/3/4/5/6/7/q) ,然后按回车:
  47. if "%choice%"=="" goto start
  48. if not "%choice%"=="" set choice=%choice:~0,1%
  49. if /i "%choice%"=="1" set boot_efi=efi/efisys.bin
  50. if /i "%choice%"=="2" set boot_efi=efi/grub2.bin
  51. if /i "%choice%"=="3" set boot_efi=efi/refind.bin
  52. if /i "%choice%"=="4" set boot_efi=efi/xorboot.bin
  53. if /i "%choice%"=="5" set boot_efi=efi/sxorboot.bin
  54. if /i "%choice%"=="6" set boot_efi=efi/sgrub2.bin
  55. if /i "%choice%"=="7" set boot_efi=efi/skpgrub2.bin
  56. if /i "%choice%"=="q" exit

  57. del /q ..\..\WXPE\WINSXS\MANIFESTS\X86_MICROSOFT.TOOLS.VISUALCPLUSPLUS.RUNTIME-LIBRARIES.RESOURCES_6595B64144CCF1DF_6.0.0.0_ZH-CN_5E1FBA9C.MAN*

  58. set boot_bios=boot/ISOLINUX.BIN &&set bm=LNX
  59. set bts=-eltorito-alt-boot -b %boot_efi% -no-emul-boot

  60. rem 使用-c -boot-info-table 参数
  61. mkisofs.exe -o "%isodir%\..\%isoname%.ISO" -v -V "%isoname%" %r% -R -hide-joliet boot.catalog -J -joliet-long -U -l -gbk4dos-filenames -gbk4win-filenames -no-emul-boot -b %boot_bios% %cb% %bts% %bt% %isodir%
复制代码




作者: hhh333    时间: 2020-2-8 18:17
wintoflash 发表于 2020-2-8 17:33
有没有批处理脚本?

老大,刚才调试这个的时候,发现wimboot也挑大小写啊,有不有办法大小写无关啊。
作者: hhh333    时间: 2020-2-8 18:34
从此消失 发表于 2020-2-8 17:42
好吧,但是bios如果不是grub2就算了,其实BIOS用G4D也挺好

这个是双启,bios为g2: H3CD.7z (2.39 MB, 下载次数: 3)

作者: 从此消失    时间: 2020-2-8 20:41
hhh333 发表于 2020-2-8 18:34
这个是双启,bios为g2:

能不能告知是什么参数下生成的,这里怎么改bios就是无法以启动。
作者: 从此消失    时间: 2020-2-8 21:03
从此消失 发表于 2020-2-8 20:41
能不能告知是什么参数下生成的,这里怎么改bios就是无法以启动。

这个已经解决




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