在大规模的Linux应用环境中,如Web群集、分布式计算等,服务器往往并不配置光驱设备,在这种情况我们就要使用PXE批量装机,而传统的USB光驱、移动硬盘等安装方法显然已经力所不逮。
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并加载安装文件或者整个操作系统。而要搭建PXE网络体系,必须满足几个前提条件:1.客户机的网卡支持PXE协议(集成BOOTROM芯片),且主板支持网络引导;2.网络中有一台DHCP服务器以便为客户机自动分配IP地址、指定引导文件位置;3.服务器通过TFTP(Trivial Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
下面让我们一起完成CentOS7.4上PXE网络体系的架构,并尝试配置Kickstart无人值守装机
PXE网络体系架构
一、 安装所需的服务器(tftp-server/dhcp/ftp)
安装tftp-server服务,存放网络启动所需文件:
[root@CentOS7-1 yum.repos.d]# yum install tftp-server -y [root@CentOS7-1 yum.repos.d]# vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot -c ##指定存储路径 -c:允许上传 disable = no ##修改为no开启服务 per_source = 11 cps = 100 2 flags = IPv4 }
安装dhcp服务,来自动分配IP地址:
[root@CentOS7-1 yum.repos.d]# yum install dhcp -y [root@CentOS7-1 yum.repos.d]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf ##复制配置模板到主配置文件 cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y [root@CentOS7-1 dhcp]# vim /etc/dhcp/dhcpd.conf ##省略部分信息## option domain-name "PXE.com"; ##指定一个域名 option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; # Use this to enble / disable dynamic dns updates globally. # Use this to enble / disable dynamic dns updates globally. ddns-update-style none; ##支持DNS动态更新,一般选择关闭 # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. next-server 192.168.100.201; ##指定TFTP服务器地址 filename "/pxelinux.0"; ##引导文件TFTP上的位置 subnet 192.168.100.0 netmask 255.255.255.0 { ##配置子网及子网掩码 range 192.168.100.100 192.168.100.200; ##分配出去的地址网段 option routers 192.168.100.201; ##选择路由 }
安装vsftp服务:
[root@CentOS7-1 dhcp]# yum install vsftpd -y [root@CentOS7-1 dhcp]# mount /dev/cdrom /var/ftp/pub ##挂载光盘镜像到ftp服务器的根目录 mount: /dev/sr0 写保护,将以只读方式挂载
二、 复制网络启动所需要的文件到TFTP服务器的根目录中
[root@CentOS7-1 dhcp]# yum install syslinux -y ##安装引导加载程序 [root@CentOS7-1 dhcp]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@CentOS7-1 dhcp]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@CentOS7-1 dhcp]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default ##安装菜单 [root@CentOS7-1 pxelinux.cfg]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ ##linux引导加载模块 [root@CentOS7-1 pxelinux.cfg]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ ##压缩内核 [root@CentOS7-1 pxelinux.cfg]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/ ##图形化安装菜单
三、 启动所有服务器并关闭防火墙
[root@CentOS7-1 tftpboot]# systemctl restart dhcpd.service [root@CentOS7-1 tftpboot]# systemctl restart vsftpd.service [root@CentOS7-1 tftpboot]# systemctl restart tftp.service [root@CentOS7-1 tftpboot]# systemctl stop firewalld.service [root@CentOS7-1 tftpboot]# setenforce 0
四、 配置Kickstart完成无人值守安装
安装kickstart软件包:
[root@CentOS7-1 tftpboot]# yum -y install system-config-kickstart
为了方便我们可以在图形化界面配置完成配置再将ks.cfg放到ftp站点中:
此时我们可以创建一个ftp目录下的站点,并把配置文件保存过去:
重新编辑配置:
[root@CentOS7-1 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default ##省略部分信息## label linux menu label ^Install CentOS 7 menu default ##添加这行 kernel vmlinuz append ks=ftp://192.168.100.201/centos7/ks.cfg ##添加kickstart配置文件 initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
此时我们可以测试一下,创建一台新的虚拟机:
可以看到,我们的kickstart正在完成自动装机,且不需要自己操作!