PXE+Kickstart+HTTP无人值守批量安装Centos6.9系统步骤完全详解
文章目录
0. 原理
0.1 PXE
- 名称:Pre-boot Execution Environment,预启动执行环境
- 工作环境:Client/Server的网络模式
- 工作内容:一种引导方式,PXE 协议可以使计算机通过网络启动。用来支持通过网络从服务器下载系统镜像,支持通过网络启动操作系统。运行 PXE 协议需要设置DHCP服务器和 tftp服务器。
- DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,在配置 DHCP 服务器时需要增加相应的 PXE 设置。
- PXE Client 可以通过 TFTP 协议到 TFTP Server 上下载所需的文件.
0.2 PXE工作过程
0.3 Kickstart
-
定义:一种无人值守的安装方式;
-
工作原理:记录在安装过程中一些需要人工干预填写的各种参数(分区设置/网络设置等),并生成一个名为ks.cfg的文件;
-
安装过程中出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数(没有合适的参数就要手动干预);
-
安装系统完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装
我们假如把系统镜像文件比作食材,把安装的系统当作一桌菜的话,ks.cfg文件就是制作一桌好菜的那一张菜谱
菜名有:语言环境/键盘设置/网络配置/分区设置/用户密码设置/安装包设置/grub启动设置/等;
那么待安装系统的主机什么时候可以运行这个文件里面的命令呢?那当然是在这个系统进入init.d初始化后并且网卡已经配置号之后,待安装系统从镜像源所在地成功加载了ks.cfg文件了之后才能运行。
1. PXE+Kickstart实现无人值守安装Centos6步骤
1.1 实验准备和软件安装
要求:Centos6中完成
实验准备:两台主机,一台centos6.9(完成静态配置ip地址),一个未装系统的客户机
实验环境 :VMware Workstation 15
网络模式:NAT
网卡eth0 IP:192.168.6.146/24
关于如何静态配置centos7 ip地址,参考往期文章:Centos7/Ubuntu1604网络静态配置IP地址过程
- 关闭防火墙和selinux
[root@lin ~]# iptables -F
#还没有学过防火墙服务的,简单粗执行这个命令就行了
#系统若有重启再关掉,以免待安装主机TFTP请求不成功加载不了镜像文件
[root@lin ~]# setenforce 0
#可以永久性修改:/etc/sysconfig/selinux 中修改成这个字段:SELINUX=disabled
- 安装实验所需要的软件,结果如图
[root@lin ~]# yum install httpd tftp-server dhcp syslinux system-config-kickstart -y
httpd
#为安装操作系统过程提供光盘文件,(其实:也可也以选择ftp服务来传输)
tftp-server
#存放应答文件和pxelinux.0文件
syslinux
#提供pxelinux.0等文件
dhcp
#为客户机分配ip地址
system-config-kickstart
#用来制作ks文件即菜谱,前提是:需要图形化界面启动,后面会教你安装图形化界面环境和工具
- 将安装的服务设置成开机自动启动并启动服务
[root@lin ~]# chkconfig dhcpd on #设定在各个等级(2,3,4,5)为on,系统重启就不用操心这个服务
[root@lin ~]# service xinetd start
Starting xinetd: [ OK ]
-
需要安装x windows和desktop,并重启
生成ks.cfg文件需要system-confgi-kickstart工具,而此工具依赖X windows
(记得重新关闭防火墙和SElinux):
[root@lin ~]# yum groupinstall "Desktop" "X Window System"
[root@lin ~]# yum groupinstall Fonts
[root@lin ~]# reboot
- **启动服务HTTP+**开机自启动设置
[root@lin ~]# /etc/init.d/httpd start
Starting httpd:
[root@lin ~]# chkconfig --level 35 httpd on
#--level 35表示操作只在等级3和5执行,on表示启动
-
加载ISO镜像并挂载
-
虚拟机中设置加载ISO镜像(好比是光盘)
镜像的下载除了可以是光盘安装方式,也可以是网络安装方式用wget命令下载镜像源到本地,这个方法自行查找
-
- 将iso文件挂载到/mnt/cdrom
[root@lin ~]# mkdir /mnt/cdrom
[root@lin ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
-
复制光盘内容到http的根目录下
[root@lin ~]# cp -r /mnt/cdrom /var/www/html/
1.2 TFTP服务配置
- 启用tftp服务tftp-server
[root@lin ~]# vi /etc/xinetd.d/tftp
service tftp
{
disable = no #修改这里
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
tftp服务是挂载在超级进程xinetd下,通过启动xinetd来启动tftp服务,设置开机自启动
[root@lin ~]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@lin ~]# chkconfig xinetd on
1.3 复制镜像文件+系统启动配置文件修改
- 复制pxelinux.0文件到/var/lib/tftpboot 文件夹中
[root@lin ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
syslinux是引导加载程序。小型的linux操作系统,简化首次安装linux的时间,并建立 维护其他特殊用途 的启动盘.
- 复制iso镜像中的/image/pxeboot/目录下的initrd.img和vmlinuz到/var/lib/tftpboot文件夹中
[root@lin ~]# cp /var/www/html/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
- 复制iso镜像中的**/isolinux/*.msg**到/var/lib/tftpboot目录中
[root@lin ~]# cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/
- 在/var/lib/tftpboot/ 中新建一个pxelinux.cfg目录,将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default
[root@lin ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@lin ~]# cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- 修改default文件
[root@lin ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 1 #显示:boot:提示符
timeout 600 #用户输入前的超时时间,单位为毫秒
display boot.msg #默认在/var/lib/tftpboot目录下显示某个文件内容
label linux
kernel vmlinuz #kernel 参数指定要启动的内核
append initrd=initrd.img #追加给内核的参数
label ks
kernel vmlinuz
append ks=http://192.168.6.146/ks.cfg initrd=initrd.img #镜像源的ip地址,注意是http没有s
#指明获取ks.cfg文件的位置
1.4 DHCP服务配置
- 复制配置模板到DHCP的配置目录中
[root@lin ~]# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
- 修改**/etc/dhcp/dhcpd.conf**配置文件
ddns-update-style interim;
ignore client-updates;
filename "pxelinux.0";
next-server 192.168.6.146;
subnet 192.168.6.0 netmask 255.255.255.0 {
option routers 192.168.6.2; #网关ip地址
option subnet-mask 255.255.255.0; #掩码
range dynamic-bootp 192.168.6.200 192.168.6.250; #设定分配ip 地址的范围
default-lease-time 21600;
max-lease-time 43200;
}
#除此以外其他内容可以删掉
- 启动dhcp服务
[root@lin ~]# /etc/init.d/dhcpd start
Starting dhcpd: [ OK ]
#启动失败的话根据提示
#查看日志文件,需要查看是否格式写对,是否写漏分号
#查看启动状态 service dhcpd status
1.5 Kickstart配置文件生成
-
启动X Windows环境
[root@lin ~]# startx
-
终端上执行system-config-kickstart
A. 设置语言,键盘,时区,Root密码,安装完毕后重启等
B.设置安装方式,本文介绍HTTP方式安装,选择HTTP
C.安装MBR
D.分区设置
E.配置网络
F.认证配置
G.SElinux和防火墙配置
H.图形化环境配置
I.软件包安装选择(最小化)
J.ks文件设置预览
K.生成ks.cfg文件,将文件保存在/var/www/html文件夹下面
其实ks文件也可以自己手动编辑生成,相关资料自行查找,只要符合规范,并且文档中任何一个地方不能出现中文就行,且能保存到上述图指定位置
1.6 客户端系统无人值守安装
A.创建一台虚拟机
B.网络配置,选择”启动时连接“,NAT模式
C.启动虚拟机,网卡启动,DHCP 服务器已经给客户机分配IP地址,正在请求TFTP服务
D.按下回车键盘开始安装系统
E.安装完成