关于网络启动自动分区安装win系统的原理及步骤

Sky 2024-8-14 457 8/14

受够了二逼的PE下手动运行分区工具分区,然后运行安装工具安装系统。找了一圈没找到好用的pe下自动分区安装的工具,于是自己写个脚本并测试通过。

技术有限,暂时使用cmd写的,python的还在测试。

此示例仅限于未分区单磁盘,此示例并不包括完整的搭建过程!!

一:搭建网络启动环境准备启动文件

推荐使用pxe,ipxe,2种,多个选择好点。避免某种一启动不了。

Syslinuxs包含pxe启动文件。back.png chain.c32 ldlinux.c32 libcom32.c32 libutil.c32 lpxelinux.0  memdisk poweroff.c32 reboot.c32 vesamenu.c32 pxelinux.cfg文件夹default文件

写配置文件,其中ipxe最好自己编译一下,内置菜单。避免手动选择。

make bin/ipxe.pxe EMMBD=auto.ipxe

IPXE内置菜单示例auto.ipxe:

#!ipxe

dhcp

chain tftp://${next-server}/menu.ipxe ||chain http://${dhcp_server} /menu.ipxe

内置菜单大致意思是读取引导tftp服务器中的menu.ipxe如果没用就读取dhcp服务器中的静态文件共享服务器80端口的menu.ipxe。menu.ipxe自己按需制作。

pxe菜单,pxelinux.cfg文件夹下default文件

示例default文件镜像文件存在192.168.1.123:88,自己按需修改。

Default vesamenu.c32

Menu color border 0 #0000 #0000 none

MENU BACKGROUND back.png

Prompt 0

Timeout 1000

 

MENU TITLE High Speed Download Iso File

LABEL Boot From Http WIN10PE

MENU LABEL Boot From Http WIN10PE Network

Kernel memdisk

Append raw iso initrd=http://192.168.1.123:88/win10pe.iso

 

使用nginx或者其它搭建静态pxe或者ipxe能走http协议高速下载,

使用dnsmasq或者其它搭建tftp及dchp服务。

Windows下面有成品方案,自己搭建就行了。

总结:

网络启动必要条件运行DHCP服务的东西什么都可以,我是使用openwrt路由器,(用途:分配DHCP地址,通告tftp地址),启动文件(syslinux中提取lpxelinux.0,ipxe引导文件,引导菜单写法官方文档写的很详细,自己查看)。

非必要条件:一个跑静态文件服务的随便什么都可以,曾经用安卓手机运行过,只是速度一言难尽(运行nginx或者其它类似的,提供http高速下载pe或者其它需要的启动镜像文件使用),否则就只能使用低速的tftp协议下载所需启动镜像文件。

 

二:PE内置脚本

 

使用dism安装,命令行模式。

1:使用diskpart命令获取磁盘编号,分区。

命令行下处理档很麻烦,(示例文件仅分esp分区和C盘)大致思路如下:

diskpart  /s list.txt >diskinfo.txt (文档内容list disk)先列出磁盘,然后输出到一个diskinfo.txt,再从diskinfo.txt获取磁盘编号。作为变量写入分区的parttition.txt,partition.txt为分区脚本。实例:

select disk 0

clean

convert gpt

create partition efi size=300

format quick fs=fat32

assign letter=”S”

create partition primary size=51200

format quick fs=ntfs label="Windows"

assign letter="W"

exit

获取磁盘编号的命令:

for /f "tokens=2" %i in (k:\disklist.txt)do (set num=%i && echo select disk %num% >x:\part.txt )

 

这里有2种方法,一种是用echo > 和echo >>分批写入。另外一种是事先写好,然后比较select disk这行是否相同,不同就替换,或者直接替换。

运行diskpart /s partition.txt实现自动分区。

 

2:调用dism命令安装。

镜像目录自己想办法,网络启动直接挂载内网共享,

挂载内网4570tnetboot共享到z盘示例:

net use z: \\4570t\netboot

dism /apply-image /imagefile:z:\10.esd /index:1 /applydir:w:

 

3:使用bcdboot命令修复引导。

bcdboot w:\windows /s s: /f all /l zh-cn

如果完整的方案、配置文件或者服务端或者成品都可以联系我。

新脚本自动识别已安装系统分区、引导分区、并自动安装指定目录下指定镜像文件(尽量无人至少安装,安装成功后自动重启)已经在测试中。

- THE END -

Sky

9月12日11:53

最后修改:2024年9月12日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论

您必须 后可评论