给客户装服务器一装就是几十台,又不允许接U盘,只能使用光驱装系统,就开始琢磨PXE安装了,毕竟网线都接好了不用白不用
在网上有很多PXE安装的教程,但总是少那么一点东西,反复翻阅了四五篇教程,总结了一下大体流程
测试系统:CentOS7.4、中标麒麟7.5、RHEL7.2
IP:192.168.242.2,安装了图形化界面(11步需要在图形化界面操作,否则只能手动编写配置文件或进引导后手动安装)

  1. 以root用户登录,打开命令行终端。一般生产环境建议用普通用户,这里为了防止权限上的问题有报错所以直接上root
  2. 挂载光盘

    mount /dev/sr0 /mnt/

  3. 编辑yum源,标题名必须是development,因为后面kickstart需要调用这个源才能获取需要安装的软件列表

    vim /etc/yum.repos.d/cd.repo
    [development]
    name=cd
    baseurl=file:///mnt/
    enabled=1
    gpgcheck=0

  4. 更新yum源信息

    yum repolist

  5. 安装需要的软件,这么一大串装下来,省的后面需要的时候再装

    yum install tftp-server dhcp httpd syslinux system-config-kickstart xinetd -y

  6. 编辑DHCP配置文件,一般建议需要复制模板文件过来修改参数,但我发现实际需要的就这么几行,可能dns也不需要配

    vim /etc/dhcp/dhcpd.conf
    option domain-name "pxe.local";
    option domain-name-servers 192.168.242.2;
    default-lease-time 600;
    max-lease-time 7200;
    subnet 192.168.242.0 netmask 255.255.255.0 {
    range 192.168.242.50 192.168.242.100;
    next-server 192.168.242.2;
    filename "pxelinux.0"; }

  7. 创建镜像目录

    mkdir -p /var/www/html/rhel

  8. 复制安装镜像,其他教程中都是直接挂载过来的,但光盘的速度实在不敢恭维,如果本地服务器是SSD组的raid5,配个万兆网卡做mode4的bond,拷贝到本地速度原地起飞

    cp -r /mnt/* /var/www/html/rhel/

  9. 复制相关文件到 tftp目录

    mkdir -p /var/lib/tftpboot/pxelinux.cfg
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
    cp -r /mnt/isolinux/* /var/lib/tftpboot/
    cd /var/lib/tftpboot/
    cp isolinux.cfg pxelinux.cfg/default

  10. 修改网络引导配置文件

    chmod +r /var/lib/tftpboot/pxelinux.cfg/default
    vim /var/lib/tftpboot/pxelinux.cfg/default
    把文件开头的timeout值改成30,则进入引导界面的时候等待3秒,默认600等待60秒
    使用PXE批量安装Linux RHEL系统_第1张图片

  11. 配置自动安装脚本,如果步骤10中没有配置ks项,可以略过11、12步进行手动安装

system-config-kickstart
设置语言、时区、root密码、安装完成自动重启
安装方法选择HTTP,填写路径
安装新引导程序
清除所有分区,初始化磁盘标签,swap分区根据需求设定,/boot分区200M,/分区选择剩余所有空间。实际安装过程中,会需要/biosefi等各种预设里没有的分区,可以参照anaconda-ks.cfg修改
选择需要安装的软件包
文件→保存 ,文件名默认是ks.cfg保存即可,因为步骤10里指定的就是ks.cfg
系统安装完成之后默认在/root目录下有一个anaconda-ks.cfg ,可以对照这个文件对生成的配置文件进行修改使用PXE批量安装Linux RHEL系统_第2张图片

12 把生成的配置文件复制到HTTP服务器目录

cp /root/ks.cfg /var/www/html/rhel/

13 启动相关服务,有教程说需要关闭SELinux,实际试的时候没关也不影响

systemctl disable firewalld
systemctl stop firewalld
systemctl restart httpd
systemctl restart tftp
systemctl restart dhcpd
systemctl enable httpd
systemctl enable tftp
systemctl enable dhcpd

14.客户端开机通过PXE引导进行安装系统
15.使用完成之后PXE服务器作废,恢复使用之前的状态

yum erase tftp-server dhcp httpd syslinux system-config-kickstart xinetd -y
systemctl enable firewalld
systemctl start firewalld