本文中将介绍基于PXE和cobbler两种方式的自动化安装。两种方式实现的效果是一样的,但是cobbler是PXE的二次封装,在使用上更加方便,集成多个软件进行实现。关于自动化安装中的相关概念和ks文件等的介绍,详见博客:
本文是对本地自动化安装系统的扩展。同时,本文在文档后部附上了关于自动化安装PXE系统环境的脚本。
2 基于PXE 自动化安装
PXE(PrebootExcutionEnvironment)预启动执行环境,Intel公司研发基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统PXE可以引导和安装Windows,linux等多种操作系统
PXE网络自动化安装:通过搭建网络yum源(http,ftp,nfs三者选一),tftp服务器,dhcp服务器,原理是,通过dhcp服务器,使得机器启动的时候,获取到相关的ip,在dhcp里指定了next-server,该next-server就是tftp服务器的ip,这样,机器获取到ip后,会到指定的tftp服务器的默认路径/var/lib/tftpboot下去下载相关的文件,首先是加载pxelinux.cfg目录下的default文件,该default文件就是安装机器的菜单选项,在这菜单里,指定kickstart文件路径和/var/lib/tftpboot下的initrd.img和vmlinuz的路径,使得需要安装的对应系统能够启动并加载kickstart文件进行安装。在kickstart文件里我们将指定了安装包的路径。
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目录下,这是系统菜单文件,格式和isolinux.cfg格式一样,功能也是类似),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
.Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
.Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
.Client启动Linux内核
.Client下载安装源文件,读取自动化安装脚本
这里用PXE自动化安装CentOS7为例说明
.安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
.安装软件包
环境准备,搭建以下三个服务
httpd/nfs/ftp(三选一,用于搭建yum源)tftp-server dhcp
文件准备
通过以下两个工具生成相关文件
syslinux : 生成menu.c32 和 pxelinux.0
system-config-kickstart:生成 kickstart文件
.配置文件共享服务:
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html /centos/7
mount /dev/sr0/ var/www/html/centos/7
.准备kickstart文件
/var/www/html/ks/centos7.cfg#注意:权限,其他人要分配可读权限
安装路径,这次是用http服务器作为yum源,ks文件中url --url=http:/192.168.32.72/os/7
开机时加载网卡,onboot选项
.配置tftp服务
systemctl enable tftp.socket(centos6:chkconfig tftp on)
systemctl start tftp.socket(centos6:service xinetd restart)
.配置DHCP服务
可以直接拷贝配置文件进行修改,主要该要使用的网段range和指定tftp服务器next-server和tftp服务器上的默认的文件filename
systemctl enable dhcpd
vim /etc/dhcp/dhcpd.conf
option domain-name "sunny.com";
option domain-name-servers 192.168.32.61;
default-lease-time 86400;
max-lease-time 86400;
subnet 192.168.32.0 netmask 255.255.255.0 {
range 192.168.32.100 192.168.32.200;
option routers 192.168.32.1;
next-server 192.168.32.72;
filename "pxelinux.0";
}
systemctl start dhcpd
配置tftp服务
.准备相关文件
tftp路径是
#pxelinux.0等文件来自syslinux这个软件包,要先进行安装
yum install syslinux
mkdir/var/lib/tftpboot/pxelinux.cfg/
#pxelinux.cfg把必要的文件复制到这个路径下
cp/usr/share/syslinux/{pxelinux.0,menu.c32}/var/lib/tftpboot/
#pxelinux.0启动菜单,启动操作系统的文件
#menu.c32这个是菜单风格
cp/misc/cd/isolinux/{vmlinuz,initrd.img}/var/lib/tftpboot/
#计算机启动所需的内核文件和虚拟根文件
cp/misc/cd/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default
#isolinux.cfg菜单文件,需要改名为default
当前文件列表如下:
/var/lib/tftpboot/
├──initrd.img
├──menu.c32
├──pxelinux.0
├──pxelinux.cfg
│└──default
└──vmlinuz
.准备启动菜单
修改启动菜单
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
#这是启动菜单的风格,需要根据实际情况进行修改,原来是vesamenu.c32
timeout 600
menu title PXE INSTALL MENU
label autoa
menu label Auto Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.32.72/ks/centos7.cfg
#这里的应答文件是基于网络的,根据实际情况修改
label manual
menu label Manual Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.32.72/centos/7
#手动安装应答文件不写,但是手动安装要找yum源安装,所以要指定yum源路径
label local
menu default
#如果不选择,默认就是menu default所在的行
menu label ^Boot from local drive
localboot 0xffff
menu end
到这里,pxe安装centos7的环境已经准备完成了,这样子,当有机器需要安装系统的时候,开机,选择网络启动就会按照PXE的设置进行安装
3 基于cobbler自动化安装系统
cobbler 介绍