基于PXE 和 Cobbler 自动安装Linux系统

本文中将介绍基于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工作原理

如下图

1240

原理介绍

.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 介绍

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13418.html