PXE+Kickstart无人值守安装服务

安装环境:virtual box + centos7
适用场景:如果生产环境中有数百台服务器都需要安装系统。这时,我们就需要使用PXE + TFTP +FTP + DHCP + Kickstart 服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,大大提升了系统安装的效率。
服务介绍:PXE(Preboot eXecute Environment,预启动执行环境)是由Intel 公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE 技术),主要用于在无人机值守安装系统中引导客户端主机安装Linux 操作系统。Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg 文件,当安装过程中需要填写参数时则自动匹配Kickstart 生成的文件。所以只要Kickstart 文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。由于当前的客户端主机并没有完整的操作系统,也就不能完成FTP 协议的验证了,所以需要使用TFTP 协议帮助客户端获取引导及驱动文件。vsftpd 服务程序用于将完整的系统安装镜像通过网络传输给客户端。当然,只要能将系统安装镜像成功传输给客户端即可,因此也可以使用httpd 来替代vsftpd 服务程序。

1、配置DHCP服务程序

DHCP 服务程序用于为客户端主机分配可用的IP 地址,而且这是服务器与客户端主机进行文件传输的基础,因此我们先行配置DHCP 服务程序。
首先,需要将服务器虚拟机设置成固定IP
在这里插入图片描述
关闭虚拟机自带的DHCP服务
在这里插入图片描述
关闭CentOS7的virbr0网卡
1.Down:

ifconfig virbr0 down

2.Delete:

brctl delbr virbr0

3.virbr0是由libvirtd服务创建,libvirtd在guest里没啥卵用,所以干掉它,不然下次启动又创建了:

systemctl disable libvirtd

将网络连接方式改成仅主机模式
在这里插入图片描述
搭建光盘源yum
将CentOS7系统挂载到虚拟机,通过命令

df -h

查看光盘挂载的具体位置
在这里插入图片描述
新建一个文件夹,把光盘设备中的系统镜像挂载到/media/cdrom目录

mkdir /media/cdrom
mount /dev/sr1 /media/cdrom

修改/etc/fstab文件,使挂载永久生效
在这里插入图片描述
配置yum文件,进入/etc/yum.repos.d目录,将CentOS-Base.repo文件改成CentOS-Base.repo.bak,目的是为了使它失效,再打开CentOS-Media.repo,更改baseurl和enabled
在这里插入图片描述
到此,yum已经配置完成!
接下来,正式安装DHCP服务

yum -y install dhcp

安装完成后,还要更改DHCP的配置文件

vim /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.10.10;
range dynamic-bootp 192.168.10.100 192.168.10.200;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.10.10; # 就是TFTP的位置
filename "pxelinux.0";  # 告知得从TFTP根目录下载的boot loader文件名
}

在确认DHCP 服务程序的参数都填写正确后,重新启动该服务程序,并将其添加到开机启动项中。这样在设备下一次重启之后,在无须人工干预的情况下,自动为客户端主机安装系统。

[root@linuxprobe ~]# systemctl restart dhcpd
[root@linuxprobe ~]# systemctl enable dhcpd
ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.
target.wants/dhcpd.service'

2、配置TFTP服务

vsftpd 是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。但是,当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?而TFTP 作为一种基于UDP 协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。因此接下来配置TFTP 服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过vsftpd 服务程序将完整的光盘镜像文件传输过去。

yum -y install tftp-server

TFTP 是一种非常精简的文件传输服务程序,它的运行和关闭是由xinetd 网络守护进程服务来管理的。xinetd 服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。需要开启TFTP 服务程序,只需在xinetd 服务程序的配置文件中把disable 参数改成no 就可以了。保存配置文件并退出,然后重启xinetd服务程序,并将其加入到开机启动项中

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
disable = no
per_source = 11
cps = 100 2
flags = IPv4
[root@linuxprobe xinetd.d]# systemctl restart xinetd
[root@linuxprobe xinetd.d]# systemctl enable xinetd

TFTP 服务程序默认使用的是UDP 协议,占用的端口号为69,我这边直接将防火墙和selinux关闭了

3、配置SYSLinux 服务程序

SYSLinux 是一个用于提供引导加载的服务程序。与其说SYSLinux 是一个服务程序,不如说更需要里面的引导文件,在安装好SYSLinux 服务程序软件包后,/usr/share/syslinux 目录中会出现很多引导文件。

yum -y install syslinux

我们首先需要把 SYSLinux 提供的引导文件复制到TFTP 服务程序的默认目录中,也就是前文提到的文件pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。另外在CentOS 7 系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/media/cdrom 目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP 服务程序的默认目录中。

[root@linuxprobe ~]# cd /var/lib/tftpboot
[root@linuxprobe tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@linuxprobe tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
[root@linuxprobe tftpboot]# cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .

然后在 TFTP 服务程序的目录中新建pxelinux.cfg 目录,虽然该目录的名字带有后缀,但依然也是目录,而非文件!将系统光盘中的开机选项菜单复制到该目录中,并命名为default。

[root@linuxprobe tftpboot]# mkdir pxelinux.cfg
[root@linuxprobe tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/
default

默认的开机菜单中有两个选项,要么是安装系统,要么是对安装介质进行检验。既然我们已经确定采用无人值守的方式安装系统,还需要为每台主机手动选择相应的选项,未免与我们的主旨(无人值守安装)相悖。现在我们编辑这个default 文件,把第1 行的default 参数修改为linux,这样系统在开机时就会默认执行那个名称为linux 的选项了。对应的linux 选项大约在64 行,我们将默认的光盘镜像安装方式修改成FTP 文件传输方式,并指定好光盘镜像
的获取网址以及Kickstart 应答文件的获取路径:

[root@linuxprobe tftpboot]# vim pxelinux.cfg/default
1 default linux
.
.
.
64 append initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.
10.10/pub/ks.cfg quiet
65
………………省略部分输出信息………………

4、配置vsftpd 服务程序

在这套无人值守安装系统的服务中,光盘镜像是通过FTP 协议传输的,因此势必要用到vsftpd 服务程序。当然,也可以使用httpd 服务程序来提供Web 网站访问的方式,只要能确保将光盘镜像顺利传输给客户端主机即可。如果打算使用Web 网站服务来提供光盘镜像,一定记得将上面配置文件中的光盘镜像获取网址和Kickstart 应答文件获取网址修改一下。

yum -y install vsftpd

在配置文件修改正确之后,一定将相应的服务程序添加到开机启动项中,在设备重启之后依然能提供相应的服务

systemctl restart vsftpd
systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.
target.wants/vsftpd.service'

在确认系统光盘镜像已经正常挂载到/media/cdrom 目录后,把目录中的光盘镜像文件全部复制到vsftpd 服务程序的工作目录中。

 cp -r /media/cdrom/* /var/ftp

5、创建KickStart 应答文件

Kickstart 其实并不是一个服务程序,而是一个应答文件了。Kickstart 应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。那么,既然这个文件如此重要,该去哪里找呢?其实在root 管理员的家目录中有一个名为
anaconda-ks.cfg 的文件,它就是应答文件。下面将这个文件复制到vsftpd 服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是vsftpd 服务程序数据目录中的pub 子目录中)。使用chmod 命令设置该文件的权限,确保所有人都有可读的权限,以保证客户端主机可以顺利获取到应答文件及里面的内容:

cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg

Kickstart 应答文件并没有想象中的那么复杂,它总共只有46 行左右的参数和注释内容,大家完全可以通过参数的名称及介绍来快速了解每个参数的作用。首先把第 6 行的光盘镜像安装方式修改成FTP 协议,仔细填写好FTP 服务器的IP 地址,并用本地浏览器尝试打开下检查有没有报错。然后把第21 行的时区修改成上海(Asia/Shanghai),最后再把29 行的磁盘选项设置为清空所有磁盘内容并初始化磁盘:

vim /var/ftp/pub/ks.cfg
.
6 url --url=ftp://192.168.10.10
.
21 timezone Asia/Shanghai --isUtc
.
29 clearpart --all --initlabel

到此,服务器端配置完成了!
接下来

配置虚拟机客户端

有几点注意:

  • 要将内存改成2G,不然安装系统的时候会报错
  • 将网络模式改成仅主机模式

最后感谢这位大佬的文章,让我解决了一个头痛的问题
解决安装系统报错的一个问题的答案
本教程是基于这个网站的教程写的,感谢!
参考文章添加链接描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值