1、概念介绍
搭建无人执行安装服务器需要从装网络引导安装操作系统,这样我们就可以不必走到机器那里插入CD-ROM光盘或者U盘手动一台一台安装操作系统,使用网络引导批量部署服务器操作系统。
服务架构:PXE + DHCP + TFTP + Kickstart + FTP
a. PXE
严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装系统的计算机中包含一个支持PXE的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。
协议分为client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。
运行PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。 此外,PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
b. KickStart
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;在其后的安装过程中当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。
c. 实验拓扑
主机名 | 角色 | Ip地址 |
Server | KickStart,ftp,tftp,dhcp | 192.168.137.5 |
Client01 | 客户端 | 192.168.137.6 |
b. 关闭 firewalld 和 selinux
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
SELINUX=disabled
e. vmware 环境
vmnet8 并 关闭dhcp
f. 配置本地yum源
修改本地仓库名称为development,负责kickstart无法找到软件包
cat /etc/yum.repos.d/centos.repo
[development]
name=centos_7
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
#gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2、安装 DHCP
# 安装dhcp
yum install -y dhcp
# 创建dhcp配置文件
vim /etc/dhcp/dhcpd.conf
# 或者赋值一个dhcp配置文件
cp /usr/share/doc/dhcp-4.25/dhcpd.conf.example /etc/dhcp/dhcpd.conf
# 为客户端指定所属的域名
option domain-name "example.org";
# 为客户端指定DNS服务器
option domain-name-servers 114.114.114.114,8.8.8.8;
# 定义默认租约时间,以秒为单位的租约时间,50%续约(续不上继续用),87.5%再次续约(续不上重新再IP)
default-lease-time 600;
# 最大租约时间,单位为秒,当客户端超过租约时间,却尚未更新IP时,最长可以使用该IP的时间
max-lease-time 7200;
# 定义日志类型为local7
log-facility local7;
subnet 192.168.137.0 netmask 255.255.255.0 {
# range 起始IP地址 结束IP地址
range 192.168.137.100 192.168.137.200;
# 为客户端指定默认网关
option routers 192.168.137.2;
# 指定 tftp服务器ip地址
next-server 192.168.137.5;
# 指定要从tftp服务器上下载的启动文件
filename "pxelinux.0";
}
启动服务查看端口
# 启动 dhcp 服务
systemctl start dhcpd
# 设置开机自启动
systemctl enable dhcpd
# 查看dhcpd 服务
systemctl status dhcpd
# 查看 dhcpd 端口
netstat -antup | grep dhcpd
3、安装TFTP
TFTP (Trivial File Transfer Protocol),中译简单文件传输协议或小型文件传输协议
# 安装TFTP
yum install -y tftp-server xinetd tftp
修改配置文件:/etc/xinted.d/tftp
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
per_source = 11
cps = 100 2
flags = IPv4
}
# 启动服务
systemctl start xinetd
systemctl start tftp
# 查看端口
netstat -antup | grep 69
4、安装ftp服务
# 安装vsftpd
yum install -y vsftpd
# 启动vsftpd服务
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd
# 查看服务端口
netstat -antup | grep vsftpd
5、安装 KickStart
a. 配置使用PXE启动所需的相关文件
# 安装kickstart syslinux
yum install -y system-config-kickstart syslinux
# 将pxelinux.0 赋值到 /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# 赋值pxe启动文件至 tftpboot中
cp /mnt/cdrom/images/pxeboot/* /var/lib/tftpboot
# 赋值镜像配置文件 至 pxelinux.cfg 中
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 编辑配置文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default linux
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=ftp://192.168.137.5/pub inst.ks=ftp://192.168.137.5/ks.cfg
- inst.repo:指定客户端安装操作系统所使用软件包的下载地址
- inst.ks:指定kickstart生成的自动应答文件存放地址
b. 生成 ks.cfg 文件
# 安装完毕后xhell重新连接服务器
yum install -y xorg-x11-xauth
# 安装语言包,防止出现乱码
yum groupinstall -y "fonts"
# 启动服务,生成ks.cfg文件
system-config-kickstart
① 基本配置
- 更改时区为亚洲上海:Asia/shanghai
- Root密码:123456
- 目标架构:x86 AMD64
- 勾选 安装后重启
② 安装方法
- 执行全新安装
- FTP,FTP服务器:ftp://192.168.137.5,FTP目录:pub
③ 引导装载
④分区信息
- 清除主引导记录
- 删除所有现在存分区
- 初始化磁盘标签
- 添加:/boot xfs 1024M swap swap 2048M / xfs 使用磁盘上全部未用空间
⑤ 网络配置
⑥ 验证:默认
⑦ 防火墙配置:关闭防火墙、关闭selinux
⑧ 显示配置:取消图形环境
⑨ 软件包选择:系统 -> 基本安装
⑩ 预安装脚本:无
⑪ 安装后要执行的脚本
⑫ 点击file -> save -> 下图配置 -> save
c. 创建新的虚拟机
- 将内存更改为2G
- 先取消绑定光盘
- 仅主机模式,取消dhcp
- 进入无人值守安装,安装完成挂载镜像,重新启动虚拟机。
6、常见错误
- yum配置文件的源名称为:development
- 安装时将虚拟机的内存改为至少2G
- 虚拟机取消dhcp
- 无人值守安装完成后,重新挂载镜像