zoukankan      html  css  js  c++  java
  • 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所需要做的工作已经完成,直接开启所需要安装系统的服务器(或虚拟机)即可。

  • 相关阅读:
    NOIP2011 D1T1 铺地毯
    NOIP2013 D1T3 货车运输 倍增LCA OR 并查集按秩合并
    POJ 2513 trie树+并查集判断无向图的欧拉路
    599. Minimum Index Sum of Two Lists
    594. Longest Harmonious Subsequence
    575. Distribute Candies
    554. Brick Wall
    535. Encode and Decode TinyURL(rand and srand)
    525. Contiguous Array
    500. Keyboard Row
  • 原文地址:https://www.cnblogs.com/liuxgcn/p/11076469.html
Copyright © 2011-2022 走看看