一, 概述
1, 关于 PXE
Preboot Execution Environment 翻译过来就是预启动执行环境; 简称 PXE; 传统安装操作系统的方法是 CDROM 或 U 盘引导, 而 PXE 技术解决的是从网络引导安装系统, 当然 PXE 技术不是什么新技术了, 是 Intel 和 Microsoft 在 1998 年定义的更大 PC98 规范的一部分. 有关 PXE 规范的 详细文档
2,pxe 引导相关角色说明
PXE 作用: 引导装机
Kickstart 作用: 将安装系统的过程中通过 ks.cfg 文件中的配置信息, 实现自动安装配置达到无人值守自动安装;
TFTP: 支持 PXE 引导的网卡中从 tftp 服务器端下载 pxelinux.0 文件, vmlinuz,initrd.img 等内核引导文件;
DHCP: PXE 引导过程中获首先获取 IP 地址, 并提供 pxelinux.0 文件位置;
HTTP: 用于下载 ks.cfg 以及系统镜像文件
通用的无人值守做法如下:
通过一台没有系统的裸机网卡支持 pxe 协议, 开机后从 dhcp 服务器获取 ip 和 pxelinux.0 文件并从 tftp 服务器上加载相关内核引导文件; 同时下载 kickstart 的 cfg 配置文件, 指定系统镜像文件位置加载安装, 从而实现无人值守安装!
如图 (图片来自于网络):
3, 环境准备说明
本次测试环境说明:
PXE 服务器: CentOS7.4 基于 virtualboxt 的虚拟机
ip:172.16.3.152 (可上网) 内部测试 ip(仅主机模式) 192.168.56.254
配置服务及安装软件包如下:
DHCP
tftp
http
syslinux 包, 提供引导文件
以上所需要的软件包均通过 yum 安装
[root@pxe ~]# yum install dhcp tftp tftp-server syslinux httpd -y
防火墙, selinux 关闭; 生产线请开放 UDP 67 68 69 tcp/80 端口;
测试机可直接新建安装 CentOS7 系统 注意的就是网络选择仅主机即可; 后面说明
接下来就配置并测试!
二, 基于 httpd 搭建本地安装源
1, 挂载光盘制作安装源
## 挂载 CentOS7 光盘
[root@pxe ~]# mkdir /media/cdrom
[root@pxe ~]# mount /dev/cdrom /media/cdrom
[root@pxe ~]# mkdir -pv /var/www/html/centos/7/x86_64
# 绑定挂载到 http 默认目录下
[root@pxe ~]#mount --bind /media/cdrom /var/www/html/centos/7/x86_64
2,kickstart ks.cfg 配置文件准备
以家目录下的 anaconda-ks.cfg 为模板制作 ks 文件
[root@pxe ~]# cd /var/www/html;mkdir ks
[root@pxe ~]# cat ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
#cdrom
# Install OS instead of upgrade
install
# Use network installation
url --url=http://192.168.56.254/centos/7/x86_64
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
network --bootproto=dhcp --device=enp0s3 --onboot=off --ipv6=auto
network --hostname=localhost.pkey.cn
# Root password
rootpw --iscrypted $1$lSeSXuy.$7HmGY9vVxEGEGB98qTUuv1
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
%packages
@^minimal
@core
kexec-tools
vim
wget
httpd
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
以上是我的参考配置, 您也可以作为模板只需要简单修改以下几行:
安装的网络镜像地址:
url --url= http://192.168.56.254/centos/7/x86_64
安装后的系统密码:
rootpw --iscrypted $1$lSeSXuy.$7HmGY9vVxEGEGB98qTUuv1
密码可以通过 openssl passwd -1 "PASSWORD"
生成格式是 sha512 的密码替换上去即可;
另外安装后可以在 %packages 与其 %end 之间配置预安装的包等, 此处让程序在安装好系统后预安装 wegt vim 软件包; 更多好玩的配置请
请参看 redhat 官方文档
3, 配置启动
[root@pxe ~]# systemctl start httpd
[root@pxe ~]# systemct enable httpd
三, 配置 DHCP 服务
1, 配置 dhcp 服务
dhcp 配置文件在 / etc/dhcp / 目录下, 默认的配置文件没有, 但我们可以在帮助文件中找到模板示例文件加以修改
[root@pxe ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@pxe ~]# egrep -v '(^$|^#)' /etc/dhcp/dhcpd.conf
option domain-name "pkey.cn";
option domain-name-servers 192.168.56.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.56.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.56.110 192.168.56.120;
option routers 192.168.56.1;
next-server 192.168.56.254; #tftp server 也是本机, 可以分开
filename "pxelinux.0"; #引导文件
}
2, 启动与查看
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd
查看服务状态, 已经监听在 UDP 67 上
[root@pxe ~]# ss -tunl
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:55770 *:*
udp UNCONN 0 0 *:47150 *:*
udp UNCONN 0 0 *:67 *:*
四, 配置 tftp 服务
安装好 tftp-server 软件包后 默认的数据根目录是 / var/lib/tftpboot/ 无须修改, 只需要复制一些软件引导文件进来即可
1, 相关文件准备
## 引导文件
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 内核文件
[root@pxe ~]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
# 引导菜单
[root@pxe ~]# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot
# 制件引导默认文件
[root@pxe ~]# mkdir -pv /var/lib/tftpboot/pxelinux.cfg
[root@pxe pxelinux.cfg]# cat default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu
LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.56.254/centos/7/x86_64 ks=http://192.168.56.254/ks/ks.cfg
2, 启动配置开机自启
[root@pxe tmp]# systemctl enable tftp
[root@pxe tmp]# systemctl start tftp
3,tftp 测试
/var/lib/tftpboot / 目录文件结构
结构查看
[root@pxe tftpboot]# tree -L 2
.
chain.c32
initrd.img
mboot.c32
memdisk
menu.c32
pxelinux.0
pxelinux.cfg
?? default
vmlinuz
测试 tftp
[root@pxe tmp]# pwd;ls
/tmp
[root@pxe tmp]# tftp 192.168.56.254
tftp> get vmlinuz
tftp> quit
[root@pxe tmp]# pwd;ls
/tmp
vmlinuz
五, PXE 无人值守安装测试
1, 修改 virtualbox 网络
管理 --> 全局设定 --> 网络 -->"仅主机 (Host-Only) 网络"--> 双击 vboxnet0 --> 把 virtualbox 自带的仅主机网络的 DHCP 服务关掉, 如图:
2, 新建虚拟机
和用 cdrom 安装虚拟的唯一区别是不用挂载镜像, 只需要修改新的虚拟机的网络类型为 "仅主机 (Host-Only) 网络" 如图:
开机 --> 按 F12 选择 LAN 启动, 如图:
再接下来就是很熟悉的图形化自动安装的过程了! 整个安装系统的过程 基本上也就五六分钟的样子, 具体视安装包多少与系统网络性能而定; 想了解具体过程, 自行动手试试吧!
总结:
以上就是基于 PXE 协议和 syslinux 引导文件, kickstart 配置文件, DHCP,tftp-server,httpd 服务制作本地安装源协作完成的无人值守安装系统, 也可以在这套环境 中加入 CentOS6 的安装, 只需要添加修改配置文件即可!
自动化运维之 CentOS7 下 PXE+Kickstart+DHCP+TFTP+HTTP 无人值守安装系统
来源: http://www.bubuko.com/infodetail-2484609.html