Linux高级篇–运维自动化之PXE安装系统
一、 PXE安装系统
PXE介绍
- PXE
Preboot Excution Environment 预启动执行环境
Intel公司研发
基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统
PXE可以引导和安装Windows,linux等多种操作系统
PXE工作原理
- Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client
- Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0
- Client执行接收到的pxelinux.0文件
- Client向TFTP Server发送针对本机的配置信息文件(在TFTP 服务的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
- Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
- Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
- Client启动Linux内核
- Client下载安装源文件,读取自动化安装脚本
PXE自动化安装CentOS7
- 安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
- 安装软件包
yum -y install httpd tftp-server dhcp syslinux system-config-kickstart
- 配置文件共享服务,配置基于http服务的yum仓库:
systemctl enable httpd 把http服务设置为开机自启动
systemctl start httpd 启动http服务
mkdir -p /var/www/html/centos/{7,ks} 创建挂载光盘以及存放kickstart的目录
mount /dev/sr0 /var/www/html/centos/7 挂载光盘
登录http服务进行测试,是否搭建成功
- 准备kickstart文件
使用系统自带的模板文件/etc/anaconda-ks.cfg,推荐使用图形工具system-config-kickstart制作。
注意:在centos7系统选择安装包时无法选择,需要把本地yum仓库名更改[development]
把kickstart文件ks7.cfg复制到/var/www/html/ksdir目录下
cp ks7.cfg /var/www/html/ksdir
注意:要根据情况更改应答文件中指向yum仓库的路径
注意更改文件权限:
chmod 644 /var/www/html/ksdir/ks7.cfg
- 配置DHCP服务
dhcp配置文件默认为空,使用模板文件进行修改
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
更改内容:域名、dns、subnet本地网卡所在网段,dhcp分配地址池范围、网关
最重要的是:filename "pxelinux.0"
next-server 192.168.32.129 指向本机(本机作为tftp服务器)
vim /etc/dhcp/dhcpd.conf
27 subnet 192.168.32.0 netmask 255.255.255.0 {
28 range 192.168.32.10 192.168.32.100;
29 filename "pexlinux.0";
30 next-server 192.168.32.129;
31 }
systemctl enable dhcpd
systemctl start dhcpd
- 配置tftp服务
systemctl enable tftp.socket 把tftp服务设置为开机自启动
systemctl start tftp.socket 开启tftp服务
- 准备相关文件
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
/var/lib/tftpboot目录下文件列表如下:
tree /var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
- 自定义启动菜单
vim /var/lib/tftpboot/pxelinux.cfg/default
1 default menu.c32
2 timeout 60
3
4 menu title PXE CentOS 7
5
6 label linux
7 menu label Auto Install ^Mini CentOS 7
8 kernel vmlinuz
9 append initrd=initrd.img ks=http://192.168.32.129/ksdir/ks7.cfg
10
11 label local
12 menu default
13 menu label Boot from ^local drive
14 localboot 0xffff
重启tftp服务
systemctl restart tftp
查看三个服务端口68,67,80是否启动
测试是否能够通过网络启动
PXE自动化安装CentOS6
- 安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
- 1.安装相应软件包,开启服务,设置为开机自启动
yum install dhcp httpd tftp-server syslinux
chkconfig tftp on
chkconfig xinetd on
chkconfig httpd on
chkconfig dhcpd on
service httpd start
service xneted start
- 2.准备Yum源和相关目录
mkdir -pv /var/www/html/centos/{6,ks}
mount /dev/sr0 /var/www/html/centos/6
把光盘挂载到/var/www/html/centos/6
mkdir /var/www/html/centos/6
mount /dev/sr0 /var/www/html/centos/6
- 3.准备kickstart文件
使用系统自带的模板,推荐使用图形界面制作。
把kickstart文件ks6.cfg复制到/var/www/html/ksdir目录下
cp ks6.cfg /var/www/html/ksdir
注意:要根据情况更改应答文件中指向yum仓库的路径
注意权限:
chmod 644 /var/www/html/centos/ks/ks6.cfg - 4.准备相关的启动文件
配置tftp服务,复制文件到/var/lib/tftpboot
复制pxelinux.0文件到/var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
不使用自定义菜单,使用系统默认菜单
复制/mnt/cdrom/isolinux/下启动菜单用到的文件到/var/lib/tftpboot目录下
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
其他文件:
cp /mnt/cdrom/isolinux/{boot.msg,initrd.img,splash.jpg,vesamenu.c32,vmlinuz} /var/lib/tftpboot
/var/www/tftpboot目录结构如下:
tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.msg
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
│ └── default
├── splash.jpg
├── vesamenu.c32
└── vmlinuz
1 directory, 7 files
- 5.准备启动菜单文件
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 指定菜单风格
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to wang CentOS 6
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
menu label ^Auto Install an Mini system
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.32.128/ksdir/ks6.cfg
最小化安装系统指定应答文件路径ks=http://192.168.32.128/ksdir/ks6.cfg
label vesa
menu label ^Manual Install an system
kernel vmlinuz
append initrd=initrd.img repo=http://192.168.32.128/centos/6
手动安装,类似于救援模式,只需去掉rescue单词即可
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue repo=http://192.168.32.128/centos/6
救援模式要使用救援模式,需要指定仓库路径repo=http://192.168.32.128/centos/6
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
本地安装 更改系统默认启动项为本地启动
- 6.配置dhcp服务
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
subnet 192.168.32.0 netmask 255.255.255.0 {
range 192.168.32.10 192.168.32.100
next-server 192.168.32.128
filename "pxelinux.0"
}
service dhcpd start
查看三个服务端口68,67,80是否启动
测试是否能够通过网络启动