PXE是由Inter公司开发的网络引导技术,是客户/服务器模式,允许客户机通过网络从远程服务器下载镜像,并加载安装文件或整个操作系统。
搭建PXE网络体系满足的条件:
以搭建集成centos7安装源、TFTP服务、DHCP服务的远程PXE装机服务器为例,能够向客户机裸金属机发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。我们要F2进入启动项选择网络启动。
我们在虚拟机上要实现yum安装软件以及装机的功能,所以我们要给我们的PXE安装服务器配双网卡,一张绑定vm8(可以上网),另一张绑定vm1(不可上网,实现装机)。
服务器双网卡配置
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36 //复制网卡ens33的配置文件作为ens36的配置文件
[root@localhost network-scripts]# vi ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=b2230917-b565-406d-9361-86b607bceccd
DEVICE=ens33
ONBOOT=yes
IPADDR=20.0.0.17
PREFIX=24
GATEWAY=20.0.0.2
DNS1=8.8.8.8
ens36网卡配置文件
[root@localhost network-scripts]# vi ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.100
PREFIX=24
注意:这里的ens36网卡不需要配网关
我们在VMware软件中新建一台虚拟机,需要改的地方只要将网络类型设置为仅主机,其余的全选默认,这里是不需要勾选镜像光盘的,因为我们是模拟裸金属机。
[root@localhost ~]# yum install dhcp -y //安装adcp服务
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf //将dhcp实例文件复制到/etc/dhcp目录下覆盖原dhcp配置文件
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y //确认覆盖
[root@localhost ~]# vi /etc.dhcp/dhcpd.conf //进入dhcp配置文件在27行处写入以下内容
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.150 192.168.100.200;
option routers 192.168.100.100;
option domain-name-servers 8.8.8.8;
next-server 192.168.100.100;
filename "pxelinux.0";
}
[root@localhost ~]# yum install syslinux -y //安装syslinux服务
[root@localhost ~]# rpm -ql syslinux | grep pxelinux.0 //查看pxelinux.0文件路径
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost ~]# yum install tftp-server -y //安装tftp服务
[root@localhost ~]# rpm -ql tftp-server //查看文件位置
/etc/xinetd.d/tftp //配置文件
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot //站点
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ //将文件pxelinux.0复制到站点目录下
启用tftp服务
vi /etc/xinetd.d/tftp ,将下面的yes改为no启用tftp服务
这里我们会将配置PXE需要的四个配置文件(pxelinux.0、initrd.img、 vmlinuz、default)中的pxelinux.0放到tptf的站点。
[root@localhost ~]# yum install vsftpd -y //安装ftp服务
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir centos7 //创建一个目录centos7
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/ //将光盘挂载到刚刚创建的目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# df -Th //查看挂载情况
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda5 xfs 40G 4.5G 36G 12% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda2 xfs 50G 33M 50G 1% /home
/dev/sda1 xfs 2.0G 174M 1.9G 9% /boot
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /var/ftp/centos7
[root@localhost ftp]# cd centos7/
[root@localhost centos7]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img pxeboot TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# ls /var/lib/tftpboot/
initrd.img pxelinux.0 vmlinuz
这一步我们已经将需要的四个配置文件中的三个配置文件放到了tftp的站点下
[root@localhost pxeboot]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vi default //编辑配置文件,将以下内容写进去
default auto //默认是auto
prompt 1 //1秒后立即启动
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost pxelinux.cfg]# systemctl stop firewalld.service //关闭防火墙
[root@localhost pxelinux.cfg]# setenforce 0 //关闭内核防护
[root@localhost pxelinux.cfg]# systemctl start dhcpd //开启dhcp服务
[root@localhost pxelinux.cfg]# systemctl start tftp //开启tftp服务
[root@localhost pxelinux.cfg]# systemctl start vsftpd //开启vsftp服务
然后就出现了我们熟悉的界面
我们就实现了PXE远程安装服务器的部署。
在我们实现了PXE远程装系统后,我们还要手动的选择语言、键盘类型、指定安装源、分区等等一系列操作,如果是进行批量的安装,我们很非常不方便。
接下来我会讲以下kickstart工具是怎么实现全自动装机的,实现真正的一键安装。
应答文件在我们安装好系统后就自己产生在我们的家目录中,也就是anaconda-ks.cfg 文件。
我们要实现一键部署,就要事先准备好应答文件
[root@localhost ~]# yum install system-config-kickstart -y //安装图形化向导工具
安装完成过后,我们就可以在图形化界面下看到Kickstart配置程序
我们打开Kickstart配置程序,每一个子选项依次设置
基本配置:
安装方法:
引导装载程序选项:
分区信息:
最后一个分区的时候直接按以下方法全都划分给它。
网络配置:
验证:这里不用改。默认就行
防火墙设置:
显示设置:也是默认
软件包选择:我们会在之后根据之前安装主机的软件包来写入配置文件,这里也不需要改
预安装脚本:这里也是默认
安装后脚本:
这时候我们在刚刚保存的目录中找到了ks.cfg文件。并将软件包源写入配置文件。
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
centos7 ks.cfg pub
[root@localhost ftp]# vi /root/anaconda-ks.cfg
将以下的内容复制到/var/ftp/ks.cfg中
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
[root@localhost ftp]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ll
总用量 57872
-rw-r--r--. 1 root root 52584760 7月 13 18:55 initrd.img
-rw-r--r--. 1 root root 26759 7月 13 18:44 pxelinux.0
drwxr-xr-x. 2 root root 21 7月 13 19:09 pxelinux.cfg
-rwxr-xr-x. 1 root root 6639904 7月 13 18:55 vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ll
总用量 4
-rw-r--r--. 1 root root 333 7月 13 19:09 default
[root@localhost pxelinux.cfg]# vi default
将以下内容写入到图示位置
ks=ftp://192.168.100.100/ks.cfg
我们在安装完成后直接选择启动,但是在安装完成后,重启会出现图示情况,一直加载不了系统
这是因为我们在Kickstart图形程序设置时,引导装载程序选项中我们选择了不安装引导程序,导致重启后一直没有程序引导,操作系统加载不了。我们在哪个地方改一下,重新生成应答文件。
然后重启,F2进入启动项,选择硬盘启动,就可以正常打开了。