目录
前面我们学习了使用光盘镜像来安装Linux系统的方法,这种方法只适合安装少量Linux系统的情况,如果生产环境中有数百台服务器都需要安装系统,这种方法就显得效率很低,这时,我们就需要使用PXE+TFTP+FTP+DHCP+Kichstart服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,这一方面将运维人员从重复性的工作中解救出来,也大大提升了系统安装的效率
一、PXE高效批量网络装机
1.1 什么是pxe
PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统
1.2 实现的前提条件
客户端
- BIOS支持
- 网卡支持(现在基本都已支持)
服务器
- 需要在BIOS中开启开关,服务器一般没打开(bmc界面里打开)
- 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置
- 服务器通过 tftp服务(简单文件传输协议)来提供系统内核和引导镜像的下载
- 安装syslinux,提供PXE引导程序
- 使用ftp服务,提供yum安装源
1.3 系统安装过程
- 加载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系统,文件系统驱动等),用来挂载root根
1.4 搭建过程中的服务详解
- TFTP(简单文件传输协议):内核和引导文件,是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP的69端口
-
vsftp:安装系统镜像文件获取方式,也可以使用http服务
-
syslinux:一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统
-
DHCP服务:自动获取IP地址
1.5 PXE批量部署的优点
- 规模化:同时转配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
二、Kickstart无人值守
2.1 kickstart文件主要包括三个部分
- 命令段
- 程序包段
- 脚本段
2.1.1 命令段
指明各种安装前配置,如键盘类型等
命令段中的常见命令:
keyboard: 设定键盘类型
lang: 语言类型
zerombr:清除mbr
clearpart:清除分区
part: 创建分区
rootpw: 指明root的密码
timezone: 时区
text: 文本安装界面
network:指定网络设置
firewall:设置防火墙设置
selinux:设置selinux设置
reboot:安装完自动重启
user:安装完成后为系统创建新用户
url: 指明安装源
2.1.2 程序包段
指明要安装的程序包组或程序包,不安装的程序包等
%packages
@^environment group: 指定环境包组,如:@^minimal-environment
@group_name
package
-package
%end
2.1.3 脚本段
%pre: 安装前脚本
%post: 安装后脚本
注意:CentOS 8,7,6 不同版本的kickstart文件格式不尽相同,不可混用
[root@localhost ~]#yum install system-config-kickstart -y
#安装图形化工具
三、实验
安装服务 dhcp tftp-server vsftp syslinux
yum install dhcp tftp-server vsftpd syslinux -y
修改配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf #将模板文件拷贝到etc目录下
vim /etc/dhcp/dhcpd.conf
--------------------------------------------------
subnet 192.168.102.0 netmask 255.255.255.0 {
range 192.168.102.10 192.168.102.50;#获取IP地址的地址池
option routers 192.168.102.1;#网关
next-server 192.168.102.131; #tftp地址
filename "pxelinux.0";#指明文件名
}
---------------------------------------------------
vim /etc/xinetd.d/tftp
----------------------------
disable = no #开启tftp服务
---------------------------
cd /var/ftp/
mkdir centos7
mount /dev/sr0 centos7
cd centos7/isolinux/
cp initrd.img vmlinuz /var/lib/tftpboot/ #拷贝到站点文件
cd /var/lib/tftpboot/
rpm -ql syslinux |grep pxelinux.0
cp /usr/share/syslinux/pxelinux.0 ./
mkdir pxelinux.cfg #必须取这个名字
cd pxelinux.cfg/
vim default
-----------------------------------------------------------------------------
default auto
#prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.102.131/centos7
label linux text
kernel vmlinuz
append text initrd =initrd.img method=ftp://192.168.102.131/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.131/centos7
--------------------------------------------------------------------------------------
#/var/lib/tftpboot
#四大文件
#initrd.img vmlinux(光盘内)
#pxelinux.0 (安装syslinux)
#pxelinux.cfg (手动创建文件夹)
#创建default文件
无人值守
yum install system-config-kickstart -y
图形化操作
cd /var/ftp/
vim /var/lib/tftpboot/pxelinux.cfg/default
--------------------------------------------
ks=ftp://192.168.102.131/ks.cfg
-------------------------------------------------
关闭防火墙 selinux
开启服务
systemctl start dhcpd
systemctl start tftp
systemctl start vsftpd
1.修改网卡
添加网卡仅主机模式
2.DHCP服务配置
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
3.TFTP服务配置
4.syslinux配置、ftp服务配置
[root@localhost pxelinux.cfg]# vim default
#在这个目录下写default文件,这个文件不会写可以再开一个会话,到isolinux.cfg中来查看
default auto
#prompt 1
#表示开机时需要鼠标点一下确认,这边把他注释掉了,不确认,直接安装
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.102.131/centos7
label linux text
kernel vmlinuz
append text initrd =initrd.img method=ftp://192.168.102.131/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.131/centos7
[root@localhost isolinux]# pwd
/var/ftp/centos7/isolinux
[root@localhost isolinux]# vim isolinux.cfg
5.关闭防火墙,selinux,起服务
6.Kickstart无人值守
[root@localhost ~]#yum install system-config-kickstart -y
回到终端,使用图形化工具
[root@localhost ~]#vim anaconda-ks.cfg
#在桌面下的这个文件中,将一些软件包放刚刚只做完的ks.fg文件/var/lib/tftpboot/ks.cfg
#粘贴到最后即可
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
7.测试
新建两台虚拟机用于测试,网络设置仅主机模式,内存设置为2G
等待片刻后就安装成功了
四、总结
注:四个配置文件都要放在这个站点下
#/var/lib/tftpboot
#四大文件
#initrd.img vmlinux(光盘内)
#pxelinux.0 (安装syslinux)
#pxelinux.cfg (手动创建文件夹)
#创建default文件
安装过程:
分配给同一局域网内新加机器的地址(配置文件)
tftp服务端开启
安装syslinux 取得 pxelinux.0 文件、和vsftpd服务
挂载安装源(mount /dev/sr0 /var/ftp/centos7)
将四大文件拷入 (/var/lib/tftpboot initrd.img pxelinux.0 pxelinux.cfg/default vmlinuz)
将服务开启,关闭防火墙,selinux