本章结构:
- 部署PXE远程安装服务
- 搭建PXE远程安装服务器
- 验证PXE网络安装
- 实现Kickstart无人值守安装
- 准备安装应答文件
- 实现批量自动装机
一、 系统安装
1. 系统装机的三种引导方式
- 硬盘
- 光驱 (u盘)
- 网络启动 pxe
2. 系统安装过程
- 加载 boot loader
- 加载启动安装菜单
- 加载内核和initrd系统
- 加载根系统
- 运行anaconda的安装向导
3. Linux安装光盘的安装相关文件
在系统光盘的isolinux目录下有和安装相关的文件:
- boot.cat: 相当于grub的第一阶段
- initrd.img:ramfs文件(精简版的linux系统,文件系统驱动等)
- isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
- isolinux.cfg:启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
- memtest:内存检测程序
- splash.png:光盘启动菜单界面的背景图
- vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
- vmlinuz:是内核映像
二、 PXE 概述
PXE (Preboot eXecution Environment)预启动执行环境。是由Inter公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统来安装。
PXE提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
PXE是通过网卡引导启动。
1. PXE服务的优点
- 规模化:同时装配多台服务器,无需每一台单独安装操作系统;
- 自动化:实现服务器的自动安装及自动配置各种服务;
- 远程实现:不需要光盘、U盘等安装介质,方便快捷的同时又可以保障服务器安全。
2. PXE装机需要的四大文件
pxelinux.0:引导程序。(来自syslinux程序)pxelinux.cfg/default:引导程序的配置文件。(位于 /var/lib/tftpboot/ 下,需要手写,可参考光盘 isolinux 目录下的 isolinux.cfg 文件)vmlinuz:内核文件。(从光盘中获取,位于 isolinux 目录下)initrd.img: 系统启动镜像文件。(从光盘中获取,位于 isolinux 目录下)
3. PXE实现过程讲解
- 客户机的网卡查找相关的dhcp服务器(获取地址和时间)。
- DHCP服务器给客户机分配IP地址和引导程序(boot loader)的地址 ,同时通过offer报文把TFTP服务器的地址发给客户机。
- TFTP服务器把引导文件(pxelinux.0)传给客户机。
- 客户机将引导程序加载到内存中来。
- 引导程序去TFTP服务器中查找配置文件,服务器将配置文件传给客户机。(配置文件中指定客户机使用ftp方式连接服务器获取系统镜像文件)
- 服务端安装并启动vsftpd服务,客户机使用ftp服务获取系统镜像文件。
三、PXE搭建过程中服务详解
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
网卡自带DHCP服务和TFTP服务。
1. DHCP服务
用于自动分配IP地址、子网掩码、默认网关、DNS服务器等网络参数给启动的客户端计算机。在PXE场景下,DHCP服务器还会提供一个特殊选项,其中包含TFTP服务器的IP地址以及引导文件名,这样客户端就知道去哪里下载引导程序。
2. TFTP服务
TFTP(简单文件传输协议),是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。
TFTP服务一般只在装机这种场景下使用,用于传输内核和引导文件。因为安全性不高。
PXE客户端根据DHCP获取到的信息,通过TFTP从指定的服务器下载预启动执行环境的引导程序(pxelinux.0)及后续的内核镜像、initrd等安装所需文件。
3. FTP服务 (vsftpd)
vsftpd的作用是提供FTP服务,用于在客户端和服务器之间传输文件。安装系统镜像文件获取方式。
4. syslinux
安装syslinux程序后,可获得 pxelinux.0 文件。
在PXE环境中,TFTP服务器上通常会提供一个由Syslinux提供的名为pxelinux.0的引导加载程序。当客户端通过PXE启动时,会下载这个文件并执行。
四、 PXE网络装机操作过程
1. 配置
实验环境:
服务器内网IP地址:172.16.235.150
DHCP、TFTP、FTP服务全都搭建在这一台服务器上。
实验步骤:
- 安装四个软件包:dhcp、tftp-server、vsftpd、syslinux ;
[root@node3 ~]# yum install dhcp tftp-server vsftpd syslinux -y //安装4个软件包
- 配置DHCP服务器,分配IP地址,指明tftp服务器的地址;
[root@node3 ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example //配置文件模板在此目录下
# see dhcpd.conf(5) man page
#
[root@node3 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf //将配置文件模板复制到dhcp目录下
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@node3 ~]# cd /etc/dhcp
[root@node3 dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
[root@node3 dhcp]# vim dhcpd.conf //编辑dhcp配置文件
subnet 172.16.235.0 netmask 255.255.255.0 { //设置子网IP、子网掩码
range 172.16.235.60 172.16.35.90; //设置地址池
option routers 172.16.235.150; //设置网关地址
next-server 172.16.235.150; //指定tftp的服务器地址
filename "pxelinux.0"; //指定启动文件
}
[root@node3 dhcp]# systemctl start dhcpd //开启服务
- 修改TFTP服务配置文件 /etc/xinetd.d/tftp ,将服务开启(默认是关闭状态);
[root@node3 dhcp]# rpm -ql tftp-server //查看所有文件列表
/etc/xinetd.d/tftp //配置文件
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot //站点
[root@node3 dhcp]# 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 //改为no,启动tftp服务
per_source = 11
cps = 100 2
flags = IPv4
}
- 将光盘挂载到 /var/ftp 的子目录centos7下,并将四大文件中的2个(
vmlinuz、initrd.img)先拷入 /var/lib/tftpboot/ 目录中;
[root@node3 dhcp]# cd /var/ftp
[root@node3 ftp]# mkdir centos7 //创建子目录centos7
[root@node3 ftp]# mount /dev/sr0 centos7 //将光盘挂载到/var/ftp/centos7/目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@node3 ftp]# cd centos7
[root@node3 centos7]# ls
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
[root@node3 mnt]# cd isolinux/
[root@node3 isolinux]# ls //查看isolinux内的文件
boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest splash.png TRANS.TBL vesamenu.c32 vmlinuz
[root@node3 isolinux]# cp initrd.img vmlinuz /var/lib/tftpboot/ //把内核文件和虚拟文件系统拷贝到站点
[root@node3 isolinux]# cd /var/lib/tftpboot/
[root@node3 tftpboot]# ls
initrd.img vmlinuz //站点内有2个文件
- 查找
pxelinux.0文件位置,并将其拷贝到 /var/lib/tftpboot/ 目录中;
[root@node3 tftpboot]# rpm -ql syslinux |grep pxelinux.0 //查找pxelinux.0文件位置
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0 //找到此文件
[root@node3 tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ //把pxelinux.0拷贝到站点
[root@node3 tftpboot]# ls
initrd.img pxelinux.0 vmlinuz //站点内有3个文件
- 在 /var/lib/tftpboot/ 目录下,创建子目录
pxelinux.cfg,在pxelinux.cfg目录下编写引导程序的配置文件default。
[root@node3 tftpboot]# mkdir pxelinux.cfg //创建子目录pxelinux.cfg
[root@node3 tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@node3 tftpboot]# cd pxelinux.cfg/
[root@node3 pxelinux.cfg]# vim default //编写default文件
配置文件内容:
- 查看四大文件是否都已放入 /var/lib/tftpboot/ 中,开启服务。
[root@node3 pxelinux.cfg]# cd .. //切换到上级目录
[root@node3 tftpboot]# tree //以树形图查看目录下的文件
.
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz //四大文件齐全
1 directory, 4 files
[root@node3 tftpboot]# systemctl start dhcpd tftp vsftpd //开启所有服务
2. 测试
创建空白虚拟机测试能否自动装机
- 新建虚拟机
- 编辑虚拟机设置,内存至少2G!
- 开启虚拟机
虚拟机自动获取IP地址、自动安装镜像文件系统
出现图形化界面,实验成功。之后的参数需要手动设置。
五、kickstart无人值守安装
1. kickstart文件
kickstart文件主要包括三个部分:
- 命令段
- 程序包段
- 脚本段
2. 实验
- 服务端安装kickstart软件;
[root@node3 ~]# yum install system-config-kickstart -y //安装kickstart软件
- 进入虚拟机,在应用程序中找到 Kickstart 工具进行配置;
基本配置:
安装方法:
引导文件:
分区:
禁用防火墙:
取消图形化安装:
安装后脚本:
保存配置:
- ks.cfg文件成功保存到/var/ftp目录下。需要再次修改/var/lib/tftpboot/pxelinux.cfg目录下的default文件,添加ks参数;
[root@node3 ~]# cd /var/ftp //查看ks.cfg文件是否成功保存到/var/ftp
[root@node3 ftp]# ls
centos7 ks.cfg pub //成功保存
[root@node3 ftp]# cd /var/lib/tftpboot/pxelinux.cfg/
[root@node3 pxelinux.cfg]# ls
default
[root@node3 pxelinux.cfg]# vim default //编辑default文件,添加ks参数
[root@node3 pxelinux.cfg]# systemctl start dhcpd tftp vsftpd //开启服务
- 创建空白虚拟机测试,安装完毕后系统自动配置相应参数。