PXE自动化部署操作系统

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 //设置开启自启

装备linux内核,pxe引导程序

  • .linux内核,初始化镜像文件分别为vmlinuz 和initrd.img
  • .引导程序为pxelinux.0 (数字)由软件包syslinux提供

cd /mnt/images/pxeboot 切换到挂载目录pxeboot
cp vmlinuz initrd.img /var/lib/tftpboot/ 将俩个文件将其复制发到tftp服务的根目录下

准备pxe引导程序

用于pxe网络安装的引导程序为pxelinux.0,由软件包syslinux 提供,安装好软件syslinyx,探后将文件pxelinux.0也复制到tftp服务的根目录下

yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

安装并启动DHCP 服务

由于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用来定义引导参数,引导入口的个数及内容根据需要自行定义。列如,实现无人值守安装时只需要一个入口就够了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到达这个界面,我们的实验就已经成功了第一步

接下来安装kickstart程序,结合PXE可实现全自动网络安装

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

最小安装(字符界面)

%packages
@^minimal
%end

最后打开待装机的虚拟机,按F2,选择从网络启动,安装结束后换回硬盘启动

Logo

更多推荐