快捷搜索:
来自 67677新澳门手机版 2019-11-17 12:45 的文章
当前位置: 67677新澳门手机版 > 67677新澳门手机版 > 正文

kickstart无人值守安装CentOS

kickstart cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html**

PXE kickstart无人值守安装CentOS 7,kickstartcentos


本文目录:

1.1 PXE说明

1.2 PXE流程

1.3 部署环境说明

1.4 部署DHCP服务

1.5 部署FTP

1.6 提供pxe的boot loader和相关配置文件

1.7 从安装镜像中获取Linux内核文件

1.8 设置开机菜单并提供系统安装文件

1.9 开机测试

1.10 通过pxe kickstart实现无人值守批量安装操作系统


本文是PXE kickstart无人值守安装CentOS6的续篇,主要是为了突出CentOS7和CentOS6配置kickstart时的不同点,例如pxelinux.cfg/default文件的变化,kickstart使用nfs提供时的bug等。为了文章的完整性和独立性,将很多CentOS6上直接复制搬到了本文。

 


1.1 PXE说明

所谓的PXE是Preboot Execution Environment的缩写,字面上的意思是开机前的执行环境。

要达成PXE必须要有两个环节:

(1)一个是客户端的网卡必须要支持PXE用户端功能,并且开机时选择从网卡启动,这样系统才会以网卡进入PXE客户端的程序;

(2)一个是PXE服务器必须要提供至少含有DHCP以及TFTP的服务!

且其中:

    · DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;

    · TFTP则提供客户端的boot loader及kernel file下载路径。

还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务。

本文是PXE kickstart无人值守安装CentOS6的续篇,主要是为了突出CentOS7和CentOS6配置kickstart时的不同点,例如pxelinux.cfg/default文件的变化,kickstart使用nfs提供时的bug等。为了文章的完整性和独立性,将很多CentOS6上直接复制搬到了本文。

1.2 PXE流程

如下图:图片来源于网络,虽不易理解,但细节描述的很好。

(1).Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将pxe环境下的Boot loader文件pxelinux.0的位置信息传送给Client。

(2).Client向PXE Server上的TFTP请求pxelinux.0,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。

(3).Client执行接收到的pxelinux.0文件

(4).Client向TFTP请求pxelinux.cfg文件(其实它是目录,里面放置的是是启动菜单,即grub的配置文件),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

(5).Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。

(6).Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。

(7).Client加载Linux内核(启动参数已经在4中的配置文件中设置好了)。

(8).Client通过nfs/ftp/http下载系统安装文件进行安装。如果在4中的配置文件指定了kickstart路径,则会根据此文件自动应答安装系统。

 

1.3 部署环境说明

如下图,172..16.10.10是PXE服务器,提供dhcp tftp nfs服务。其他该网段内的主机为待安装系统的主机群。

1.1 PXE说明

所谓的PXE是Preboot Execution Environment的缩写,字面上的意思是开机前的执行环境。

要达成PXE必须要有两个环节:

(1)一个是客户端的网卡必须要支持PXE用户端功能,并且开机时选择从网卡启动,这样系统才会以网卡进入PXE客户端的程序;

(2)一个是PXE服务器必须要提供至少含有DHCP以及TFTP的服务!

且其中:

    · DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;

    · TFTP则提供客户端的boot loader及kernel file下载路径。

还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务。

1.4 部署DHCP服务

首先安装dhcp服务端程序。

yum -y install dhcp

DHCP主要是提供客户端网络参数与TFTP的位置,以及boot loader的文件名。同时,我们仅针对内网来告知TFTP的相关位置,所以可以编辑/etc/dhcp/dhcpd.conf在subnet的区块内加入两个参数即可。其中PXE上专门为PXE客户端下载的boot loader文件名称为pxelinux.0。

vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;    
option routers 172.16.10.10;
option domain-name-servers 172.16.10.10;
subnet 172.16.10.0 netmask 255.255.255.0 {
        range 172.16.10.11 172.16.10.100;
        option subnet-mask 255.255.255.0;
        next-server 172.16.10.10;            # 就是TFTP的位置
        filename "pxelinux.0";               # 告知得从TFTP根目录下载的boot loader文件名
}

重启dhcp

systemctl start dhcpd

 

1.2 PXE流程

如下图:图片来源于网络,虽不易理解,但细节描述的很好。

图片 1

(1).Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将pxe环境下的Boot loader文件pxelinux.0的位置信息传送给Client。

(2).Client向PXE Server上的TFTP请求pxelinux.0,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。

(3).Client执行接收到的pxelinux.0文件

(4).Client向TFTP请求pxelinux.cfg文件(其实它是目录,里面放置的是是启动菜单,即grub的配置文件),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

(5).Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。

(6).Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。

(7).Client加载Linux内核(启动参数已经在4中的配置文件中设置好了)。

(8).Client通过nfs/ftp/http下载系统安装文件进行安装。如果在4中的配置文件指定了kickstart路径,则会根据此文件自动应答安装系统。

1.5 部署TFTP

从流程图中可以看出,boot loader文件pxelinux.0以及内核相关的配置文件(目录pxelinux.cfg下)主要都是由TFTP来提供的!

TFTP的安装很简单,直接使用yum即可。不过要告诉客户端TFTP的根目录在哪里,这样客户端才能找到相关文件。另外要注意,TFTP是由xinetd这个super daemon所管理的,因此设定好TFTP之后,要启动的是xinetd。

yum install tftp-server
yum -y install xinetd

默认TFTP服务的根目录是/var/lib/tftpboot/,为了少写些字母,将tftp的根目录修改为/tftpboot/。修改tftp的配置文件,主要是TFTP的根目录。

vim /etc/xinetd.d/tftp

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot    # 重点在这里!修改tftp的chroot根目录
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

创建tftp的根目录。

mkdir /tftpboot

启动TFTP并观察之:

systemctl start tftp

netstat -tulnp | grep xinetd
udp        0      0 0.0.0.0:69              0.0.0.0:*                           28465/xinetd 

接下来的文件必须要放置于/tftpboot/目录下。

1.3 部署环境说明

如下图,172..16.10.10是PXE服务器,提供dhcp tftp nfs服务。其他该网段内的主机为待安装系统的主机群。

图片 2

1.6 提供pxe的bootloader和相关配置文件

如果要使用PXE的开机引导的话,需要使用CentOS提供的syslinux包,从中copy两个文件到tftp的根目录/tftpboot下即可。整个过程如下:

yum -y install syslinux
cp -a /usr/share/syslinux/{menu.c32,vesamenu.c32,pxelinux.0}  /tftpboot/
mkdir /tftpboot/pxelinux.cfg

ls -l /tftpboot/
-rw-r--r-- 1 root root  61796 Oct 16  2014 menu.c32      # 提供图形化菜单功能
-rw-r--r-- 1 root root  26759 Oct 16  2014 pxelinux.0    # boot loader文件
drwxr-xr-x 2 root root   4096 Feb 24 20:02 pxelinux.cfg  # 开机的菜单设定在这里
-rw-r--r-- 1 root root 163728 Oct 16  2014 vesamenu.c32  # 也是提供图形化菜单功能,但界面和menu.c32不同

pxelinux.cfg是个目录,可以放置默认的开机选项,也可以针对不同的客户端主机提供不同的开机选项。一般来说,可以在pxelinux.cfg目录内建立一个名为default的文件来提供默认选项。

如果没有menu.c32或vesamenu.c32时,菜单会以纯文字模式一行一行显示。如果使用menu.c32或vesamenu.c32,就会有类似反白效果出现,此时可以使用上下键来选择选项,而不需要看着屏幕去输入数字键来选择开机选项。经过测试,使用vesamenu.c32比menu.c32更加好看些。

这部分设定完毕后,就是内核相关的设定了。

本文由67677新澳门手机版发布于67677新澳门手机版,转载请注明出处:kickstart无人值守安装CentOS

关键词: