要实现一个PXE+Kickstart无人值守安装,从上面的理论解说中,我们知道,至少需要DHCPTFTP服务来完成引导。要进行网络安装的话,我们则需要NFS或者HTTP或者FTP服务。这里,我们选择NFSTFTP要工作的话,我们又要安装xinetd。加上要生成bootstrap 文件要安装的syslinux。我们要安装的软件包一共如下:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

#dhcptftp-servertftpxinetd syslinuxnfs-utils

yum -y install dhcp tftp-server tftp xinetd syslinux nfs-utils

2.1DCHP
安装配置dhcp

安装完成之后,把 dhcp.conf.sample 文件拷贝到 /etc 下面

rsync -av /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

vi /etc/dhcpd.conf

找到:

ignore client-updates;

在这样下面添加上如下内容:

next-server 10.1.1.250;

filename "pxelinux.0";
其中:

       10.1.1.250 为后续将进行配置的 tftp 服务器的 IP

找到并注释:

# option nis-domain "domain.org";
# option domain-name "domain.org";
#option domain-name-server 192.168.1.1;

配置网卡

IP 10.1.1.250
vi /etc/sysconfig/network-scripts/ifcfg-eth0
找到:
BOOTPROTO=dhcp
:
BOOTPROTO=static
注意IP地址的配置:
IPADDR=10.1.1.250
NETMASK=255.255.255.0
重启网络并启动 dhcpd

/etc/init.d/network restart
/etc/ini.d/dhcpd start
2.2 tftp-server
配置tftp-server
vi /etc/xinetd.d/tftp
找到:
disable  = yes
改为
disable   = no
启动tftp-server

/etc/init.d/xinetd restart
使用tftp客户端进行验证

mkdir -p /tftpboot
echo hahahoho > /tftpboot/test.file
tftp 10.1.1.250
tftp>get test.file
tftp>quit

 

如果能正常获取test.file,则说明tftp-server工作正常。
pxelinux.0

我们在配置dhcp的时候,就已经用到了pxelinux.0,其实pxlinux.0就是上面提到的bootstrap。在Linux中,它是由syslinux来生成的。我们只要安装了syslinux,就会生成一个pxelinux.0,我们只需要将其拷贝到/tftpboot下面即可。
rpm -ql syslinux | grep pxelinux.0

rsync -av /usr/lib/syslinux/pxelinux.0 /tftpboot/

2.3 Linux系统启动文件
找到DVD安装盘或者ISO镜像,将其mount/mnt下面。
              mount -o loop /root/RedHat5-U3-i386-bin-DVD.iso /mnt
拷贝内核文件vmlinuz以及根文件系统initrd.img/tftpboot

              rsync -av /mnt/p_w_picpaths/pxeboot/ /tftpboot/

创建/tftpboot/pxelinux.cfg目录

              mkdir -p /tftpboot/pxelinux.cfg
创建/tftpboot/pxelinux.cfg/default文件

              touch /tftpboot/pxelinux.cfg/default
文件内容如下:

default linux
prompt  0
label   linux
       kernel  vmlinuz
       append  ks=nfs:10.1.1.250:/netinstall/kickstart/ks.cfg initrd=initrd.img
也可以复制/mnt/isolinux/isolinux.cfgdefault,然后进行修改。

       rsync -av /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

2.4 配置 nfs 网络安装
mkdir -p /netinstall/kickstart

安装nfs服务,并将/netinstall/kickstart发布出去

/etc/init.d/portmap start

/etc/init.d/nfslock start

/etc/init.d/nfs start

cat >> /etc/exports << EOFFS

/netinstall/kickstart    *(ro,async)

/var/www/html/repos  *(ro,async)  ###该目录为光盘的挂在目录mount /dev/cdrom /var/www/html/repos   

EOFFS

exportfs -rv

showmount -e 10.1.1.250

最后结果如下:
exportfs *:/netinstall
/kickstart

exportfs *:/var/www/html/repos

2.5 关于ks.cfg文件
做一个最简单的 ks.cfg

拷贝本机安装时的 ks 文件到 /netinstall/kickstart 并重命名为 ks.cfg

rsync -av /root/anaconda-ks.cfg /netinstall/kickstart/ ks.cfg
chmod a+r /netinstall/
kickstart/ks.cfg

 

找到第一行的install在其后新增一行,内容为text这个单词,表示以文本界面安装。
找到第二行的cdrom,改nfs --server=10.1.1.250 --dir=/var/www/html/repos,表示用nfs方式获取安装源。
找到clearpart --linux --drives=sda   ##当硬盘是IDE硬盘时用hda

clearpart --all --drives=sda --initlabel,表示清除所有磁盘的所有分区并初始化卷标。
并在上面添加一行:
zerombr

autopart
其中:

    zerombr 是清空硬盘的主引导分区( MBR

    autopart 为自动分区

也可以定制分区,如:

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

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

       part swap --size=1000

定制分区和 autopart 是冲突的,所以不能混用。

 

为了避免安装后的一些麻烦,可以考虑关闭服务器端防火墙和 SELINUX

       firewall --disabled

       selinux --disabled

注意:为了能够顺利发布数据,让其他客户端访问,请注意关闭服务器端防火墙和 SELINUX

 

选包定制:
%packages
@base
@core
@web-server
sysstat
-bluez-utils

 

@后边跟的都是组名,对应yum仓库中repodata/comps*.xml文件的groupid。可以执行如下命令获得groupid列表:
find /mnt/ -name "comps*.xml" | xargs grep -h groupid | sort -n | sed 's#[[:space:]]##g; s#<groupid>##g; s#<.*##g'

 

-表示安装时不安装该包。

 

如果使用@everything则表示安装全部。但是在最新的RedHat Enterprise Linux 5.5中有一些变化,请注意看发行注记和变更列表。

 

三、附录

##########/etc/dhcpd.conf内容##########
ddns-update-style interim;
ignore client-updates;
next-server 10.1.1.250;
filename "pxelinux.0";

 

subnet 10.1.1.0 netmask 255.255.255.0 {
        option routers                  10.1.1.250;
        option subnet-mask              255.255.255.0;

 

        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 10.1.1.1 10.1.1.200;
        default-lease-time 21600;
        max-lease-time 43200;
}
##########/tftpboot/pxelinux.cfg/default内容##########
default linux
prompt 1
timeout 30

 

label linux
  kernel vmlinuz
  append initrd=initrd.img ks=nfs:10.1.1.250:/netinstall/kickstart/ks.cfg

 

label hda
  kernel vmlinuz
  append initrd=initrd.img ks=nfs:10.1.1.250:/netinstall/kickstart/kshda.cfg

 

##########ks.cfg文件内容##########
install
text
nfs --server=10.1.1.250 --dir=/var/www/html/repos
#url --url http://10.1.1.250/repos
key --skip
lang en_US.UTF-8
#lang zh_CN.UTF-8
keyboard us
xconfig --startxonboot
network --device eth0 --bootproto dhcp --onboot=on
rootpw 123456
authconfig --enableshadow --enablemd5
firewall --disabled
selinux --disabled
timezone Asia/Shanghai
###当硬盘为IDE硬盘时请将下面的 sda 改为 hda
bootloader --location=mbr --driveorder= sda --append="rhgb quiet clock=pit"
zerombr
clearpart --all --drives= sda --initlabel
autopart
#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

@graphical-internet

@base-x

@chinese-support

@gnome-desktop

device-mapper-multipath

xorg-x11-utils

xorg-x11-server-Xnest

sysstat

 

%post

/usr/sbin/useradd admin

/bin/echo 888888 | sr/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 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 yum-updatesd off