winPE的PXE引导,大批量维护和安装系统

  • Post author:
  • Post category:其他


前言


优先看上一篇:【纯净的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

个人目前有这些场景的实践经验,后面有机会再写一篇。



版权声明:本文为XJYSober原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。