• PXE批量安装CentOS7操作系统


    PXE批量安装CentOS7操作系统

    默认熟悉VMware Workstations或者ESXi以及相应的计算机网络知识。

    (个人认为容易出问题的地方已经用红色字体提示,请自行注意)

    批量部署前首先应该拥有一台部署完成的系统,也就是“样板机”。

    当然,也可以采用直接编辑ks.cfg文件的方式来自定义需要的操作系统以及安装的软件。

    但是必须拥有一台Server端来提供服务,也就是PXE_Server,该台设备性能决定了能够同时部署的集群最大规模数量。

    PXE_Server部署DHCP、TFTP、Xinetd、Kickstart、(HTTP/FTP/NFS任选其一,本次部署采用HTTP),用来提供安装所需要的系统文件以及所要安装的软件。
    关闭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配置文件
    5、HTTP/NFS/FTP 服务中的任意一种,用于传送安装源文件给 PXE-client

    一、关闭Firewalld/SElinux,简单介绍一下,不再赘述。

    关闭并禁用防火墙:

    # systemctl disable firewalld.service

    # systemctl stop firewalld.service

    禁用SElinux:

      编辑etc/sysconfig/selinux,永久关闭SELinux(需要重启系统)

      SELINUX=disabled

     二、安装DHCP服务(多网卡)

    yum install dhcp -y

    修改配置文件

    vim /etc/dhcp/dhcpd.conf

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

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

    subnet 192.168.110.0 netmask 255.255.255.0 {

    range 192.168.110.10 192.168.110.50;
    option broadcast-address 192.168.110.255;
    option routers 192.168.110.1;
    default-lease-time 86400;
    max-lease-time 86400;

    # 指定tftp服务器地址

    next-server 192.168.110.1;

    #指定pxelinux.0文件
    filename "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 restart dhcpd.service
    systemctl enable dhcpd.service

    三、安装TFTP服务(无需认证,小文件传输)

    安装xinetd、tftp-server和syslinux服务

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

    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

    四、安装HTTP服务

    yum install httpd -y

    systemctl start httpd

    systemctl enable httpd

    五、配置ks.cfg文件

    ks.cfg模板文件在/root下的anaconda-ks.cfg文件

    # cp /root/anaconda-ks.cfg  /var/www/html/ks.cfg

    编辑ks.cfg文件,稍微修改一下安装介质就可以(可以不做修改,但是安装路径一定要改,红色标注的地方)

    vim /var/www/html/ks.cfg

    #version=DEVEL
    # System authorization information
    auth --enableshadow --passalgo=sha512
    # Install OS instead of updrade 添加
    # 告知安装程序,这是一次全新安装,而不是升级upgrade。
    install
    # Use CDROM installation media
    # 通过FTP或HTTP从远程服务器上的安装树中安装。
    url --url="http://192.168.110.1/cdrom"
    # url --url ftp://<username>:<password>@<server>/<dir>
    # nfs --server=nfsserver.example.com --dir=/tmp/install-tree

    # Use graphical install
    # graphical
    # text 表示使用文本模式安装。
    text
    # Firewall configuration 添加防火墙启动
    firewall --enable
    # Run the Setup Agent on first boot
    firstboot --enable
    ignoredisk --only-use=sda
    # Keyboard layouts
    keyboard --vckeymap=cn --xlayouts='cn'
    # System language
    lang zh_CN.UTF-8

    # Network information
    network --bootproto=dhcp --device=link --onboot=on --ipv6=auto --activate
    network --bootproto=dhcp --device=ens192 --onboot=off --ipv6=auto
    network --hostname=localhost.localdomain

    # Reboot after installation
    reboot
    # Root password
    rootpw --iscrypted $6$7gWM4/A0f6Ot8I2u$IYoREsBLWSUK09XS01ogoJ85gwthlTiVYlDr.x.2EnWG8lbd5gmUUqJbGBfkXa08agmWydj1q3NK4DM9qKkYh0
    # System services
    services --enabled="chronyd"
    # System timezone
    timezone Asia/Shanghai --isUtc
    # System bootloader configuration
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    # Clear the Master Boot Record
    # zerombr 清除mbr引导信息。
    zerombr
    autopart --type=lvm
    # Partition clearing information
    clearpart --none --initlabel

    %packages
    @^minimal
    @core
    chrony
    kexec-tools

    %end

    %addon com_redhat_kdump --enable --reserve-mb='auto'

    %end

    %anaconda
    pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    %end

    六、复制内核文件

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

    /var/lib/tftpboot/目录规划如下:

    挂载光驱,虚拟一定要先在连接光驱打上钩

    创建目录mkdir /var/www/html/cdrom 

    使用HTTP安装,所以镜像文件到挂到http根目录下

    mount /dev/cdrom /var/www/html/cdrom  #挂载

    如果是镜像文件已上传到linux中,可以这样挂
    #mount -o loop /opt/CentOS-7-x86_64-Minimal-1804.iso /var/www/html/cdrom

    将镜像中的启动文件COPY到tftp server的根目录中

    # cp /var/www/html/cdrom/images/pxeboot/vmlinuz     /var/lib/tftpboot/     #第2个文件,vmlinuz文件,在镜像文件images/pxeboot/目录中,

    vmlinuz是可引导的、压缩的内核文件,vmlinuz是vmlinux的压缩文件。是可执行的Linux内核

    # cp /var/www/html/cdrom/images/pxeboot/initrd.img  /var/lib/tftpboot/     #第1个文件,initrd.img文件,在镜像文件images/pxeboot/目录中,

    initrd是“initial ram disk”的简写。initrd用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态

    复制pxelinux.0文件到tftp目录下,首先安装syslinux

    yum -y install syslinux
    # cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

    编辑pxelinux.cfg菜单文件,即isolinux.cfg
    # mkdir /var/lib/tftpboot/pxelinux.cfg
    # vim /var/lib/tftpboot/pxelinux.cfg/default

    该菜单文件的配置模板在镜像文件中:/var/www/html/cdrom/isolinux/isolinux.cfg 中 

    # cp /var/www/html/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot/

    # cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default # 复制并改名

    # cp /var/www/html/cdrom/isolinux/boot.msg /var/lib/tftpboot

    #vim /var/lib/tftpboot/pxelinux.cfg/default 

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

    default cdrom  
    prompt 0            #1出现提示,0不出现提示

    label cdrom
      kernel vmlinuz
      append initrd=initrd.img  ks=http://192.168.128.140/ks.cfg  devfs=nomount  #指定ks.cfg文件读取的位置

    到此,PXE_Server所需要做的工作已经完成,直接开启所需要安装系统的服务器(或虚拟机)即可。

  • 相关阅读:
    Ubuntu20.04和22.04离线安装PostgreSQL14
    HK32F030MF4P6的Linux GCC工具链开发环境
    OCR 03: PaddleOCR
    SpringBoot+MyBatis Plus对Map中Date格式转换的处理
    AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码
    Ubuntu22.04 安装配置VNC Server
    Ubuntu22.04 安装配置流水账
    沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置
    沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置
    GCC Arm 12.2编译提示 LOAD segment with RWX permissions 警告
  • 原文地址:https://www.cnblogs.com/liuxgcn/p/11076469.html
Copyright © 2020-2023  润新知