无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 10119|回复: 34
打印 上一主题 下一主题

[讨论] 现有ESP太小无法安装PE怎么办

  [复制链接]
跳转到指定楼层
1#
发表于 2020-2-15 16:13:35 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hhh333 于 2020-2-17 11:53 编辑

如题,想把PE安装到硬盘,没找到好办法,只能扩容调整分区大小。哪个有更好的办法?
这个是有限制的:现有机器EFI启动ESP+GPT磁盘,ESP为100M大小FAT16,要求不改变EFI启动,不损伤GPT分区中的系统。EFI方式从ESP启动,也没办法启动其他分区的PE,SecureBoot打开情况下也不能换其他启动器。

我目前想到的办法是:
1、进PE后把ESP分区文件备份,
2、无损调整分区大小,把ESP分区调到约5G,改用FAT32格式化
3、恢复ESP中文件,将PE安装到这个区。

==确实是我弄错了===
是可以从ESP启动,PE放系统分区的,但要编辑ESP中的BCD指定文件在哪个分区,而且也必须在指定boot.sdi放在哪个分区,前面说不行,可能是忘记定义这个文件放哪个区了,默认是启动区,如果启动区没有这个文件就不能启动。
但总之放ESP还是显得干净和安全些吧。


==哈哈,辛苦大家进来看,既然来了就共享一个批处理给大家,编了半个下午==
  1. @Echo Off
  2. REM RP为PE安装的目标盘
  3. IF "%1" NEQ "" GOTO BEGIN

  4. :HELP
  5. ECHO.
  6. ECHO 参数格式:
  7. ECHO     本程序 <内核完整路径及名称> [PE名称即在菜单中出现的条目如:我的Win1064_efi_PE,可以省略]
  8. ECHO.
  9. GOTO END

  10. :BEGIN
  11. if not exist %1 ECHO 内核文件%1不存在&GOTO HELP
  12. if not exist %~dp1\boot.sdi ECHO 内核文件%~dp1\boot.sdi不存在&GOTO HELP
  13. set RP=%~d1
  14. SET PECORE=%~pnx1
  15. SET sdipath=%~p1boot.sdi
  16. SET LDRITEM=%2
  17. if "%LDRITEM%"=="" SET LDRITEM=%~n1 EFI

  18. SET EFIBCDIR=EFI\Microsoft\Boot
  19. SET sdidevice=partition=%RP%
  20. SET pedevice=[%RP%]
  21. SET bcddir=C:\%EFIBCDIR%

  22. Echo.
  23. Echo ----------→开始处理NT6 EFI(C:\%EFIBCDIR%\bcd)启动菜单.....
  24. Echo.
  25. set EDBCD=bcdedit /store %bcddir%\BCD
  26. copy %bcddir%\bcd %bcddir%\BCD.BAK /y
  27. if errorlevel 1 set EDBCD=bcdedit
  28. if not exist %bcddir%\BCD.BAK %EDBCD% /export "%bcddir%\BCD.BAK" >nul
  29. %EDBCD% /create {ramdiskoptions} >nul
  30. %EDBCD% /set {ramdiskoptions} ramdisksdidevice %sdidevice% >nul
  31. %EDBCD% /set {ramdiskoptions} ramdisksdipath %sdipath% >nul

  32. rem 建立启动项
  33. set vid=
  34. %EDBCD% >%RP%\bcdtemp.txt
  35. type %RP%\bcdtemp.txt|find /I "%PECORE%" >nul &&Goto END
  36. %EDBCD% /create /d "%LDRITEM%" /application osloader >%RP%\bcdtemp.txt
  37. for,/f,"tokens=2 delims={",%%i,In (%RP%\bcdtemp.txt) Do set vida=%%i
  38. for,/f,"tokens=1 delims=}",%%i,In ("%vida%") Do set vid={%%i}
  39. echo %vid%>>%RP%\h3_vid.ini
  40. %EDBCD% /set %vid% device ramdisk=%pedevice%\BOOT\%PECORE%,{ramdiskoptions}
  41. %EDBCD% /set %vid% osdevice ramdisk=%pedevice%\BOOT\%PECORE%,{ramdiskoptions}
  42. %EDBCD% /set %vid% path \Windows\System32\boot\winload.efi
  43. %EDBCD% /set %vid% systemroot \Windows
  44. %EDBCD% /set %vid% locale zh-CN
  45. %EDBCD% /set %vid% testsigning Yes
  46. %EDBCD% /set %vid% detecthal Yes
  47. %EDBCD% /set %vid% winpe Yes
  48. %EDBCD% /displayorder %vid% /addlast >nul
  49. del /Q %RP%\bcdtemp.txt

  50. :END
复制代码
在PE下用,不用再编辑ESP区的BCD了,把内核文件拖到这上面就可以了,boot.sdi要与内核放一个地方。


2#
 楼主| 发表于 2020-2-16 12:27:19 | 显示全部楼层
yigeren 发表于 2020-2-16 11:58
简单明了,PE系统就一个boot文件夹

你这个不放ESP就会找不到。

点评

目的就是要存放ESP目录里面,省心  详情 回复 发表于 2020-2-16 13:54
回复

使用道具 举报

3#
 楼主| 发表于 2020-2-16 12:32:49 | 显示全部楼层
窄口牛 发表于 2020-2-16 12:24
他还用你教,只是一下蒙住忘了而已,反正我不相信。

新冠把人都搞瞢了。不过还可深挖一下:在PE下部署PE到非启动分区,如何写启动分区BCD的批处理脚本?
回复

使用道具 举报

4#
 楼主| 发表于 2020-2-16 21:24:49 | 显示全部楼层
窄口牛 发表于 2020-2-16 14:22
不要写winload.efi,就可以不管是efi还是legacy启动,只需要给bcd知道wim的位置和sdi的位置就可以了,你用p ...

写好了,放在首页,把我累的。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-8 18:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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