1. 理论部分
1) pxe简介
PXE (preboot execute environment ,预启动执行环境)工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统
2) 工作流程
1)PXE Client 从自己的网卡启动,向本网络中的DHCP服务器索取IP;
2)DHCP 服务器返回分配给客户机的 IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
3)PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
4)PXE Client 取得pxelinux.0 文件后之执行该文件;
5)根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
6)进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
3) kickstart简介
-
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
-
目的是为了 减少系统安装的过程中的人机交互,提高安装效率
2. 环境
本次操作使用VMware虚拟机进行操作,点击编辑-网络编辑器,先添加一个网卡,类型为仅主机,取消使用宿主机的dhcp
pxe服务器
PXE服务器建议使用固定IP
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens36"
DEVICE="ens36"
ONBOOT="yes"
IPADDR="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.10"
pxe客户机
点击新建虚拟机,配置好之后 直接启动 注意 客户机和服务器要使用同一种网络连接方式 否则无法通过pxe进行系统安装
3. 需求
- syslinux,提供pxelinux.0
- dhcp-server,为客户机提供IP
- tftp-server,为客户机提供简单文件传输(如传输pxelinux.0等)
- vsftpd,提供repo的系统文件服务
- CentOS 7(安装光盘
4. 安装和配置
pxe服务器
服务器配置本地yum
[root@localhost ~]# cat /etc/yum.repos.d/development.repo
[development]
name=base
baseurl=file:///mount
enabled=1
gpgcheck=0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install tftp-server vsftpd syslinux dhcp xinetd
[root@localhost ~]# mount /dev/cdrom /mount
#关于ftp
[root@localhost ~]# mkdir -p /var/ftp/centos
[root@localhost ~]# mount --bind /mnt /var/ftp/centos/ #vsftpd不允许软链接目录
#关于TFTP
[root@localhost ~]# mkdir -p /tftpboot/pxelinux.cfg #创建tftp启动目录
[root@localhost ~]# cp -a /mount/isolinux/* /tftpboot/
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[root@localhost ~]# cd /tftpboot/
[root@localhost tftpboot]# mv isolinux.cfg pxelinux.cfg/default
[root@localhost tftpboot]# vim pxelinux.cfg/default
把最上边的timeout 600 改成timeout 50 表示等待用户5秒(这里一个单位是1/10秒)
在所有的lable上添加以下内容 并将其下边的默认的两个label删除掉
label linux-kgc
menu label ^Install CentOS 7 kgc
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.10.10/ks.cfg quiet
[root@localhost pxelinux.cfg]# vim /etc/xinetd.d/tftp
把disable的yes改为no,另外,需要更改一下目录,如下图所示
13 server_args = -s /tftpboot
14 disable = no
#关于dhcp 具体修改如下图
[root@localhost pxelinux.cfg]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost pxelinux.cfg]# vim /etc/dhcp/dhcpd.conf
修改默认租约时间和最大租约时间,都改大一点
ddns-update-style none;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.10;
range 192.168.1.100 192.168.1.200;
next-server 192.168.1.10; #生命tftp服务器ip
filename "pxelinux.0"; #注意这里的filename是个相对路径,相对于 /tftpboot
}
#安装ks
[root@localhost pxelinux.cfg]# yum -y install system-config-kickstart
桌面启动,如下图 设置完之后保存在root目录
也可以用命令启动ks
[root@localhost tftpboot]# system-config-kickstart
[root@localhost ~]# vim ks.cfg
尾部添加如下内容
user --name=tiechui --password=1234.com
eula --agreed
[root@localhost tftpboot]# cp -a /root/ks.cfg /var/ftp/ks.cfg
[root@localhost tftpboot]# chmod +r /var/ftp/ks.cfg
pxe服务器启动服务
[root@localhost pxelinux.cfg]# systemctl start xinetd
[root@localhost pxelinux.cfg]# systemctl start dhcpd
[root@localhost pxelinux.cfg]# systemctl start vsftpd
pxe客户端操作
启动已经配置好的需要安装系统的虚拟机
之后就会自动化安装 无需干预 如下图所示
ks.cfg完整内容如下
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$WD3zvKhB$H5R80Hjd/5RYPHVoqMzk./
# Use network installation
url --url="ftp://192.168.10.10/centos"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Network information
network --bootproto=dhcp --device=ens32
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
part / --fstype="xfs" --grow --size=1
%packages
@gnome-desktop
@x11
tigervnc-server
xorg-x11-drv-keyboard
xorg-x11-drv-mouse
xorg-x11-drv-openchrome
%end
eula --agreed