PXE+Kickstart自动化装机
PXE+Kickstart自动化装机简介
https://docs.openeuler.org/zh/docs/22.03_LTS/docs/Installation/使用kickstart自动化安装.html
操作系统版本声明: RHEL7
使用kickstart
进行Linux系统的自动化安装
的tftp
+dhcp
+ftp/http/nfs
环境要求如下:
tftp
:提供vmlinuz
和initrd
文件。
dhcpd/pxe
:提供DHCP
服务。
httpd
:部署kickstart文件
和系统安装文件
。
ISO
:Linux-dvd.iso
系统镜像文件。
0安装配置DHCP
配置服务器本机地址为静态192.168.10.1
# 给eth0配置静态ip,网关
nmcli con add con-name dhcpserver ifname eth0 type ethernet ip4 192.168.10.1/24
## con-name dhcpserver 表示一个会话名称叫 company
## ifname eth0 表示指定一个网络接口eth0
## type ethernet 表示网络类型是ethernet(以太网)
## ip4 192.168.10.1 表示配置IPV4 地址 192.168.10.1/24,24是子网掩码
# 启用dhcpserver配置文件
nmcli con up dhcpserver
安装dhcp
# 安装dhcp
yum install dhcp -y
# 开始dhcpd
systemctl start dhcpd
# 开机自启dhcpd
systemctl enable dhcpd
配置dhcp
vim /etc/dhcp/dhcpd.conf
# 添加配置信息
## 允许开机时给用户分配ip
allow booting;
## 允许了BOOTP引导程序协议,没有os的机器也能获取静态IP
allow bootp;
## 固定格式
ddns-update-style none;
## 忽略客户端请求的更新内容
ignore client-updates;
## 作用域--固定格式
subnet 192.168.10.0 natmask 255.255.255.0 {
## 分配100个ip
range dynamic-bootp 192.168.10.100 192.168.10.200;
## 分配的子网掩码
option subnet-mask 255.255.255.0;
## dns信息--固定格式,有没有dns都要写
option domain-name-servers 192.168.10.10;
## 网关(服务器本机地址)
option routes 192.168.10.1;
## 作用时间21600秒--6小时
default-lease-time 21600;
## 最大租约时间12小时
max-lease-time 43200;
## 下一跳(网关)地址--固定格式/TFTP服务器ip地址
next-server 192.168.10.2;
## 用户加载的引导文件
filename "pxelinux.0";
}
# 保存
:wq!
# 检查配置是否有语法错误
service dhcpd configtest
# 重启dhcp服务
systemctl restart dhcpd
# 查看DHCP的67端口是否打开
ss -tunlp |grep 67
查看客户机dhcp获取情况
# 在DHCPServer上查看该文件,即可看到客户机的dhcp获取情况
cat /var/lib/dhcpd/dhcpd.lease
1搭建tftp-server
tftp
的端口号是69
,基于UDP
协议
安装tftp服务器
# 安装tftp-server
yum install tftp-server -y
# 启动xinetd服务
systemctl start xinetd
# 开机自启xinetd服务
systemctl enable xinetd
配置tftp
# 配置tftp
[root@local ~]# 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,表示开启tftp服务
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
# 保存配置文件
:wq!
# 重启xinetd服务
systemctl restart xinetd
测试tftp服务器
tftp不支持ls列出文件目录,只能通过get ‘文件全名’ 来下载文件
# 在另一条机器上安装tftp客户端
yum install tftp -y
# 连接tftp-server
tftp 192.168.10.11
# 从服务器上拉取文件(服务器上要有test文件)
tftp> get test文件
2安装配置vsftpd服务
需要将iso文件放在ftp服务器上
安装vsftpd
# 安装
yum install vsftpd -y
# 启动
systemctl start vsfptd
# 开机自启
systemctl enable vsftpd
配置vsftpd匿名访问
# 备份vsftpd配置文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
# 过滤vsftpd配置文件
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
#编辑主配置文件
vim /etc/vsftpd/vsftpd.conf
#是否允许匿名登陆
anonymous_enable=yes
anon_umask=022 #匿名用户上传文件的umask值
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建目录
anon_other_write_enable=YES #允许匿名用户修改目录名称或删除目录
# 给匿名目录/var/ftp/pub设置777权限
chmod -Rf 777 /var/ftp/pub
# 修改完配置文件需要重启vsftpd服务
systemctl restart vsftpd
将iso光盘镜像和应答文件复制到/var/ftp/pub
# 复制光盘镜像里的文件到pub
cp -rf /media/cdrom/* /var/ftp/pub/
# 复制应答文件到pub
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
# 为ks.cfg添加可读权限
chmod +r /var/ftp/pub/ks.cfg
编辑应答文件ks.cfg
ks.cfg 先手动安装第一台,确保所有参数都对,这样只需要修改下面参数即可。
vim ks.cfg
# 将cdrom安装方式修改为网络安装方式
##注释cdrom,添加url --url=ftp://xxxx
url --url=ftp://192.168.10.9
## 注意修改时区
3安装配置syslinux
SYSLinux是一个用于提供引导加载的服务程序(PXE)。与其说SYSLinux是一个服务程序,不如说是一个包含了很多引导文件的文件夹。在安装好SYSLinux服务程序后,/usr/share/syslinux目录中会出现很多引导文件。
安装syslinux
# 安装syslinux
yum install syslinux -y
挂载光盘
# 创建挂载点
mkdir -p /media/cdrom
# 挂载iso文件到挂载点
mount -o loop /media/CentOS-7-x86_64-DVD-1804.iso /media/cdrom
# 查看挂载状态
df -h
# 挂载为本地yum源
[local] #库名称
name=local #名称描述
baseurl=file:///media/cdrom #yum源目录,源地址为rpm的目录
gpgcheck=1 #检查GPG-KEY,0为不检查,1为检查
enabled=1 #是否用该yum源,0为禁用,1为使用
gpgcheck=0 #gpgcheck=0时无需配置
把pxelinux.0复制到TFTP服务程序的默认目录中
# 进入tftpboot目录
cd /var/lib/tftpboot
# 从syslinux文件夹下将引导文件复制过来
cp /usr/share/syslinux/pxelinux.0 .
# 从光盘里复制内核相关文件
cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
# 从光盘里复制启动图形菜单界面相关文件
cp /media/cdrom/isolinux/{splash.jpg,vesamenu.c32,boot.msg} /var/lib/tftpboot
# 创建开机菜单
## 创建pxe配置目录
mkdir /var/lib/tftpboot/pxelinux.cfg/
## 复制开机菜单到pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
查看ftfpboot目录树
/var/lib/tftpboot/目录树 1 directory, 7 files
├── boot.msg # Linux启动菜单配置信息,可手动修改。
├── initrd.img # 内存虚拟文件系统。用来临时的引导硬件到内核vmlinuz。
├── pxelinux.0 # PXE的启动引导文件,
├── pxelinux.cfg # 启动配置文件目录,手动创建,载入什么Linux内核文件来运行
│ └── default # /medir/cdrom/isolinux/isolinux.cfg
├── splash.jpg # 图形界面的背景图片,图片格式 640*480 jpg/png
├── vesamenu.c32 # 菜单主程序,启动图形界面,不可修改。
└── vmlinuz # 是可引导的、压缩的内核文件
编辑pxe引导的启动配置文件
查看启动配置文件参数
# /var/lib/tftpboot/pxelinux.cfg/ default
default vesamenu.c32 # 默认加载菜单主引导程序
#prompt 1
timeout 600 # 设置超时时间
display boot.msg # 显示主菜单
menu background splash.jpg # 设置菜单背景图片
menu title Welcome to CentOS 6.5! # 设置菜单标题
menu color border 0 #ffffffff #00000000 # 设置菜单字体颜色
... ... ...
label linux # 设置标签
menu label ^Install or upgrade an existing system # 设置菜单标签
menu default # 设置默认选择菜单
kernel vmlinuz # 设置内核文件位置,根目录为TFTP服务器根目录
append initrd=initrd.img ks=http://172.16.19.2/centos6.cfg
# 设置启动时加载kickstart文件
... ... ....
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
..............
修改启动配置文件参数
vim /var/lib/tftpboot/pxelinux.cfg/default
# 修改第1行default vesamenu.c32 为default linux
default linux
# 修改大约第61行下的append参数的值为加载远程目录的kickstart文件
### ks.cfg 是应答文件 quiet是静默安装参数
append initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet
4开始无人值守自动安装
- 0将pxe服务器的网线插到单独的(傻瓜)交换机上;
- 1将客户机(裸机)设置为允许网卡启动,插在同一交换机上
- 2客户机开机即可
- 3等待安装完成