RHEL6: PXE+Kickstart自动安装系统

用PXE+Kickstart实现大批量自动安装系统,鸟哥的Linux私房菜有很详细的讲解 http://linux.vbird.org/linux_enterprise/0120installation.php
本文讲述如何用虚拟机搭建实验环境,以自动安装系统。

实验环境

实验需要建立两台虚拟机,一台用作提供安装文件的服务器(暂称它为Server),一台空白的用来尝试自动安装系统的机器(暂时称它为VM)。
Server中要安装(提供) DHCP, TFTP, NFS服务;VM开启PXE引导即可;

配置Server

安装DHCP

root登录进入Server,用yum安装DHCP服务。

# yum install dhcp

配置DHCP

1. 查看Server自身的IP地址

# ifconfig

查得Server的IP地址是 192.168.122.162

2. 配置Sever自身的IP地址,使之恒为 192.168.122.162
HWADDR和UUID不要改.

# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=52:54:00:2C:3A:99
TYPE=Ethernet
UUID=6895c359-d0e4-4f8c-9b92-7b96de7b64c3
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.122.162

3. 配置DHCP服务
在dhcpd.conf文件中加上以下几行.

# vim /etc/dhcp/dhcpd.conf
next-server 192.168.122.162;
subnet 192.168.122.0 netmask 255.255.255.0{
filename "/pxelinux.0";
range 192.168.122.111 192.168.122.155;
}

配置TFTP

安装TFTP服务

# yum install tftp-server

启动TFTP服务

vim /etc/xinetd.d/tftp

将disable = yes 改成 disable = no
保存.

# service xinetd restart

共享TFTP文件

# yum install syslinux
# rpm -ql syslinux | grep pxe
# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
# cd /var/lib/tftpboot/
# cp /mnt/image/pxeboot/* .
# mkdir pxelinux.cfg
# cd pxelinux.cfg/
# vim default
default linux

label linux
kernel vmlinuz
append initrd=initrd.img ks=nfs:192.168.122.162:/ks/1010.cfg

保存,禁用防火墙规则.(切记!否则TFTP访问不了。)

# iptables -F
# setenforce 0

NFS共享文件

配置完DHCP和TFTP,接下来配置Server要共享哪些目录.

# vim /etc/exports

/mnt *(rw,sync)
/ks *(rw,sync)

上面配置的格式是: 目录名 哪些IP可以访问

配置Kickstart

要实现联网自动安装系统,还需要配置Kickstart。
安装Kickstart程序.system-config-kickstart (在支持图形界面的机器上安装)

# yum install system-config-kickstart

启动system-config-kickstart

# system-config-kickstart

1-ks

2-ks

4-ks

5-ks

6-ks

8-ks
配置完成后保存文件到server的 /ks/1010.cfg

最后确认

server上启用DHCP,TFTP,NFS服务

# service nfs restart
# service dhcpd restart
# service xinetd restart

主机上禁用dnsmasq服务

在主机上执行以下命令,关闭dnsmasq服务;
主机上如果有dnsmasq服务,将为影响server上dhcp的正常工作。

# service dnsmasq stop

确认dnsmasq是否真正关闭;

# service dnsmasq status
dnsmasq (pid 2782) is running...

这里提示它还在运行,没有真正关闭。
手动杀掉它的进程。

# kill -9 2782
# service dnsmasq status
dnsmasq is stopped

好,一切就绪。

测试自动安装

新建一台虚拟机(VM),选择PXE启动,搞定!
Screenshot-New VM

Screenshot-New VM-1

Screenshot-New VM-2
pxe1

pxe2

pxe3

pxe4
pxe5

补充

通过修改ks配置文件,在kickstart中选择要安装的rpm包。
在ks.cfg中加入

%packages --default
procmail
sendmail
sendmail-cf
telnet
ksh
ftp
lftp
tftp-server
vsftpd
tftp
%end