前言
优先看上一篇:【纯净的windows官方WinPE制作】
一般个人PC可自制启动盘启动PE做维护或者安装系统。这一篇主要针对批量部署、维护场景。
几种通过PXE启动的server工具(主要针对windows网络启动场景)
1、AOMEI PXE Boot Tool
官网:
https://www.ubackup.com/pxetool.html
2、Serva
官网:
https://vercot.com/~serva/default.html
3、hanewinshcp
官网:
https://www.hanewin.net/dhcp-e.htm
4、WDS(Windows Deployment Services,windows部署服务)
官网:
https://docs.microsoft.com/en-us/windows/win32/wds/windows-deployment-services-portal
5、Tiny PXE Server
官网:
http://reboot.pro/files/file/303-tiny-pxe-server/
PXE Server部署
在实现PXE启动之前需要部署对应的服务。因环境限制,这里Server的环境使用CentOS6.3。
1、dhcp:yum install dhcp -y配置dhcp:vim /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
authoritative;
ddns-update-style interim;
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = option vendor-class-identifier;
default-lease-time 180;
subnet xxxx netmask 255.255.255.0 { //声明一个网段
}
subnet xxxx netmask 255.255.255.0
{
option routers xxxx; //网关
option subnet-mask 255.255.255.0; //子网
range dynamic-bootp xxxx xxxx; //声明提供的IP地址范围
filename "/pxelinux.0"; //pxe专用启动引导文件,在tftp的根目录
next-server xxx; //TFTP服务器地址,因都在一台机器部署,这里填本机
}
启动服务:/etc/init.d/dhcpd start
2、tftp-server:yum install tftp-server -y,默认安装根目录:/var/lib/tftpboot
3、守护进程xinetd:yum install xinetd -y,主要是管理tftp-server
配置xineted:vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -m /var/lib/tftpboot/tftpd.remap -vvv --blocksize 1024
disable = no
per_source = 11
cps = 100 2
}
/var/lib/tftpboot/tftpd.remap内容:gr \\ /
启动xineted:/etc/init.d/xinetd start
4、因其他场景需要,安装nginx:yum install nginx -y
配置nginx:/etc/nginx/conf.d/default.conf,监听ipv6参数加:listen [::]:80 ipv6only=on。
server {
listen 80 default_server;
listen [::]:80 ipv6only=on;
server_name _;
access_log /var/log/nginx/hybird.access.log main;
location /upload {
root /data/www;
autoindex on;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access group:rw all:r;
}
location / {
root /data/www;
}
}
PXE网络启动WinPE(熟悉PXE原理)
1、从上一篇得到WinPE的iso文件:WinPE_amd64,这里我们用UltraISO(软碟通)提取解压后找到boot.wim:C:\WinPE_amd64\sources\boot.wim
2、这里推荐打包和编辑wim镜像的工具Dism++:
https://www.chuyu.me/zh-Hans/
点击文件,挂载映像,点击打开会话,就可以自定义wim映像。
在挂载目录找到启动文件:C:\Users\Administrator\Desktop\mount_wim\Windows\Boot\PXE
3、在WinPE目录找到winpe.wim、BCD、boot.sdi
C:\Users\Administrator\Desktop\install_tools\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\en-us\winpe.wim
C:\Users\Administrator\Desktop\install_tools\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\Media\Boot\BCD
C:\Users\Administrator\Desktop\install_tools\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\Media\Boot\boot.sdi
4、以上几个文件都放到PXE Server的tftp目录。
5、 启动文件
linux的启动文件是yum install syslinux后,syslinux复制的pxelinux.0:cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
这里windows的pxe启动文件就是:pxeboot.n12。这里重命名并放到:/var/lib/tftpboot/Boot/startrom.0
bootmgr.exe放到/var/lib/tftpboot
6、配置文件生成
/var/lib/tftpboot/pxelinux.cfg是配置文件目录。配置文件可以代码生成或者是自定义。根据pxe找配置文件顺序规则(自定pxe官网寻找),这里命名为01-xxx(pxe会找对应的mac地址命名)。
windows的模板:
default 1
prompt 1
label 1
timeout 10
kernel Boot/startrom.0
append –
7、上述配置结束后启动流程
pxelinux.cfg/01-xxx—> /var/lib/tftpboot/Boot/startrom.0 —> /var/lib/tftpboot/bootmgr.exe —> / var/lib/tftpboot/Boot/BCD —> /var/lib/tftpboot/Boot/boot.sdi —> /var/lib/tftpboot/Boot/WinPE.wim —> winload.exe 执⾏PE2.0 的启动。
8、服务器从pxe启动即可。
不同文件的作用
startrom.0:也可以是pxeboot.0,实际是由pxeboot.com或者pxeboot.n12改名而来,这个文件对应WinXPPE中的startrom.n12文件(这里命名startrom.0沿用了xp的思想不推荐,可自定义)。这个文件主要作用是加载TFTP根目录下的bootmgr.exe文件。
bootmgr.exe:它也必须放到TFTP服务器的根目录下(与WinXPPE中的setupldr.exe对应)。它的作用主要是读取启动配置文件也就是BCD,根据BCD的配置进一步加载boot.sdi文件。
BCD:这是bootmgr的启动菜单配置文件,和windows启动菜单配置文件没有什么区别(它主要对应NT的boot.ini文件),由系统自带程序bcdedit.exe来进行配置和修改(PXE引导WinPE就用PE的bcdedit.exe)。
boot.sdi:boot.sdi是启动WIM必须的文件,没有会无法启动WIM文件。必须放到TFTP服务器/Boot目录下。可以“看做”空的ntfs镜像,虚拟X盘符的硬盘,WIM内核挂载到它上面。SDI格式相当于IMG格式,只是SDI格式在IMG文件前加了一个文件头。
WinPE.wim:这就是WinPE的主映像文件了,也要放到/Boot目录下。
应用场景
可以自定义PE和启动脚本,实现大批量的PXE启动WinPE进行系统安装和系统维护。
比如批量安装目标OS,基本思路是自定义PE里面的工具、自启动脚本,PXE启动PE后执行自脚本拉取windows系统的启动分区gho文件和系统分区的gho文件,使用ghost.exe进行ghost还原做大批量windows部署安装。详细参考ghost命令详解:
http://www.upanok.com/jiaocheng/83.html
Ghost32.exe -clone,mode=pload,src=w:\boot.gho:1,dst=c:\:1 -fx -sure
Ghost32.exe -clone,mode=pload,src=w:\sys.gho:1,dst=c\:2 -fx -sure
个人目前有这些场景的实践经验,后面有机会再写一篇。