3.1 KickStart 无人值守批量安装Linux系统

原创地址找不到了,请原创来找我吧,感谢原创。

KickStart 无人值守批量安装Linux系统

一:需求分析

不适合本地安装的情况如下:

(1)无软驱和光驱:如果计算机不带光驱或软驱,则无法通过本地安装。

(2)非标准的软驱和光驱:虽然笔记本电脑都会配置光驱。但是并不一定都是标准的IDE设备,有些通过USB接口或1394接口(例如Samsung的Q10)连接。在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装。

(3)在一些场合,如机房中有大量的计算机需要同时安装Linux。如果通过光驱的方式逐台安装,不仅效率低,也不利于维护。

(4)光驱或安装光盘故障。

基于以上所属情况,kickstart服务就可以解决这些问题。

 

二:方案设计

 

什么是PXE:

所有系统的网络安装和无人职守安装都是基于PXE,PXE技术与RPL技术不同之处为RPL是静态路由,PXE是动态路由。RPL是根据网卡上的ID号加上其他记录组成的一个Frame(帧)向服务器发出请求。而服务器中已有这个ID数据,匹配成功则进行远程启动。PXE则是根据服务器端收到的工件站MAC地址,使用DHCP服务为这个MAC地址指定个IP地址。每次启动可能同一台工作站有与上次启动有不同的IP,即动态分配地址。下以客户端引导过程说明PXE的原理。

   (1)客户端开机后,PXE BootROM(自启动芯片)获得控制权之前执行自我测试,然后以广播形式发出一个请求FIND帧。

(2)如果服务器收到客户端所送出的要求,就会送回DHCP回应,包括用户端的IP地址、预设通信通道,以及开机映像文件;否则服务器会忽略这个要求。

(3)客户端收到服务器发回的响应后则会回应一个帧,以请求传送启动所需文件,并把自己的MAC地址写到服务器端的Netnames.db文件中。

(4)将有更多的消息在客户端与服务器之间应答,用于决定启动参数。BootROM由TFTP通信协议从服务器下载开机映像文档。客户端使用TFTP协议接收启动文件后,将控制权转交启动块以引导操作系统,完成远程启动。

PXE工安装流程:

 

PXE协议的成功运行需要解决以下的两个问题

(1)既然是通过网络传输,那么计算机在启动时其IP地址如何配置?

(2)通过何种下载Linux内核和根文件系统?

第一个问题可以通过DHCP Server解决,由DHCP Server来为PXE Client分配一个IP地址,DHCP Server是用来为DHCP Client动态分配IP地址的协议。不过由于这里是为PXE Client分配IP地址,所以在配置DHCP Server时需要增加相应的PXE特有配置;至于第2个问题,在PXE Client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。这样,PXE协议运行的条件就具备了,PXE的安装流程如图所示。

PXE Client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上,Bootstrap文件、配置文件、Linux内核,以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。除了配置文件,这3个二进制文件是PXE Client在工件过程中所必需的文件,即bootstrap、Linux内核和Linux根文件系统。Bootstrap文件是可执行程序,它为用户提供简单的控制界面,并根据用户的选择下载合适的Linux内核以及Linux根文件系统。

 

三:环境准备

   

1、一台server担任启动服务器和安装服务器

2、一台client,需要能从网卡启动

3、两台机器在同一局域网

4、服务器要有安装所需的所有包软件包

5、我们用10.1.24.0/24网段来试验(网段可随意,本人学号为24)

四:实施步骤

配置IP地址

(1)在终端里输入setup打开IP配置图形界面。

 

 

然后重启网卡  service network restart

 

 

安装rpm软件包

配置该服务器需要安装dhcp,tftp,nfs,等相关软件包。首先需要检查本机上是否已经安装了这些包,输入rpm –qa | grep +包名。

首先需要检查本机上是否已经安装了这些包,输入rpm –qa | grep +包名。

图7检查RPM包

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

首先需要用  mount /dev/hdc /mnt    来将系统光盘挂载到/mnt目录下。然后安装需要的rpm包。

 

 

 

 

配置dhcp服务

需要的软件包都安装好之后,使用vim编辑器编辑dhcp服务的配置文件/etc/dhcp.conf

由于是第一次编辑dhcp.conf所以里面的内容是空的,那么我们就需要将/usr/shar/doc/dhcp-3.0.5/dhcp.conf.sample 复制到/etc下并改名为dhcp.conf

复制之后,再进入配置文件可以看到以下内容,然后就可以进行相应的修改了。。。

修改后的内容如下:

ddns-update-style interim;

ignore client-updates;

next-server 10.1.24.1;

filename "pxelinux.0";

 

subnet 10.1.24.0 netmask 255.255.255.0 {

 

# --- default gateway

        option routers                  10.1.24.254;

        option subnet-mask              255.255.255.0;

 

 

        default-lease-time 21600;

        max-lease-time 43200;

 

        range  10.1.24.20  10.1.24.200;

        filename "/linuxinstall/ks.cfg";

        next-server 10.1.24.10;

        default-lease-time 21600;

        max-lease-time 43200;

 

        }

option space PXE;

class "PXE" {

                match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";

                option vendor-encapsulated-options 01:04:00:00:00:00:ff;

                option boot-size 0x1;

                filename "pxelinux.0";

                option tftp-server-name "10.1.24.10";

                option vendor-class-identifier "PXEClient";

                vendor-option-space PXE;

 

       }

 

需要注意的是字段range是给待安装的机器分配的的IP地址池,filename字段是ks.cfg的位置,即待安装机器所需要的安装配置文件,next-server是tftp服务器的位置。和下面的tftp-server-name字段是对应的。

 

配置tftp服务

tftp是为了给待安装的机器发送文件的简单的文件传输服务。

这个配置还是比较简单的,只需要把这个服务给启用就可以了。

使用vim编辑器打开/etc/xinetd.d/tftp文件

 

图17 tftp配置文件位置

将里面的disable字段值改为no,保存退出就可以了。

 

 

配置nfs服务

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

使用vim编辑器打开/etc/exports文件,只要将你想共享的文件夹写入其中就可以了,我们这里需要把/mnt /tftpboot /linuxinstall 给共享出来就可以了,其中/linuxinstall目录是我们自己建立的,将在后面建立。而/tftpboot目录是在安装tftp-server的rpm包时候自动建立的。

配置如下:

 

保存退出…

 

 

其中*表示任何主机都可以访问,ro表示read only,只读权限,sync表示与服务器同步。

通过输入service nfs restart重启nfs服务,然后我们输入exportfs可以看见我们共享的文件。

 

 

配置ks.cfg文件

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

图22 anaconda-ks.cfg文件

下面是我自己的anaconda-ks.cfg文件。

 

 

这个文件也可以通过system-config-kickstart的图形界面来编辑。前提需要安装这个rpm包,系统光盘自带这个包。下面的是kickstart configurator图形界面。

 

本次实验用的ks.cfg 文件内容如下

 

#     /linuxinstall/ks.cfg   的配置内容

install

text

nfs --server=10.1.24.10 --dir=/mnt

key --skip

lang zh_CN.UTF-8

keyboard us

network --device eth0 --bootproto dhcp --onboot=on

rootpw 123456

firewall --disabled

authconfig --enableshadow --enablemd5

selinux --disabled

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="rhgb quiet"

zerombr

clearpart --all --drives=sda --initlabel

part / --fstype ext3 --size=1 --grow

part /var --fstype ext3 --size=2000

part swap --size=1000

reboot

 

%packages

@base

@core

@editors

#@text-internet

#@web-server

#@mysql

#@dns-server

#sysstat

 

%post

/usr/sbin/useradd admin

/bin/echo 888888 | /usr/bin/passwd admin --stdin

/bin/touch /home/admin/HelloWorld

 

/sbin/chkconfig auditd off

/sbin/chkconfig autofs off

/sbin/chkconfig avahi-daemon off

/sbin/chkconfig bluetooth off

/sbin/chkconfig cups off

/sbin/chkconfig firstboot off

/sbin/chkconfig gpm off

/sbin/chkconfig haldaemon off

/sbin/chkconfig hidd off

/sbin/chkconfig ip6tables off

/sbin/chkconfig kudzu off

/sbin/chkconfig lvm2-monitor off

/sbin/chkconfig mcstrans off

/sbin/chkconfig netfs off

/sbin/chkconfig nfslock off

/sbin/chkconfig pcscd off

/sbin/chkconfig portmap off

/sbin/chkconfig restorecond off

/sbin/chkconfig rhnsd off

/sbin/chkconfig rpcgssd off

/sbin/chkconfig rpcidmapd off

/sbin/chkconfig smartd off

/sbin/chkconfig xfs off

/sbin/chkconfig yum-updatesd off

 

创建所需文件夹

上面我们共享出了/mnt  和/linuxinstall目录,但是系统上并没有/linuxinstall这个目录,所以就需要我们来建立,使用mkdir命令来执行新建操作。mkdir /linuxinstall

然后将上步创建的ks.cfg文件保存到/linuxinstall目录中,需要注意的是在配置dhcp.conf文件中,我们就指定了filename “/linuxinstall/ks.cfg”所以路径一定不能搞错。你在dhcp.conf中写的路径是什么你就需要把你的ks.cfg 放在什么样的路径。并且要通过nfs给共享出来。

 

配置支持PXE启动

这步需要将linux内核复制到tftpboot文件夹内。

mount /dev/hdc /mnt

#把第一张光盘挂载到/mnt

cd /tftpboot/

#tfp-server指定的根目录位置(若该文件夹已经存在则不用建立,通常重启tftp服务后会自动建立)

cp /usr/lib/syslinux/pxelinux.0 /tftpboot

#pxelinux.0是pxe方式的boot loader,如果你发现没有这个目录,不要紧张。找到syslinux这个软件包就OK了

cp /mnt//images/pxeboot/vmlinuz /tftpboot/

#把Linux第一张安装光盘上/image/pxeboot/initrd.img和vmlinux复制到/tftpboot/中

cp /mnt//images/pxeboot/initrd.img /tftpboot/

mkdir /tftpboot/pxelinux.cfg

#在tftpboot中新建一个pxelinux.cfg目录

复制好之后,/tftpboot/目录下应该有以下内容才对:

   

由于启动镜像pxelinux.0文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下。pxelinux.0根据一定的规则来搜索合适的配置文件名。比如说C0A88A1E > C0A88A1 > … > C0 > C > default就是说,如果C0A88A1E文件存在,它就是pxelinux.0将载入的配置文件。否则,继续往下找。如果C0A88A1文件存在,它就是 pxelinux.0将载入的配置文件。如果前面的以C开头的文件都不存在,那么pxelinux.0将试图从文件default中读取配置。对于一台需要支持很多安装机器的安装服务器来说,将配置写在与IP地址对应的文件里很不灵活。把所有配置都集中在default文件中是个不错的主意,可以减轻配置文件维护负担。 这里也是为什么要建立pxelinux.cfg文件夹。所以接下来就要在pxelinux.cfg里建立default 文件,系统盘里也有这个文件,位于系统盘的isolinux下的isolinux.cfg但是我这里不借用它的default文件,所以这是我们使用vim编辑器在pxelinux.cfg中直接建立一个default文件。

图27 创建default文件

直接在里面写入一句话就可以了

default linux

prompt 0

label  linux

     kernel  vmlinuz

 

     append ks=nfs:10.1.24.10:/linuxinstall/ks.cfg initrd=initrd.img

 

这样写的好处在于不用在待安装机器启动的时候做一些别的操作。

接下来是要使用mount /dev/hdc /mnt把系统光盘给挂载到/mnt中。

 

启动服务器

   到这里我们的服务器可以说是配置的差不多了,剩下的就只要将这些服务给启动起来就可以了。

service dhcpd restart

#启动dhcpd服务

chkconfig dhcpd on

#dhcpd服务开机自动启动

service nfs restart

#重启nfs服务

chkconfig nfs on

#nfs服务开机自动启动

service xinetd restart

#启动xinetd服务

chkconfig xinetd on

#xinetd服务开机自动启动

 

五:测试

将待安装机器启动起来,进入bios界面,将启动方式改为从网络启动,保存退出重启即可,有的机器则不用进入bios就可以直接进入安装界面。主要过程如下:

通过DHCP获取IP地址

 

 

通过tftp服务器下载配置文件

 

 

 

 

 

发送IP信息请求

检查软件包依赖关系

 

 

 

 

 

 

 

 

 

 

开始安装

 

安装完成,重启系统

 

 

 

 

六、常见故障排除

6.1 无法分配到IP地址

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

6.2 tftp无法连接

 

 

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

6.3 无法获取ks.cfg文件

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

图37 无法获取ks.cfg文件

出现了这样的问题则说明你的default文件指定的nfs服务器的地址错误,如上图,IP应该为10.1.24.10即可

6.4 在指定目录无法获取安装信息

出现这种情况,是因为光盘没有挂载上来,或者是挂错了光盘,正确的解决办重新

把第一张光盘挂载到/mnt目录

六:总结

如果只是完成一个kickstart服务,不是很难,因为如今的网络资源可以说是应有尽有,但是,要真正明白其中的原理,就要花一定的时间去研究研究。比如说,kickstart服务的工作流程,及其用到的哪些技术。像这些知识如果没有掌握好,实施起来就会出现很多问题。运气好第一次测试就成功,但是出现错误的时候,你怎么知道它错在哪里,而如果你把服务的流程和工作原理都了解透彻的话,这些问题就会很容易解决。

通过这样一篇论文,使自己在Linux方面有更深一层的认识,为以后自己在学习和工作中积累更多的经验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值