本文主要是介绍PXE+kickstart自动装机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
网络装机的概述:
1. 网络装机的优势:
规模化:同时装配多台主机
- 自动化:装系统、配置各种服务
- 远程实现:不需要光盘、U盘等物理安装介质
2. 什么是PXE网络
- PXE,Pre-boot eXecution Environment
- 预启动执行环境,在操作系统之前运行
- 可用于远程安装
- 工作模式
- PXE client集成在网卡的启动芯片中
- 当计算机引导时,从网卡芯片中把PXE client调入内存执行,获取PXE server配置、显示菜单,根据用户选择将远程引导程序下载到本机运行。
3. PXE组件及过程分析
- 需要哪些服务组件
- DHCP服务,分配IP地址、定位引导程序
- TFTP服务,提供引导程序下载
- HTTP服务(或FTP/NFS),提供yum安装源
- 客户机应具备的条件
- 网卡芯片必须支持PXE协议
- 主板支持从网卡启动
部署PXE网络装机:
1. 通过 HTTP 方式发布CentOS7软件源
#安装httpd软件包并启动
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl enable httpd.service
# 准备yum仓库,部署到Web子目录
[root@localhost ~]# mkdir /var/www/html/dvd --建立挂载点
[root@localhost ~]# vim /etc/fstab ---设置开机自动挂载
........
添加以下内容
/dev/cdrom /var/www/html/dvd iso9660 loop,ro 0 0
[root@localhost ~]# mount -a ---加载上面配置的配置文件立即生效挂载
[root@localhost ~]# df -hT /var/www/html/dvd/ --查看挂载信息
Filesystem Type Size Used Avail Use% Mounted on
/dev/loop0 iso9660 4.3G 4.3G 0 100% /var/www/html/dvd
- 确保yum仓库HTTP资源可用
- 从浏览器访问http://192.168.20.10/dvd/,可看到仓库资源。
注意:httpd服务器必须关闭防火墙或者设置规则运许80通过
2. 配置DHCP服务
#安装dhcp软件包
[root@localhost ~]# yum -y install dhcp.x86_64
#建立dhcpd.conf服务配置
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
添加以下内容:
subnet 192.168.20.0 netmask 255.255.255.0 { ----配置网段以及子网掩码range 192.168.20.100 192.168.20.200; ---配置dhcp地址池的范围next-server 192.168.20.10; --配置下一个服务器的IP地址filename "pxelinux.0"; ---定义引导文件名称
}
#启动系统服务dhcpd,并设置开机自启
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
#确认dhcpd服务状态
[root@localhost ~]# netstat -anptu | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 24679/dhcpd
3. 构建TFTP服务器
#安装TFTP软件包
[root@localhost ~]# yum -y install tftp-server.x86_64
#启动系统服务tftp,并设置开机自启
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp
4. 部署启动文件
- 拷贝pxelinux.0程序,部署到TFTP目录,在软件包syslinux提供的目录下找到pxelinux.0程序
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# rpm -ql syslinux | grep pxelinux.0 --查看安装目录
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0#将其拷贝到/var/lib/tftpboot/目录下,确认部署结果:
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost ~]# ls /var/lib/tftpboot/
pxelinux.0#拷贝引导装机的内核、初始镜像,部署到TFTP目录,当文件较多时,可以在TFTP目录下创建子目录:
[root@localhost ~]# mkdir /var/lib/tftpboot/CentOS7 #通过CentOS7光盘目录找到PXE版内核vmlinuz、初始镜像initrd.img,将其拷贝到上述子目录:
下载内核、初始化文件
[root@localhost CentOS7]# cd /var/lib/tftpboot/CentOS7
[root@localhost CentOS7]# wget http://192.168.20.10/dvd/isolinux/vmlinuz
[root@localhost CentOS7]# wget http://192.168.20.10/dvd/isolinux/initrd.img#确认部署结果:
[root@localhost CentOS7]# cd
[root@localhost ~]# ls -R /var/lib/tftpboot/
/var/lib/tftpboot/:
CentOS7 pxelinux.0/var/lib/tftpboot/CentOS7:
initrd.img vmlinuz
5. 配置启动菜单
#创建配置目录
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg#以光盘中的isolinux目录为模板,拷贝必要的文件
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# wget http://192.168.20.10/dvd/isolinux/vesamenu.c32 ---提供图形支持
[root@localhost tftpboot]# wget http://192.168.20.10/dvd/isolinux/splash.png ---准备背景图片
[root@localhost tftpboot]# wget -O pxelinux.cfg/default http://192.168.20.10/dvd/isolinux/isolinux.cfg ---建立菜单配置#确认部署结果:
[root@localhost tftpboot]# ls -R /var/lib/tftpboot/
/var/lib/tftpboot/:
CentOS7 pxelinux.0 pxelinux.cfg splash.png vesamenu.c32/var/lib/tftpboot/CentOS7:
initrd.img vmlinuz/var/lib/tftpboot/pxelinux.cfg:
default#修改菜单文件内容
[root@localhost tftpboot]# vim /var/lib/tftpboot/pxelinux.cfg/default
修改以下内容:
末行模式输入 :set nu ---开启行号功能
1 default vesamenu.c32 ---默认加载图形模块
2 timeout 600 ----读秒时间,1/10秒
10 menu background splash.png ---背景图片
11 menu title PXE CentOS 7! ---菜单界面显示标题61 label linux62 menu label ^Install CentOS 7 ---菜单项标签63 menu default ---默认启动方式,这个指令必须放在 menu label ^Install CentOS 7后面64 kernel CentOS7/vmlinuz ----指定内核路径65 append initrd=CentOS7/initrd.img inst.stage2=http://192.168.20.10/dvd ---初始镜像,安装源位置66 label rescue67 menu label ^ CentOS7 system68 kernel CentOS7/vmlinuz69 append initrd=CentOS7/initrd.img inst.stage2=http://192.168.20.10/dvd rescue70 menu end
#70行后面的内容可以删除掉
6. 验证PXE网络装机
6.1. 新建一台虚拟机:
注意:如果是生产环境中已经有系统的客户机,则需要调整BIOS设置,将网络引导作为第一启动设备。
6.2. 启动新建的虚拟机,验证PXE网络安装过程
- 确认启动界面
- 客户机通过PXE引导以后,可以获得服务端提供的配置界面,如图所示
- 选择第一个菜单项开始安装CentOS7操作系统
-
成功出现CentOS7安装程序的欢迎界面,根据提示选择中文(如图所示)后继续
3.下一步需手动选择安装源 -
指定位于http://192.168.20.10/dvd的软件仓库,软件选择、安装位置等设置根据需要指定,确认后继续。
-
后续过程与正常的光盘安装类似,不再赘述。
-
顺利操作到这里说明PXE网络引导安装的目标已经实现了。
PXE+kickstart自动装机
1. 准备应答文件
- 使用图形配置工具system-config-kickstart来生成应答文件
1.1. 安装system-config-kickstart软件包
[root@localhost ~]# yum -y install system-config-kickstart
1.2. 调整yum仓库设置
- 清理掉无关的yum源,只保留为客户机安装CentOS7系统所必要的yum源,并且将源的ID修改为development。
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[development]
name = CentOS Linux 7
baseurl = http://192.168.20.10/dvd
gpgcheck = 0
1.3. 运行system-config-kickstart工具,创建应答文件
[root@localhost ~]# system-config-kickstart
Could not open display because no X server is running.
Try running 'system-config-kickstart --help' for a list of options.
-----这里报错:说没有运行x服务
解决如下:
yum -y install xorg-x11-xauth
安装完毕后 重新连接即可
- 在支持图形程序的环境运行system-config-kickstart,即可打开该配置工具(如图所示)
- 配置语言、时区、密码等
- 在安装方法部分,选择“执行新安装”,并正确设置HTTP安装源的访问地址信息(如图所示)
-
引导装载程序选项
-
在分区信息部分,选择清除主引导记录、删除所有现存分区、初始化磁盘标签,并手动添加/boot 200MB、SWAP分区 2000MB、/分区 所有剩余空间(如图所示)
-
在网络配置部分,确认已添加第一块网卡,设为DHCP自动获取(如图所示)
- 在防火墙配置部分,禁用SELinux、禁用防火墙(如图所示)
- 在软件包选择部分,根据客户机的实际需要定制(如图所示)
- 在安装后脚本部分,添加经验证的正确可执行语句,使客户机装好系统后能够自动配好YUM源(如图所示)
确认上述调整后,通过“文件”菜单将其保存为/root/ks.cfg
2. 部署应答文件
2.1. 查看应答文件的生成
[root@localhost ~]# ls /root/
anaconda-ks.cfg ks.cfg
2.2. 利用web服务器共享应答文件
[root@localhost ~]# cp ks.cfg /var/www/html/
[root@localhost ~]# ls /var/www/html/
dvd ks.cfg
2.3. 修改菜单文件
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
.......
#找到相应的label启动项,在append后添加ks=应答文件地址,去掉原有的inst.stage2参数设置
label linuxmenu label ^Install CentOS 7menu defaultkernel CentOS7/vmlinuzappend initrd=CentOS7/initrd.img ks=http://192.168.20.10/ks.cfg......
3. 验证PXE+kickstart自动应答
- 新建一台虚拟机裸机,确认支持PXE网卡启动,
- 启动虚拟机裸机,验证PXE网络安装过程
- 正常PXE引导,选择第一个启动项回车确认即快速进入全自动安装,后续过程基本无需人工干预(如图所示)
这篇关于PXE+kickstart自动装机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!