Linux网络服务——PXE网络批量装机+Kickstart无人值守安装
1 系统安装介绍
1.1 系统装机的三种引导方式
1 硬盘
2 光驱
3 网络
1.2 系统安装过程
- 加载 boot loader
- 加载启动安装菜单
- 加载内核和initrd系统
- 加载根系统
- 运行anaconda的安装向导
2 PXE介绍
2.1 什么是PXE
PXE( Preboot eXecution Environment,预启动执行环境 )是由Inter公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统。
PXE是通过网卡引导启动。
2.2 PXE服务优点
1 规模化:同时装配多台服务器,无需每一台单独安装操作系统;
2 自动化:实现服务器的自动安装及自动配置各种服务;
3 远程实现:不需要光盘、U盘等安装介质,方便快捷的同时又可以保障服务器安全。
2.3 搭建PXE网络体系所需条件
① 客户机
- 客户机的网卡要支持PXE协议(集成BOOTROM芯片)。
- 网卡自带DHCP服务和TFTP服务。
- 主板支持网络引导。有一些需在BIOS设置中允许从 Network 或 LAN 启动即可。
② 服务端
- 配置 DHCP 服务器 :为客户机自动分配地址、指定引导文件位置(指明TFTP服务器地址)。
- 服务器要开启 TFTP 服务(简单文件传输协议):用来提供系统内核和引导镜像文件的下载。
- 安装软件包syslinux :提供PXE引导程序。
- 服务器提供FTP服务(或http) :提供安装源(例如镜像文件系统等)。
2.4 PXE装机需要的四大文件
-
pxelinux.0:引导程序。(来自syslinux程序)
-
default:引导程序的配置文件。(需要手写,可参考光盘 isolinux 目录下的 isolinux.cfg 文件)
-
vmlinuz:内核文件。(从光盘中获取,位于 isolinux 目录下)
-
initrd.img: 系统启动镜像文件。(从光盘中获取,位于 isolinux 目录下)
说明initrd的作用:
-
initrd 的英文含义是 boot loader initialized RAM disk,即由引导程序初始化的RAM磁盘。initrd是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd与内核绑定在一起, 并作为内核引导过程的一部分进行加载。内核然后会将这个initrd文件作为其阶段引导过程的一部分来加载模块,这样才能在以后的引导过程中使用真正的文 件系统,并挂载实际的根文件系统。根文件系统可以存储在包括IDE、SCSI、USB在内的多种介质上,如果将这些设备的驱动都编译进内核,可以想象内核 会多么庞大、臃肿。所以可以把initrd看做是在启动过程中连接内核与根文件系统的一个桥梁。
2.5 PXE实现过程讲解
- 客户机的网卡查找相关的dhcp服务器(获取地址和时间)。
- DHCP服务器给客户机分配IP地址和引导程序(boot loader)的地址 ,同时通过offer报文把TFTP服务器的地址发给客户机。
- TFTP服务器把引导文件(pxelinux.0)传给客户机。
- 客户机将引导程序加载到内存中来。
- 引导程序去TFTP服务器中查找配置文件,服务器将配置文件传给客户机。(配置文件中指定客户机使用ftp方式连接服务器获取系统镜像文件)
- 服务端安装并启动vsftpd服务,客户机使用ftp服务获取系统镜像文件。
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022163537730-1077694204.png)
3 实验:使用PXE和kichstart实现无人值守、批量化自动装机
环境:
1、相同网段:192.168.206.0/24
2、centos7 虚拟机
3、使用的root用户,以/root/ 目录下会存放文件
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022172842416-1171286097.png)
2、首先去vim /etc/xinetd.d/tftp,把disbale改成no即可(补充:目前wait值为no,是可以多台机器一同装机,此外server_args 值是指定的tftp目录,默认即可)
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022172920784-733935023.png)
保存后退出
3、关闭防火墙、增强型服务。开启xinetd和tftp服务+开机自行启动
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173142803-255966155.png)
4、接着我们来搭建DHCP服务,首先是复制/usr/share…中的模板覆盖/etc/dhcp…中的空白配置文件。接着我们vim /etc/dhcp/dhcpd.conf去改模版。要该的有2部分,第一部分是禁用dns动态跟新备注、确定next-server的ip地址(本机pxe服务地址)和文件filename 。第二部分是网段设置,要注意option routers(网关)得是这台机子的ip地址哦。最后保存退出,启动dhcpd服务+开机自启
5、pxe机子装上光盘,挂载到mnt,然后去cd /mnt/images/pxeboot目录中,把vmlinuz、initrd.img 这两个镜像、内核文件cp复制去/var/lib/tftpboot/ 中去,这步就完成了。
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173256200-224954249.png)
6、下面我们着手来准备pxelinux引导程序(第一步的syslinux已经安装了)
复制这个pxelinux.0 程序去/var/lib/tftpboot/,完成后即可
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173328224-1166150037.png)
7、准备ftp服务(第一步已经安装了vsftpd服务了)
我们先去cd /var/ftp
创建一个centos7目录
之后我们mount /dev/cdrom /var/ftp/centos7 (光盘可以挂载到多个地方)
完成后我们启动vsftpd服务+开机自启动
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173349483-1161979752.png)
8、设置引导启动会话文件default,首先是cd /var/lib/tftpboot
随后我们创建一个pxelinux.cfg目录
vim /var/lib/tftpboot、pxelinux/default 创建这个文件(由于我们是使用kickstart无人值守的,所以就直接在这步添加ks参数了)
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173429817-579199495.png)
9、准备kickstart服务
打开方式:
1、可视化桌面左上角:应用程序-系统工具-kickstart
2、字符化界面:system-config-kickstart 召唤出来
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173516022-704325534.png)
注意分区的时候:boot、swap、根目录必不可少!
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173754068-991154654.png)
脚本设完后我们左上角的文件-保存。我选择保存在本机的/root/中
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173902769-1269920772.png)
10、完成后首先cd ~
会发现多了initial-setup-ks.cfg和ks.cfg文件。我们首先vim initial-setup-ks.cfg,进去后把第二张图的所选部分复制
退出后我们vim ks.cfg,把这个复制的内容贴到ks.cfg的最下面(图三)
保存退出,把ks.cfg复制去/var/ftp目录中。cp /root/ks.cfg /var/ftp/ks.cfg
![](https://img2022.cnblogs.com/blog/2964616/202210/2964616-20221022173947602-2112670124.png)
验证:最后我们将裸机放入与pxe服务器主机同一网段的内网中,开机后即可实现自动化安装操作系统