天天看点

linux kickstart无人值守批量安装系统

                                                     <b>linux Kickstart</b><b>无人值守安装</b><b></b>

    在我们的网络维护生涯中,有不少朋友,感觉到自己在机械的做一件事情,在无聊、无趣和无奈中工作。尤其一些简单重复的操作更容易让大家感到工作的无趣。今天将给大家介绍如何大规模的部署RedHat Linux操作系统,避免了手工安装的繁琐。当然本方法也使用于一些特殊场合,譬如没有光驱或光驱坏掉的计算机、手中没有安装光盘等情况。

在安装RedHat Linux企业版的过程中,我们都知道它允许通过NFS、HTTP或FTP协议来进行网络安装。但是在一般情况下我们需要有一个安装引导介质(引导光盘、引导软盘、U盘等),有没有一种方法不通过引导光盘方式来安装呢,而直接通过网络来进行安装?答案是有,即通过PXE技术实现。  

   那么PXE到底是什么呢?

         PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。

既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。

    简单地说PXE网络安装,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。下图中介绍了Linux中自动安装系统的详细工作过程:

linux kickstart无人值守批量安装系统

     首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。

         DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

     客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

     当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

     客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。

     接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

     将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。

         OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。

在上面介绍中PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server和NFS Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核都放置在Linux Server上TFTP服务器的根目录下。而Linux根文件系统存放于NFS Server的共享目录中。

PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。

<b>二、安装的前提条件</b><b></b>

<b>2.1、PXE+KickStart</b><b>安装的条件</b><b></b>

执行PXE+KickStart安装需要的设备为:

DHCP 服务器;

TFTP 服务器;

KickStart所生成的ks.cfg配置文件

一台存放系统安装文件的服务器,如 NFS、HTTP 或 FTP 服务器。

带有一个 PXE 支持网卡的将安装的主机;

<b>2.2、安装过程中所需要的</b><b>rpm</b><b>包及获取</b><b></b>

<b>需要的</b><b>rpm</b><b>软件包</b><b></b>

nfs-utils-lib-*

nfs-utils- *

xinetd-*

tftp-server-*

dhcp-*

dhcp-devel-*

system-config-kickstart-*

<b>2.3 </b><b>软件包的获取</b><b> </b><b></b>

1、本地方式

一般情况下一些常用的安装包都可以在你的安装光盘中找到。

2、网络方式

如果你无法在安装光盘中找到适合的安装包,你可以通过yum这种方式安装。

<b>三、操作步骤:</b>

<b>要求:</b>有两台虚拟机分别是服务器和客户端,服务器的ip地址是:192.168.0.251 子网掩码是:255.255.255.0。客户端只需开机就可以自动安装操作系统。

<b>3.1 </b><b>配置</b><b>IP</b><b>地址</b><b></b>

(1)在终端里输入system-config-network-tui,打开IP配置图形界面。

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

(2)重启网卡,service network restart  

linux kickstart无人值守批量安装系统

<b>  3.2 </b><b>安装</b><b>rpm</b><b>包</b><b></b>

   配置该服务器需要安装dhcpd,tftp-server,nfs,system-config-kickstart,等包。首先需要检查本机上是否已经安装了这些包,输入rpm –qa | grep +包名

linux kickstart无人值守批量安装系统

   如果没有安装这些包则需要通过rpm –ivh +包名来安装。

首先需要用mount –t iso9660 /dev/hdc /mnt/cdrom(其中cdrom是我自己建的)来将系统光盘挂载到/mnt/cdrom目录下。然后安装需要的rpm包。

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

<b>3.3 </b><b>配置</b><b>dhcp</b><b>服务</b>

使用vim编辑器编辑/etc/dhcpd.conf文件。由于是第一次编辑dhcp服务器,所以地面的文件时空的,因此我们要做一些相应的操作哈!方法如下图:

linux kickstart无人值守批量安装系统

回车后即可看到dhcp服务器的配置文件了哈,不过这只是原始的文件,因此我们需要做一些的修改哦!

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

<b> 3.4 </b><b>配置</b><b>tftp</b><b>服务</b>

tftp是为了给待安装的机器发送文件的简单的文件传输服务。这个配置还是比较简单的,只需把配置文件中的disable那项的yes改成no即可哈!

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

<b>3.5 </b><b>配置</b><b>nfs</b><b>服务</b><b></b>

nfs服务是将安装过程所需要的一些文件共享出来,这个也是比较简单的。

其中的/kickstart  /linuxinstall文件都是我们自己建立的。

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

 启动后查看是否共享成功哈!

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

呵呵  成功了哈!!!!!!!!

<b>3.6 </b><b>配置</b><b>ks.cfg</b><b>文件</b><b></b>

ks.cfg是待安装机器的所有的配置文件,每台机器在安装过linux系统以后都会自动生成一个ks.cfg文件里面记录了在安装系统的时候所做的所有操作,文件的位置位于/root目录下的anaconda-ks.cfg。

linux kickstart无人值守批量安装系统

我们可以查看下他的配置…………………

linux kickstart无人值守批量安装系统

我们可以通过enter键和空格键查看哈,我就不过做了哈,你们可以44

linux kickstart无人值守批量安装系统

接下来就要真正的配置ks.cfg文件了,这个有点麻烦,这里我们可以通过图形界面来配置

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

在这里我们最好把防火墙关掉,防止出项不必要的意外嘛…………

linux kickstart无人值守批量安装系统

保存并退出

linux kickstart无人值守批量安装系统

接下查看ks.cfg文件,并作进一步修改哈、、、、、、、、

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

呵呵,ks.cfg配置王成后可以说我们的服务器已经配置好了一半了,当然了ks.cfg文件要是出现错误,那就好麻烦了,仔细点啊。

<b>3.7 </b><b>复制相应的文件和创建相应的共享文件夹</b>

接下来是几条命令:

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

 <b>3.8</b><b>编辑我们的/tftpboot/pxelinux.cfg/default文件</b>

<b></b>

将timeout 修改成6(只要小一点就可以了),防止等待的时间过长哈!!

然后就是将label linux后面的文件修改成:

kernel vmlinuz

append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks noipv6

由于default这个文件是只读的,因此我们要加上写的权限,否则无法编辑

linux kickstart无人值守批量安装系统

接下来,我们来编辑这个文件…………

linux kickstart无人值守批量安装系统

<b>3.9</b><b>将光盘中的文件全部复制到/linuxinstall下</b>

   由于我们之前把光盘挂载在/mnt/cdrom下,因此需要将其卸载掉,之后再将其挂载到/linuxinstall下

linux kickstart无人值守批量安装系统

<b>3.10</b><b>启动相关的服务并将其全部设置成开机启动</b>

linux kickstart无人值守批量安装系统

<b>3.11</b><b>关闭防火墙和iptables以及selinux</b>

防火墙的关闭,在终端下输入setup,如下图所示:

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

关闭iptables,如下图所示:

linux kickstart无人值守批量安装系统

关闭selinux,如下图所示:

linux kickstart无人值守批量安装系统

到了这里我们的服务器基本上就配置完成了,过程挺复杂的哈…………

四、客户端的测试过程

启动客户端的机器,有时候不需要将客户端的机器设置成网络启动,有的则需要设置成网路启动。

但要注意的是,设置成网络启动后,在客户端安装完成后一定要及时的将系统设置成硬盘启动,否则客户端的系统将一直安装下去。

linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统
linux kickstart无人值守批量安装系统

这个时候系统已经安装完毕啦哈…………

<b>五、常见故障排除</b><b></b>

<b>5.1 </b><b>无法分配到</b><b>IP</b><b>地址</b><b>,即</b><b>dhcp</b><b>服务器无法启动</b><b></b>

出现的问题:

linux kickstart无人值守批量安装系统

解决方法:

如果安装开始的时候无法分配到IP地址,则说明你服务器的dhcp.conf配置的有问题,有可能你的语法有问题,比如说少了个分号(;),又或者单词写的有问题,这些语法错误会导致dhcp服务启动失败。

<b>5.2</b><b> tftp</b><b>无法连接</b><b></b>

<b>出现的问题:</b><b></b>

linux kickstart无人值守批量安装系统

<b>解决的方法:</b><b></b>

主要原因是在你的dhcp.conf文件的next-server和tftp-server-name两个字段上,如果这两个字段没有正确的指出tftp服务器的地址的话,一般就会出现这样的问题。这类问题一般都出现在dhcp服务器的配置上面,因为当待安装机器在局域网内广播需要分配IP地址的时候,服务器会将IP地址和一些安装文件的地址返回给待安装机器上,如果dhcp出现了问题则无法将这些地址返回回来,这就导致了待安装机器不知道从何处来获取安装文件。

<b>5.3</b><b> tftp</b><b>已经连接上,但客户端就是无法启动</b><b></b>

<b>出现的问题:</b>

linux kickstart无人值守批量安装系统

这主要是由于,服务器端的防火墙、iptables和selinux没有关闭。尝试着将这些关闭,应该可以解决的。

<b>5.4 </b><b>无法获取</b><b>ks.cfg</b><b>文件</b><b></b>

可以获取到dhcp服务器分配的IP地址,也可以从tftp服务器上获取内核文件,并加载,但是在读取ks.cfg文件的时候出现了错误。如下图。

linux kickstart无人值守批量安装系统

<b>解决的方法:</b>

出现了这样的问题则说明你的客户端是知道ks.cfg的位置的,但是就是无法读取,所以我们看看服务器的ks.cfg的权限,一般都是客户端的权限不够,所以只要更改一下ks.cfg文件的权限这样的问题一般都是可以解决的。使用chmod命令来更改权限。

linux kickstart无人值守批量安装系统

六、实验总结

kickstart技术是伴随linux,但它确实非常的方便和实用,尤其是在批量安装系统的方面更是体现出了它的价值。通过本次kickstart实验,简单的介绍了nfs、dhcp、tftp等服务的使用方法。由于接触linux比较晚,此次实验笔者前前后后做了几十次的实验,但其中还是出现较多的错误,但笔者相信出错并不可怕,可怕的是错了就馁。

此次实验仅供参考,如当中还有别的错误,请原谅,也请大家改正!!!!!!!

继续阅读