基于PXE自动化安装linux系统
可以通过光盘人工安装几十台linux系统,但是如果上百台甚至更多呢?所以下面将进行通过网卡引导基于PXE的自动化安装linux系统的实验。
实验前提:网卡功能需带有dhcp和tftp客户端功能
实验原理:
(1)通过dhcp功能向dhcp服务器获取IP地址以及tftp服务器地址和启动的引导程序pxelinux.0
(功能相当于grub)
(2)继续向tftp服务器获取启动时的必要文件:菜单页面isolinux.cfg(在tftp路径下的菜单命名为default
)和启动内核vmlinuz以及initrd等
(3)在isolinux.cfg(default
)中提前配置好的kickstart文件地址(此处通过配置本地http获取)
(4)kickstart中定义启动时安装软件安装包的yum源路径此(处通过配置本地http获取)
(5)依赖启动安装向导和yum源路径即可自动安装所选择的操作系统版本
实验步骤:
(1)yum -y install dhcp tftp-server httpd
安装所需要的服务,并设置为开机启动systemctl enable --now httpd dhcpd tftp
,但是提示报错
[root@route2/var/lib/tftpboot]$systemctl enable --now httpd dhcpd tftp
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.
原因:这是因为dhcp配置文件/etc/dhcp/dhcpd.conf
中的配置是空的,可以通过复制摸板进行修改即可
其中:
range
:表示dhcp的Ip范围
option routers
:指定网关
next-server
:指向tftp服务器地址
filename
:获取tftp下的文件
[root@route2/var/lib/tftpboot]$cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@route2/var/lib/tftpboot]$vim /etc/dhcp/dhcpd.conf
option domain-name "thomas.org";
option domain-name-servers 114.114.114.114,8.8.8.8;
default-lease-time 10000;
max-lease-time 120000;
log-facility local7;
subnet 192.168.7.0 netmask 255.255.255.0 {
range 192.168.7.100 192.168.7.200;
option routers 192.168.7.2;
filename "pxelinux.0";
next-server 192.168.7.70;
}
(2)配置tftp文件目录下/var/lib/tftpboot
的文件,获取启动时必要的相关文件。
启动必要文件列表如下:
.
├── 6
│ ├── initrd.img
│ └── vmlinuz
├── 7
│ ├── initrd.img
│ └── vmlinuz
├── 8
│ ├── initrd.img
│ └── vmlinuz
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└── default
pxelinxu.0
:网卡引导驱动程序,也是第一个需要运行的程序
6、7、8
:三个目录分别存放的是对应操作系统版本的启动内核
pxelinux.cfg
:这是一个目录
default
:该文件在pxelinux.cfg目录下,相当于grub中stage2阶段的配置文件,分别创建对应6、7、8、三个版本的菜单
menu.c32
:启动时的菜单驱动程序,用来显示default中定义的菜单选项
ldlinux.c32 、libutil.c32、libcom32.c32
:centos8启动menu.c32前必须先加载的文件,centos6和7启动时则不需要这三个文件
default内容如下(参考光盘下的isolinux/isolinu.cfg即可):
default menu.c32
timeout 600
menu title autuinstall
label linux centos 8 mini
menu label Install CentOS ^8 mini
kernel 8/vmlinuz
append initrd=8/initrd.img ks=http://192.168.7.3/ksdir/ks8-mini.cfg
label linux centos7 mini
menu label Install CentOS ^7 mini
kernel 7/vmlinuz
append initrd=7/initrd.img ks=http://192.168.7.3/ksdir/ks7-mini.cfg
label linux centos6 mini
menu label Install CentOS ^6 mini
kernel 6/vmlinuz
append initrd=6/initrd.img ks=http://192.168.7.3/ksdir/ks6-mini.cfg
label local
menu default
menu label Boot from ^local driv
localboot 0xffff
default menu.c32:默认加载菜单的文件为menu.c32
timeout 600:设置倒计时,单位为0.1s
menu title
autuinstall:大标题
label
: 设置标签
menu label
:菜单选项
kernel 8/vmlinuz
:相对tftpboot路径下启动内核的文件路径
append initrd=7/initrd.img
:相对tftpboot路径下启动内核的文件路径
ks=http://192.168.7.3/ksdir/ks8-mini.cfg
:kickstart路径,此处通过http方式获取
menu default
:进入菜单时的默认选项
localboot 0xffff
:表明启动当前已装系统而不是重新安装系统
效果图如下:
(3)配置ks路径:上述已经安装好httpd服务,httpd的服务路径为/var/www/html/
,在此路径下创建ksdir目录,并将三个版本的ks启动文件放入
kickstart文件中指定了安装时的源,而yum源也是根据http方式配置的epel源。
利用system-config-kickstart配置ks文件:https://www.linuxidc.com/Linux/2018-07/153260.htm
kickstart配置解释:https://blog.csdn.net/jiajiren11/article/details/79882254
(5)在此基于PXE的自动化安装部署实验已经完成,只要在电脑启动时选择网卡引导启动即可,根据菜单选项安装所需的操作系统版本。