1.部署PXE远程安装服务 在大规模的linux应用环境中,如web群集,分布式计算等,服务器往往并在匹配光驱设备,在这种情况下,如何为数十乃至数百台服务器裸机快速安装系统?传统的usb光驱,移动硬盘等安装方法,显然已经难以满足需求。
准备俩台虚拟机,一台是已经安装linux系统的服务器,那么这边就使用linux7.6的版本;还有一台是裸金属服务器,就是为了检验pxe能否执行成功。
mkdir -p /var/ftp/centos7 // 创建一个centos7的目录 mount /dev/cdrom /mnt // 将光盘数据挂载到mnt目录下 cp -rf /mnt/* /var/ftp/centos7 // 将mnt目录下所有的信息拷贝到之前创建的目录中去 yum -y install vsftpd // 安装vsftpd 服务 systemctl start vsftpd // 开启vsftpd 服务 systemctl enable vsftpd // 设置开机自启
安装并启动TFTP服务 .安装tftp-server软件包,启动tftp服务 .配置文件位于 /etc/xinetd.d/tftp
yum -y install tftp-server vi /etc/xinetd.d/tftp server_args = -s /var/lib/tftpboot //这个不用修改 disable = no //开启这个服务
systemctl start tftp //开启tftp服务 systemctl enable tftp //设置开启自启
cd /mnt/images/pxeboot 切换到挂载目录pxeboot cp vmlinuz initrd.img /var/lib/tftpboot/ 将俩个文件将其复制发到tftp服务的根目录下
用于pxe网络安装的引导程序为pxelinux.0,由软件包syslinux 提供,安装好软件syslinyx,探后将文件pxelinux.0也复制到tftp服务的根目录下
yum -y install syslinux cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
由于pxe客户机通常是尚未安装系统的裸机,因此为了与服务器取得联系并正确下载相关的引导文件,需要预先配置好DHCP服务来自动分配,地址并告知引导文件位置,如pxe服务器的ip地址为20.0.0.25. DHCP 地址池为 20.0.0.10~20.0.0.200,则可以参考
[root@localhost pxeboot]# vi /etc/dhcp/dhcpd.conf subnet 20.0.0.0 netmask 255.255.255.0 { option routers 20.0.0.2; option subnet-mask 255.255.255.0; option domain-name "bdqn.com"; option domain-name-servers 20.0.0.254, 202.106.0.20; default-lease-time 21600; max-lease-time 43200; range 20.0.0.100 20.0.0.200; next-server 20.0.0.25; // 指定TFTP服务器的地址 filename "pxelinux.0"; // 指定PXE引导程序的文件名 } yum -y install dhcp 安专dhcp服务 systemctl start dhcpd 开启dhcpd服务 systemctl enable dhcpd 设置开机自启启动菜单用来指导客户机的引导过程,包括如果调用内核,如何加载初始化镜像,默认的启动菜单文件为default,应放置在tftp根目录的pxelinux.cfg子目录下,典型的启动菜单配置可参考以下操作手动建立
mkdir -p /var/lib/tftpboot/pxelinux.cfg vi /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost pxeboot]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto // 指定默认入口名称 prompt 1 // 1 表示等待用户控制 label auto kernel vmlinuz append initrd=initrd.img method=ftp://20.0.0.254/centos7 label linux text kernel vmlinuz append.text initrd=initrd.img method=ftp://20.0.0.25/cetos7 label linux rescue kernel vmlinuz append rescue initrd=initd.img method=ftp://20.0.0.25/centos7上述配置记录中定义了三个引导入口,分别为图形安装(默认),文本安装,救援模式,其中,prompt用来设置是否等待用户选择;label 用来定义并分隔启动项;kernel和append用来定义引导参数,引导入口的个数及内容根据需要自行定义。列如,实现无人值守安装时只需要一个入口就够了。
到达这个界面,我们的实验就已经成功了第一步
root@localhost tftpboot]# yum -y install system-config-kickstart 进入图形界面打开kickstart程序软件
搭建本地源的脚本内容 rm -rf /etc/yum.repos.d/* echo -e'[base]\nname=CentOS7.6\nbaseurl=ftp://20.0.0.254/centos7\nenabled=1\ngpgcheck=1 \ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'>/etc/yum.repos.d/centos7.repo[root@localhost /]# cd root [root@localhost ~]# ll
[root@localhost ftp]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto prompt 0 label auto kernel vmlinuz ###kernel:内核 append initrd=initrd.img method=ftp://20.0.0.14/centos7 ks=ftp://20.0.0.14/ks.cfg ##注意“ks=”不能另起一行 ##append:设置文件路径[root@localhost ~]# cp /root/ks.cfg /var/ftp/ks.cfg [root@localhost ~]# vi /var/ftp/ks.cfg ##在此应答文件中插入最大安装或最小安装包 这些数据都可以去root下本地应答文件anaconda-ks.cfg中获取
%packages @^gnome-desktop-environment @base @core @desktop-debugging @development @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最后打开待装机的虚拟机,按F2,选择从网络启动,安装结束后换回硬盘启动