linux无人值守批量安装系统[centos]
PXE协议详解:
PXE,预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
PXE工作原理
1.PXE client从自己的PXE网卡启动,向本网络中的DHCP服务器请求ip地址
2.DHCP服务器收到dhcp请求后,分配dhcp地址池中ip给PXE client
3.PXE client向本网络中的TFTP服务器索取bootstarp文件
4.PXE client取得bootstarp文件后之执行pxelinux.0文件引导,使用pxelinux环境来引导os安装程序。
5.PXE client然后读取pxelinux.cfg文件夹中的default(isolinux.cfg)引导文件,通过TFTP服务器加载内核vmlinuz和根文件系统(boot.msg,vesamenu.c32,initrd.img,splash.jpg),通过http服务器加载ks.cfg引导文件。
6.启动linux内核完成安装
PXE必要条件
1、pxe client必须支持pxe用户端功能,并且开机时选择网络启动,这样系统才能以网络的方式进入pxe启动程序
2、pxe服务器必须至少提供DHCP及TFTP的服务才行,且其中
DHCP服务器必须能够除未pxe client分配ip地址外,还需告知tftp所在的位置(即pxelinux.0的文件位置)
TFTP服务器则为pxe client 提供bootloader 及 kernel 等重要文件下载服务
3、使用NFS/HTTP/FTP之一的服务器提供pxe client所需程序及软件来源等通讯协议
配置环境
服务器主机名:kickstart ip:192.168.60.158 用途:DHCP,TFTP,KICKATART服务器端
客户端主机名:xiaoqiang ip:dhcp分配 用途:pxe客户端
关闭防火墙和临时关闭selinux:systemctl stop firewalld && setenforce 0
实验版本:CentOS Linux release 7.6.1810 (Core) ------>目测所有7的版本通用
配置http服务
这里使用apache服务作为http的服务器,对外提供服务,主要目的是打不光盘镜像文件。--->nginx也可哦~
#下载apache服务并启动:[root@kickstart] yum install -y httpd && systemctl start httpd
#创建目录并把centos7镜像挂载:[root@kickstart] mkdir /var/www/html/xiaoqiang && mount /dev/cdrom /var/www/html/xiaoqiang/
下面是浏览器访问结果:
安装与配置tftp服务
简单文件传输协议也称小型文件传输协议(Trivial File Transfer Protocol, TFTP),工作在UDP/69 端口,是一种于1981年在RFC 783中定义的简化的文件传输协议(FTP)。
1:安装tftp服务:
# [root@kickstart] yum install -y tftp-server xinetd
2:修改默认配置文件
# [root@kickstart] vim /etc/xinetd.d/tftp ------->如下
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
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
只需将disable原来的yes改为no,no表明tftp处于启用状态 ,yes表示tftp处于禁用状态
3:启动tftp服务并查看端口
# [root@kickstart] systemctl start xinetd.service && lsof -i:69
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 108492 root 5u IPv4 427978 0t0 UDP *:tftp
安装与配置DHCP服务
dhcp服务用于给pxe客户端分配ip地址。
1:安装dhcp服务
# [root@kickstart] yum install -y dhcp
2:配置dhcp服务
# [root@kickstart] vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
subnet 192.168.60.0 netmask 255.255.255.0 {
range 192.168.60.10 192.168.60.12; ------->可分配的ip地址
option subnet-mask 255.255.255.0; --------->指定子网掩码
default-lease-time 21600; ----------->指定默认IP地址租用期限
max-lease-time 43200; -------->指定IP地址最长租用期限
next-server 192.168.60.158; --------->告诉客户端tftp服务器地址
filename "pxelinux.0"; ------>告诉客户端从tftp根目录下载pxelinux.0文件
}
3:启动dhcp服务并查看端口
# [root@kickstart] systemctl start dhcpd && netstat -lntup | grep dhcp && ps -ef | grep dhcp
kickstart部署
配置pxe引导
1:安装SYSLinux
# [root@kickstart] yum install syslinux -y
2:复制启动菜单程序文件
#[root@kickstart] cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
修改客户端配置文件
1:创建pxelinux.cfg 文件夹并进入此文件夹
#[root@kickstart] mkdir /var/lib/tftpboot/pxelinux.cfg && cd /var/lib/tftpboot/pxelinux.cfg
2:复制isolinux文件到tftp
#[root@kickstart pxelinux.cfg] cp /var/www/html/xiaoqiang/isolinux/isolinux.cfg ./default
3:备份并精简defalt文件
#[root@localhost pxelinux.cfg] cp default default.bak && vim default
default kickstart
timeout 600
display booot.msg
label kickstart
menu label ^Install Centos 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.60.158/ksconfig/ks.cfg --->告知安装程序ks.cfg文件的位置
配置ks.cfg文件
1:创建ks目录及复制文件
#[root@kickstart] cd /var/www/html/ && mkdir ksconfig && cp /root/anaconda-ks.cfg /var/www/html/ksconfig/ks.cfg && cd ksconfig
2:给予文件权限
#[root@localhost ksconfig] chmos 644 ks.cfg
3:修改配置文件
install
url --url="http://192.168.60.158/cetnos7/"
text
# System authorization information
auth --enableshadow --passalgo=sha512
# Run the Setup Agent on first boot
firstboot --disabled
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --gateway=192.168.60.1 --netmask=255.255.255.0
network --hostname=xiaoqiang
# Root password
rootpw 1
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" rhgb quiet" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
zerombr
part /boot --fstype=ext4 --size=500
part /swap --size=1024
part / --fstype=ext4 --size=20480
reboot
%packages
@^minimal
@compat-libraries
@core
@debugging
@development
@security-tools
@smart-card
@system-admin-tools
kexec-tools
%end
客户端无人值守安装
在虚拟机准备好一台服务器:建议物理内存4G,硬盘内存40G。虚拟机直接开机就ok了不需要bios调什么网卡启动,vm16版本已经不需要多余操作了,你前面的步骤没问题基本自动会执行,加载相关的配置后,会自动安装客户端操作系统。大约15-20分钟。
实验后笔者的心里话
网上千篇一律的pxe无人值守批量安装,如果直接按照来做的话,结果不尽人意,笔者的实验环境是centos7.6,目测7版本都是我这样的,你完全可以当个cv工程师直接复制命令一步步执行,至于你有要求安装怎么样的系统则网上看看ks.cfg文件详解等,自己动手修改即可.
ks.cfg 文件,参数讲解:https://www.linuxidc.com/Linux/2013-07/87299.htm