preboot execute environment预启动执行环境--intel开发的技术,计算机可以通过pxe协议从网络引导启动。
工作模式为客户端/服务器端的c/s模式
客户端从远端服务器下载镜像,并支持通过网络启动操作系统(启动过程,客户端要求服务器端分配ip地址,再用TFTP或MTFTP协议下载一个启动软件包到客户端内存中执行)
为了节省时间和成本,使用kickstart+PXE自动化安装部署来解决数百台服务器的系统,版本一致。
架构:DHCP+NFS+TFTP+PXE+kickstart
需要安装的服务:dhcp,tftp,nfs,kickstart(一个配置文件)等
前提:客户端开启pxe功能
#服务器端:
1.挂载镜像
2.DHCP安装:
yum install dhcp* -y
配置dhcp:vi /etc/dhcp/dhcpd.conf
#有一个dhcpd.conf.sample的文件可以参考
3.TFTP安装:
yum install tftp* -y
配置tftp服务:vi /etc/xinetd.d/tftp
disable=yes改为no
#tftp基于xinetd.d的服务启动
4.配置TFTPBOOT+PXE配置
要实现远程安装系统,需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。
#系统是5,默认tftpboot目录自动创建到/目录下
#系统是6,默认tftpboot目录在/var/lib/下,需要centos6.x需要软链接到/目录下
#yum install syslinux
#先用find命令查找pxelinux.0文件,如果没有执行上面的命令
cp /usr/share/syslinux/pxelinux.0 /tftpboot
#拷贝到tftpboot目录下
引导文件pxelinux.0
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
将镜像中的文件拷贝出来:
cp /mnt/images/pxeboot/vmlinuz /tftpboot/
cp /mnt/images/pxeboot/initrd.img /tftpboot/
拷贝初始化引导文件,内核到tftpboot目录下
在tftpboot目录下
mkdir -p pxelinux.cfg
# 参数:-p 确保目录名称存在,如果目录不存在,就新创建一个
cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
拷贝isolinux.cfg配置文件并重命名为default,系统安装的时候会根据此文件的配置启动相应的选项
类似一个菜单:
........
#注意可能需要给default文件添加权限chmod 777这样
加入:
label centos7.8//centos7.8标签
kernel vmlinuz//内核文件
append ks=nfs:kickstart服务器的ip地址:/centosinstall/ks.cfg ksdevice=eth0 initrd=initrd.img
#/centosinstall是nfs共享linux镜像的目录,也是linux存放安装文件的路径
#ks.cfg是kickstart主配置文件
#设置timeout 10,超时时间为10s
#ksdevice=eth0代表客户端从eth0安装操作系统--用于多个网卡的服务器,vm环境下可以不用这个
由于安装7.8的centos版本,安装后是ens33
#default文件 将default后的 改为centos7.8,就可以默认引导到centos7.8这个标签来,就不需要在安装的时候输入centos7.8
#客户端:
5.配置nfs
nfs传镜像文件--默认已经安装
mkdir -p /centosinstall
cp -rf /mnt/* /centosinstall
#把镜像文件都拷贝到centosinstall目录下
并在nfs配置文件/etc/exports添加
/centosinstall *(rw,sync)
#centosinstrall为共享目录,rw,sync允许任何主机访问
#注意/centosinstall目录要有读写权限
6.kickstart配置
#配置kickstart,一个是可以使用system-kickstart系统软件包来配置,也可以直接拷贝/root/目录下的anaconda-ks.cfg到刚分享的/centosinstall目录下,并重命名为ks.cfg
anaconda-ks.cfg文件:
#chmod 777 ks.cfg
#根据需要修改ks文件:
#clearpart --all --initlabel//初始化所有磁盘
ks.cfg文件可分三部分:命令部分,软件部分,脚本部分
其中脚本部分:
%pre:预安装脚本(由于只依赖于启动镜像,支持的命令很少)
%post:后安装脚本(基本支持所有命令)
在%post中如果加入wget的命令,就要在%packages中加入wget包
#浪潮服务器在安装系统过程中,发现在dd后,系统无法起来,解决方法:在ks.cfg文件中增加
ignoredisk --only-use=sda
重启服务
/etc/init.d/nfs restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
启动客户端:dhcp获取到地址。输入引导的是centos7.8