本文记录了用Kickstart实现无人值守安装,搭建RHCE实验室环境的详细步骤。PXE 并不是一种安装方式,而是一种引导的方式。KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件。

本文记录了用Kickstart实现无人值守安装,搭建RHCE实验室环境的详细步骤。文中使用的环境为RHEL 5,也同样适用于CentOS。文章作者抚琴煮酒(Andrew Yu)是经验丰富的Linux/Unix系统工程师,并曾经担任过一段时间的RHCE讲师的工作。

原理和概念

什么是PXE

严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE ClientPXE Pre-boot Execution Environment,直译为预启动执行环境)协议使计算机可以通过网络启动。协议分为 client server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client ROM 中,已经存在了 TFTP ClientPXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

什么是KickStart

KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

PXE + KickStart安装的条件

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

  1. DHCP 服务器

  1. TFTP 服务器

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

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

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

安装的步骤

一、安装httpd

yum -y install httpd*

二、挂载RHEL5的DVD光盘,并复制第一张光盘下的所有内容(文件和文件夹)到/var/www/html下

mount /dev/cdrom/mnt
cp –rf/mnt/*/var/www/html

三、安装 tftp-server,并启用tftp服务,重启xinetd进程

rpm -ivh tftp-server-0.39-1.i386.rpm
vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#protocol.The tftp protocol is often used to boot diskless \
#workstations, download configuration files to network-aware printers, \
#and to start the installation process for some operating systems.
service tftp
{
socket_type= dgram
protocol= udp
wait= yes
user= root
server= /usr/sbin/in.tftpd
server_args= -s /tftpboot
disable= no #disable
的直由yes变为no
per_source= 11
cps= 100 2
flags= IPv4
}
service xinetd restart

四、配置支持PXE启动

注意我已经把第一张光盘的内容复制到/var/www/html目录中了,所以所需要的文件我只需要从/var/www/html目录中复制就行了

1、进入tftpboot文件夹,没有就建一个,有了就不用建了。

cd /tftpboot/

2、把pxelinux.0复制到/tftpboot/中

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

(pxelinux.0在不同机器上,其目录不同,可以采用find / -name pxelinux.0)

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

cp /var/www/html/p_w_picpath/pxeboot/initrd.img/tftpboot
cp /var/
www/html/p_w_picpath/pxeboot/vmlinux/tftpboot

4、 复制第一张安装光盘上的isolinux/*.msg到/tftpboot/中

cp /var/www/html/isolinux/*.msg/tftpboot

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

mkdir pxelinux.cfg

6、把Linux第一张安装光盘上isolinux目录中的isolinux.cfg复制到pxelinux.cfg目录中,并同时更改文件名称为default

cd pxelinux.cfg
cp /var/
www/html/isolinux/isolinux.cfg/tftpboot/pxelinux.cfg/default

7、把linux第一张安装光盘上的isolinux/vesamenu.c32得制到/tftpboot目录中

cd pxelinux.cfg

cp vesamenu.c32 /tftpboot

8、在上一步中,我们暂时不要修改default文件。其实到达这一步骤的时候,我都就可以通过网络引导了,通过网络引导之后接下了就可以手动安装了,但是这里面我们讨论的是无人值守安装,而所谓无人值守安装就是在从引导到安装都不需要手动指定,一气呵成。我们接下来继续讲解。

六、安装dhcp服务,同时修改配置

1、 安装

rpm -ivh dhcp-3.0.1-12_EL.i386.rpm

2、 复制配置模板文件到指定的目录中,并重命名

cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf

3、 修改配置文件,添加一行:filename "/pxelinux.0",其他的修改自己完成就行了。这文件的位置一定要注意,不然会失败,切记

[root@localhost isolinux]# vim /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
next-server 192.168.1.14;#PXE
服务器IP地址

filename "/pxelinux.0";       #注意此行的位置,写在subnet下面的话会失败


subnet 192.168.1.0 netmask 255.255.255.0 {


# --- default gateway

      option routers                192.168.1.254;

      option subnet-mask              255.255.255.0;


      option nis-domain             "example.com";

      option domain-name              "example.com";

      option domain-name-servers    192.168.1.254;


      option time-offset              -18000; # Eastern Standard Time

#    option ntp-servers              192.168.1.1;

#    option netbios-name-servers     192.168.1.1;

# --- Selects point-to-point node (default is hybrid). Don't change this unless

# -- you understand Netbios very well

#    option netbios-node-type 2;


      range dynamic-bootp 192.168.1.128 192.168.1.254;

      default-lease-time 21600;

      max-lease-time 43200;


      # we want the nameserver to appear at a fixed address

      #host ns {

       #    next-server marvin.redhat.com;

       #     hardware ethernet 12:34:56:78:AB:CD;

       #     fixed-address 192.168.1.110;

      #}

}

4、 启动dhcp服务

service dhcp start

七、 安装kickstart并进行配置

首先安装Kickstart:

rpm -ivh system-config-kickstart-2.5.16-2.noarch.rpm

在gnome环境下配置kickstart的指令如下:

system-config-kickstart

之后的配置步骤如下:

  1. 基本配置,按自己需求来就好

  1. 安装方法,选择httpd安装,切记不要输入任何的帐号,我们采用的匿名安装

  1. 引导安装程序选项,不需要做更改

  1. 分区信息,创建三个分区

  1. 网络配置,我使用的静态分配地址(动态同样如此)

  1. 显示配置,按自己需求来就好

  1. 软件包的选择,我选择了Kernel Developent和Development Tools安装(但千万不要选择这两个软件包,不然的话在安装的时候会报错的)

  1. 其他的都是默认设置,没有做修改

  1. 生成文件ks.cfg,保存到/var/www/html下

八、修改/tftpboot/pxelinux.cfg/default文件,指定读取ks.cfg的方法(ks=http://192.168.1.40/ks.cfg)

#cat /tftp/pxelinux.cfg/default

default linux  默认启动 下面的label linux

prompt 1   显示boot提示符,如果改成0 。直接启动default

key --skip #这行一定要,跳过注册号输入,不然会失败

timeout 10   超时10s

display boot.msg  显示某个文件内容 默认路径是/tftpboot

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux

 kernel vmlinuz  指定启动内核 默认路径/tftpboot

 append ks=http://192.168.1.40/ks.cfg(指定kickstart文件的位置) initrd=initrd.img

 append指定追加给内核的参数,ks指定kickstart文件的位置

Initrd 指定initrd.img文件,默认路径是/tftpboot

 (什么是initrd.img文件这里简单解释下:系统内核 vmlinuz 被加载到内存后开始提供底层支持,在内核的支持下启动各种模块,服务等被加载运行。但是如果你的硬盘是scsi接口而内核又不支持这种接口,你就要重新编译内核文件代替原来的vmlinuz。这样就很麻烦,这里就用到了ininrd.imgininrd就是initialized ram disk,是ram disk 的映像文件,内核加载这个文件,来加载各种模块,然后在去加载真正的root分区。

label text

 kernel vmlinuz

 append   initrd=initrd.img

label ks

 kernel vmlinuz

 append ks initrd=initrd.img  ks=nfs:19.168.50.4:/tftpboot/ks.cfg

label local

 localboot 1

label memtest86

 kernel memtest

 append -


最后,重新引导安装就可以了。以上是我的配置步骤,如果没有出入的话,是一定可以成功的!