PXE启动安装系统
一、启动操作系统的方式
二、三种引导方式
- 硬盘引导
- 光盘引导
- 网络引导
三、系统安装过程
- 加载boot loader
- 加载启动安装菜单
- 加载内核和initrd系统(文件才能使用文件)
- 加载根系统()
- 运行anaconda的安装向导
四、四大文件
- pxelinux.0: 是一个PXE引导加载程序,用于启动网络引导。
- vmlinuz:是一个压缩的 Linux 内核文件,它包含了操作系统的核心功能和驱动程序。
- initrd.img:是一个用于初始化 RAM 磁盘的初始 RAM 文件系统。它包含了操作系统启动时所需的基本文件和驱动程序。
- pxelinux.cfg/default:手动配置
在网络引导过程中,这些文件通常用于加载操作系统。
五、实现自动安装操作系统
Kickstart 和 PXE 结合使用可以实现自动化的网络安装过程。
Kickstart无人值守安装配置
一、简介
PXE(Preboot Execution Environment)是一种网络引导技术,允许计算机通过网络启动和安装操作系统。
PXE通过网卡引导启动。
二、优点
- 规模化:同时装配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
三、实现无人值守安装的前提条件
- BIOS支持
- 网卡支持
- 需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
- 有DHCP 服务器 DHCP服务用于为客户机自动分配地址、指定引导文件位置
- 安装了TFTP服务 TFTP服务(简单文件传输协议)用于提供系统内核和引导镜像的下载。
四、实现过程
- 网卡需要查找相关的dhcp服务器(获取地址时间)
- 找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
- 网卡使用tftp客户端吧引导程序加载到内存中来
- bios执行引导程序
- 引导程序会去TFTP去查找配置文件
- 根据配置文件去引导安装系统
五、依赖的服务
- DHCP
负责分配IP地址给客户端网卡,在没有操作系统的状态下也能获取网络资源
- TFTP
内核和引导文件
是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。
- VSFTPD
可以使用http ftp等方式,ftp文件传输的一种。
- SYSLINUX
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
pxelinux.0 启动pxe pxe可以支持
虚拟环境中一定要把自带的DHCP服务关闭,否则与虚拟机中手动配置的DHCP配置冲突,导致实验失败
模拟PXE+KICKSTART无人值守安装操作系统
一、准备工作
[root@localhost ~]# systemctl disable --now firewalld
[root@localhost ~]# setenforce 0
二、配置DHCP服务
[root@localhost ~]# yum -y install dhcp #安装dhcp服务程序
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf #查找DHCP配置文件路径
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
[root@localhost ~]# cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
# This is a very basic subnet declaration.
subnet 192.168.137.0 netmask 255.255.255.0 { #DHCP服务器的网段和子网
range 192.168.137.80 192.168.137.100; #自动分配的IP地址范围(地址池)
option routers 192.168.137.102; #DHCP服务器ip地址(网关)
next-server 192.168.137.102; #下一台接续的服务器IP地址
filename "pxelinux.0"; #所要寻找的PXE配置文件名
}
[root@localhost ~]# systemctl start dhcpd #启动DHCP服务
[root@localhost ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: active (running) since 一 2024-05-06 15:18:36 CST; 5min ago #开启成功
三、配置TFTP服务
[root@localhost ~]# yum -y install tftp-server #安装tftp-server服务端程序
[root@localhost ~]# rpm -qc tftp-server #查找tftp服务配置文件路径
/etc/xinetd.d/tftp
[root@localhost ~]# 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 #打开tftp服务
per_source = 11
cps = 100 2
flags = IPv4
:wq #保存退出
[root@localhost ~]# systemctl start tftp #开启tftp服务
[root@localhost ~]# systemctl status tftp #查看tftp服务状态
● tftp.service - Tftp Server
Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
Active: active (running) since 一 2024-05-06 15:37:34 CST; 4s ago #开启成功
四、查找pxelinux.0文件位置并复制到站点目录
[root@localhost ~]# yum -y install syslinux #安装syslinux程序
[root@localhost ~]# rpm -ql syslinux |grep "pxelinux.0" #查找pxelinux.0文件路径
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0 #该文件为四大文件之一
[root@localhost ~]# cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #将该文件复制到tftp站点目录中
五、安装vsftp及创建光盘挂载点
[root@localhost ~]# yum -y install vsftpd #安装vsftp服务
[root@localhost ~]# cd /var/ftp #切换至vsftp共享目录
[root@localhost ftp]# mkdir centos7 #创建挂载点目录
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7 #将光盘镜像挂载到该目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost tftpboot]# cd /var/ftp/centos7/ #切换至光盘内
[root@localhost centos7]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img pxeboot TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
#找到四大文件中的initrd.img和vmlinuz
[root@localhost isolinux]# cp -p initrd.img vmlinuz /var/lib/tftpboot/ #复制到tftp服务站点目录
[root@localhost pxelinux.cfg]# systemctl start vsftpd #开启vsftpd服务程序
六、创建pxelinux.cfg文件夹和default文件
[root@localhost isolinux]# cd /var/lib/tftpboot/ #切换到tftp站点目录
default linux
label linux
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.137.102/centos7 ks=ftp://192.168.137.102/ks.cfg
#指定mini系统路径和个性化配置文件路径
label linux text
kernel vmlinuz
append text initrd =initrd.img method=ftp://192.168.137.102/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.137.102/centos7
:wq
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz #PXE自动安装所需的四大文件已齐全
七、配置无人值守安装
一、安装图形化kickstart工具
[root@localhost tftpboot]#yum install system-config-kickstart -y
二、使用图形化kickstart工具生成ks.cfg文件
[root@localhost tftpboot]# cd /var/ftp
[root@localhost ftp]# ls
centos7 ks.cfg pub
#ks.cfg 文件已生成
三、验证
已通过DHCP服务器得到IP地址并寻找到PXE引导程序
自动部署已开始
实验成功,待安装结束后登录即可使用