PXE高效批量网络装机
引言
1.系统装机的引导方式
启动 操作 系统
1.硬盘
2.光驱(u盘)
3.网络启动 pxe
重装系统?
在已有操作系统
新到货了一台服务器,
装操作系统
系统镜像 u盘 光盘
pe: 小型的 操作系统 在操作系统 再装操作系统
pxe
2.系统安装过程
-
加载boot loader
Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境
-
加载启动安装菜单
-
加载内核和initrd系统(文件才能使用文件)
-
加载根系统()
-
运行anaconda的安装向导
Linux安装光盘的安装相关文件
在系统光盘的isolinux目录下有和安装相关的文件
-
boot.cat: 相当于grub的第一阶段
-
isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
-
isolinux.cfg:启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
-
vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
-
memtest:内存检测程序
-
splash.png:光盘启动菜单界面的背景图
-
vmlinuz:是内核映像
-
initrd.img:ramfs文件(精简版的linux系统,文件系统驱动等)
1.PXE介绍
PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。
pxe是通过网卡引导启动
1.1实现的硬件条件
1.BIOS支持
2.网卡支持(现在基本都已支持)
3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置 网卡自带DHCP功能 dhcp 指明分配的ip地址
vsftpd tftp
5.服务器通过 tftp服务(简单文件传输协议)来提供系统内核和引导镜像的下载 udp()协议 网卡自带这个功能(不支持其他的远程共享服务)
2.实现过程简述
1.网卡需要查找相关的dhcp服务器(获取地址时间)
2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
3.网卡使用tftp客户端吧引导程序加载到内存中来
4.bios执行引导程序
5.引导程序会去TFTP去查找配置文件
6.根据配置文件去引导安装系统
7.系统安装过程
3.搭建过程叙述
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能 够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
3.1TFTP
TFTP(简单文件传输协议):内核和引导文件
是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。
3.2vsftp:安装系统
可以使用http ftp等方式,ftp文件传输的一种。
3.3syslinux
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
pxelinux.0 启动pxe pxe可以支持
4.pxe优点
1.规模化:同时装配多台服务器
2.自动化:安装系统、配置各种服务
3.远程实现:不需要光盘、U盘等安装介质
5.PXE和kickstart无人值守安装的操作过程
systemctl stop firewalld
setenforce 0
#关闭防火墙和核心防护
yum install tftp-server vsftpd syslinux dhcp -y
#安装软件
cat /etc/dhcp/dhcpd.conf
#dhcp的配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#将配置文件模板复制到dhcp目录下
vim /etc/dhcp/dhcpd.conf
#编辑dhcp配置文件
systemctl start dhcpd
#开启dhcp服务
vim /etc/xinetd.d/tftp
#编辑tftp服务的配置服务
cd /var/lib/tftpboot
#切到tftp的主目录下
mount /dev/sr0 /mnt
#挂载到mnt下
cp /mnt/isolinux/initrd.img .
#拷贝镜像文件到tftpboot下
cp /mnt/isolinux/vmlinuz .
#拷贝内核文件到tftpboot下
rpm -ql syslinux | grep pxelinux.0
#查找syslinux中的pxelinux.0的文件
cp /usr/share/syslinux/pxelinux.0 .
#将syslinux中的pxelinux.0文件复制到当前目录下
mkdir pxelinux.cfg
#创建文件夹
vim pxelinux.cfg/default
#创建default文件
mkdir /var/ftp/centos7
#新建文件夹
mount /dev/sr0 /var/ftp/centos7
#挂载
systemctl start tftp.socket
#开启tftp服务
systemctl start vsftpd
#开启ftp服务
虚拟机内存一定要大于2G
yum install system-config-kickstart.noarch -y
#安装图形化工具
进入虚拟机操作
回到服务器
要在一台新建的虚拟机下重启实验!并且内存要大于2GB!
6.Cobbler原理
-
client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP
-
DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
-
client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
-
cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
-
client裸机通过上面告知的TFTP server地址通信,下载引导文件
-
client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image
-
cobbler server发送请求的kickstart和os iamge
-
client裸机加载kickstart文件
-
client裸机接收os image,安装该os image
6.1实际操作
[root@centos7 ~]#yum install epel-release.noarch -y
[root@centos7 ~]#yum install cobbler dhcp httpd -y
[root@centos7 ~]#systemctl enable --now cobblerd httpd tftp dhcpd
[root@centos7 ~]#cobbler check
openssl passwd -1 '123123'
#生成一个密钥文件
vim /etc/cobbler/settings
$1$cWzI./u.$uoGgVITPzCR1NbSYCbn/t.
#修改主配置文件
vim /etc/cobbler/dhcp.template
#dhcp的配置模板
mount /dev/sr0 /mnt
#挂载
cobbler import --name=centos-7-x86_64 --path=/mnt --arch=x86_64
#把镜像文件拷贝到固定目录下
du -sh /var/www/cobbler/ks_mirror/*
#拷贝到了这边,输入命令可以看到
在新建的无配置过的虚拟机里,重新启动,检验实验有没成功