zoukankan      html  css  js  c++  java
  • pxe_server 批量安装 linux系统 和windows系统

    PXE批量安装CentOS7操作系统


    批量部署前首先应该拥有一台部署完成的系统,也就是Server端。
    PXE_Server部署DHCP、TFTP、Xinetd、Kickstart、(HTTP/FTP/NFS任选其一,本次部署采用FTP),用来提供安装所需要的系统文件以及所要安装的软件。
    关闭Firewalld/SElinux(为实验方便,减少麻烦,生产环境不推荐)

    PXE批量部署原理:

    1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器请求IP;
    2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置
      (该文件一般是放在一台TFTP服务器上);
    3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件
      (在 PXE Client 的 ROM 中,已经存在 TFTP Client);
    4. PXE Client 取得pxelinux.0 文件后之执行该文件;
    5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
    6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

    1、DHCP服务器:为 PXE-client 分配 IP ,获得安装程序文件位置
    2、TFTP服务器:传输安装文件、内核、菜单文件等给 PXE-client
    3、Xinetd: TFTP服务超级守护进程, 用于唤醒TFTP服务;
    4、Kickstart:生成的ks.cfg配置文件 本文没有介绍Kickstart 安装
    5、HTTP/NFS/FTP 服务中的任意一种,用于传送安装源文件给 PXE-client
    ;:

    安装DHCP服务

    yum install dhcp -y

    修改配置文件

    #vim /etc/dhcp/dhcpd.conf

    #———可用最简配置——————-

    网络和子网掩码(根据自己实际情况编写)

    subnet 192.168.2.0 netmask 255.255.255.0 { 
      option routers 192.168.2.11;     
      range 192.168.2.3 192.168.2.25;   # 指定DHCP地址池
      next-server 192.168.2.11; # 指定tftp服务器地址
      filename "pxelinux.0"; #指定pxelinux.0文件
    }

    如果是在多网卡的情况下需要指定某块网卡启动DHCP服务,复制文件,修改配置文件,重新注册服务

    cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
    vi /etc/systemd/system/dhcpd.service
    ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>(我要使用的网卡是ens192)
    systemctl --system daemon-reload

    启动服务

    systemctl start dhcpd.service
    systemctl enable dhcpd.service

    安装TFTP服务(无需认证,小文件传输)
    安装xinetd、tftp-server和syslinux服务

    #syslinux 会在 /usr/share/syslinux/pxelinux.0 生成pxelinux.0文件 ,需要手动复制到/var/lib/tftpboot/ 目录中,后面详细介绍。
    syslinux文件解析

            isolinux.bin       注:光盘镜像引导文件   
            isolinux.cfg       注:启动菜单的配置文件;自编辑   
            memdisk          注:引导IMG镜像的文件   
            vesamenu.c32(或menu.c32)  注:官方提供的二种窗口模块   
            chain.c32         注:指定分区启动  如:chain.c32 hd0,1 (或chain.c32 hd0,2)   
            reboot.c32       注:重新启动计算机的文件   
            m16-640x640-syslinux.jpg(或syslinux_splash.jpg)  注:自己可以定义新的图片作为背景,图图片格式 640*480  jpg/png)
    
    yum install xinetd -y
    yum install tftp-server syslinux -y

    配置xinetd,由xinetd管理tftp

    service tftp
    
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -s /var/lib/tftpboot        
            disable                 = no  #默认disable是yes的,把它改为no即可
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }

    启动服务

    systemctl enable tftp
    systemctl enable xinetd
    systemctl start tftp
    systemctl start xinetd

    安装FTP服务

    yum install vsftp -y

    启动服务

    systemctl enable vsftpd.service && systemctl start vsftpd.service

    复制内核文件
    内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。

    挂载光驱

    mount /dev/cdrom /mnt  #挂载
    # cp /mnt/images/pxeboot/vmlinuz     /var/lib/tftpboot/     #vmlinuz文件,在镜像文件images/pxeboot/目录中,
    vmlinuz是可引导的、压缩的内核文件,vmlinuz是vmlinux的压缩文件。是可执行的Linux内核
    # cp /mnt/images/pxeboot/initrd.img  /var/lib/tftpboot/     #initrd.img文件,在镜像文件images/pxeboot/目录中,
    initrd是“initial ram disk”的简写。initrd用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态

    复制pxelinux.0文件到tftp目录下

    # cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

    复制一个菜单功能文件到/var/lib/tftpboot/

    #cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/

    创建pxelinux.cfg/default 文件

    mkdir -p /var/lib/tftpboot/pxelinux.cfg/default

    编写default文件

    default vesamenu.c32
    menu tabmsg XiaoNan NIUBI
    menu title XiaoNan auto-install system
    timeout 300
    label install Centos7
            kernel vmlinuz
            append initrd=initrd.img inst.repo=ftp://192.168.2.11/centos7

    启动客户端进行安装


    大功告成!

    当然这还需要人工点击开始安装并配置才能安装,如想实现无人值守安装参照小白都能玩转的COBBLER无人值守安装https://blog.csdn.net/qq_37242520/article/details/100545758
    或者搜索kickstart实现无人值守安装!

    PXE批量安装windows操作系统


    在之前的环境下我们需要samba来共享windows安装文件
    安装samba相关包

    #yum install samba samba-client cifs-utils -y

    创建共享的文件夹

    mkdir /smbshare/windows10
    useradd xiaonan
    smbpasswd -a xiaonan
    chown xiaonan:xiaonan /smbshare/

    修改samba配置文件,修改以下内容
    v

    im /etc/samba/smb.conf
    
    [global]
            workgroup = SAMBA
            security = user
            netbios name = pxe
            passdb backend = tdbsam
    
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
    [install]
             comment = Installation Media
             path = /smbshare
             public = yes
             writable = no
             printable = no
             browseable = yes

    启动samba服务

    systemctl start smb nmb && systemctl enable smb nmb

    复制WIN10镜像文件到samba共享目录

    cp -rf win10.iso /smbshare/windows10/

    创建windows10PE
    我们需要windows ADK去制作自己的winpe,访问微软官方网站https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install下载并安装
    我这里下载的是下面两个软件,安装过程下一步就好。

    Download the Windows ADK for Windows 10, version 1903
    Download the Windows PE add-on for the ADK
    

    安装完成之后以管理员身份运行Deployment and Imaging Tools Environment

    copype amd64 c:winpe

    挂载Boot.wim到临时目录

    Dism /Mount-Image /ImageFile:"c:winpemediasourcesoot.wim" /index:1 /MountDir:"c:winpemount"

    修改启动脚本

    notepad c:winpemountWindowsSystem32Startnet.cmd

    添加以下内容,注意字符之间的空格

    wpeinit 
    net use z: \pxeinstallwindows10 /user:xiaonan xiaonan
    z:setup.exe

    卸载并保存boot.vim

    Dism /Unmount-Image /MountDir:"c:winpemount" /commit

    生成win10pe.iso

    MakeWinPEMedia /ISO c:winpe c:win10pe.iso

    把生成的win10pe.iso复制到/var/lib/tftpboot/winpe/下
    添加win10选项到PXE启动菜单

    #vim default
    
    label Install MS Windows 10
    menu label Install MS Windows 10
            kernel memdisk
            initrd /winpe/win10pe.iso
    append iso raw

    大功告成!启动客户端!!!!



    如果想让WINDOWS系统无人值守安装可以创建无人值守自动应答文件AutoUnattend.xml
    详情可参考https://blog.csdn.net/zuoliang365/article/details/86592025

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    JScript 对字符串、数组处理的常用方法
    JavaScript 正则的使用方法
    Nginx配置文件详细说明 (转)
    PHP中try catch的用法
    PHP将多个文件中的内容合并为新的文件
    如何配置WAMP环境(主要是Apache与PHP)
    解决“mysql不是内部/外部命令,也不是可执行程序,也不是批处理文件”
    Memcached 在Windows和Linux的安装和使用
    ThinkPhp中验证码不显示和配置项的问题解决方法
    JAVA8流操作
  • 原文地址:https://www.cnblogs.com/suixinnan/p/14973401.html
Copyright © 2011-2022 走看看