RHEL6+PXE+DHCP+FTP+tftp+Kickstart无人值守安装RHCE实验室环境
 
原理和概念:
1.1 什么是PXE
严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (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 Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
1.2 什么是KickStart
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
 
1.3 实验环境:
虚拟机:VMware Workstation 8 for windows
所有操作均在虚拟机下完成,虚拟机网卡设置均为VMnet2,A 虚拟机已安装rhel6 ,B 虚拟机无操作系统。
PXE + KickStart安装的条件
执行 PXE + KickStart安装需要的设备为:
• DHCP 服务器用来给客户机分配IP;
• TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件;
• FTP 服务器用来存放系统安装文件;
• KickStart所生成的ks.cfg配置文件;
• 带有一个 PXE 支持网卡的将安装的主机;
 
——————————————————————-
以下实验全部使用root 账户进行,整个过程都用rpm的方式安装,(有人会问为什么不用yum,你自己试试就知道了,不解释)
 
注:安装软件包时请转到/var/ftp/pub/Package/下安装,
 
安装的步骤:
 
一、挂载RHEL6的DVD光盘
 
 #mount /dev/cdrom   /mnt
 
二、安装vsftpd并复制光盘的所有内容(文件和文件夹)到/var/ftp/pub/
 
 #cd /var/ftp/pub/Package/
 #rpm -ivh vsftpd-2.2.2-6.el6.x86_64.rpm 
#cp –rf   /mnt/*   /var/ftp/pub/
#service vsftpd start
 #chkconfig vsftpd on 
 
三、 安装 tftp-server和xinetd:
 
 #rpm -ivh xinetd-2.3.14-29.el6.x86_64.rpm
 #rpm -ivh tftp-server-0.49-5.1.el6.x86_64.rpm
修改tftp配置文件:
#vi /etc/xinetd.d/tftp
—————————————-以下是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 /var/lib/tftpboot   #这个目录可以不用改,你也可以在根目录新 建一个/tftpboot目录,不过要记住把这里改 成你新建目录的位置,不然客户端会出现以 下错误:PXE-T01:File not found
                                                PXE-E3B:TFTP Error - file not found
                                                 PXE-M0F:Exiting Intel PXE ROM
 disable                 = yes  #把这里的值改成no
 per_source              = 11
 cps                   = 100 2
 flags                = IPv4
 }
 
—————————————————————————————————
#service xinetd start
 #chkconfig xinetd on
提示pxe没有找到 可能是防火墙阻止 可以是网卡的型号不同,可以是linux的网卡是断开的 
四、 安装dhcp服务,同时修改配置
在安装DHCP 前,先把IP 地址配置为:192.168.1.1 (这个地址可以随意,不过下面的地址要统一) 
修改IP地址,子网掩码,网关等信息
#vi /etc/sysconfig/network-scripts/ifcfg-eth0 
 
修改ifcfg-eth0 的内容
 
—————————————–以下是ifcfg-eth0文件的内容——————————
DEVICE=eth0
 
IPADDR=192.168.1.1
 
NETMASK=255.255.255.0
 
GATEWAY=192.168.1.1
 
ONBOOT=yes
 
BOOTPROTO=none
 
——————————————-分隔线——————————————————-
 
重启网络
 
#service network restart 
 
安装DHCP
 #rpm -ivh dhcp-4.1.1-12.p1.el6.x86_64.rpm
这里直接修改dhcp配置文件,不需要去复制模板,直接把以下内容复制进去就行了,#后面为注释可以去掉:
 
#vi /etc/dhcp/dhcpd.conf 
———————————分隔线下面是dhcpd.conf文件内容—————————————–
ddns-update-style none;
 
next-server 192.168.1.1;  #PXE服务器的IP
 
filename ”/pxelinux.0″;
 
subnet 192.168.1.0 netmask 255.255.255.0 {
 
range dynamic-bootp 192.168.1.150 192.168.1.200;   #动态分配的IP段
 
option broadcast-address 192.168.1.1;
 
option routers 192.168.1.1;
 
default-lease-time 600;
 
max-lease-time 7200;
}
———————————————–分隔线不用复制————————————————–
注:RHEL6的dhcp配置文件应该放在/etc/dhcp/目录下,网上基本上都是复制到/etc/目录下。如果复制到/etc/目录下会出现以下的错误:
dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
dhcpd: Wrote 0 leases to leases file.
dhcpd: No subnet declaration for eth0(192.168.1.1)
dhcpd: **Ignoring requests on eth0.If this is not what you want,please write a subnet declaration in your dhcpd.conf file for the network segment to which interface eth0 is attached. **
dhcpd: Not configured to listen on any interfaces!
 
启动dhcp服务
#service dhcpd start
 #chkconfig dhcpd on
 
五、 配置支持PXE启动:
yum install system-config-kickstart.noarch –y 
首先要安装syslinux 包和相应的软件包,来保证以下步骤不缺少相应文件:
 share 里面没有syslinux要安装yum install system-config-kickstart包才能有syslinux目录
#rpm -ivh perl-Crypt-PasswdMD5-1.3-6.el6.noarch.rpm
#rpm -ivh perl-Digest-SHA1-2.12-2.el6.x86_64.rpm
#rpm -ivh syslinux-3.86.1.1.el6.x86_64.rpm
 
复制PXE启动所需的文件:
下面要复制过去的isolinux的文件都是在default配置文件有要求 
#mkdir /var/lib/tftpboot/pxelinux.cfg 
#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 
#cp /var/ftp/pub/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 
pxeboot表示安装操作系统是所需的内核这个内核只是用来安装操作系统的,跟安装好系统以后的kernel不是一个东西
#cp /var/ftp/pub/p_w_picpath/pxeboot/initrd.img  /var/lib/tftpboot/ #cp /var/ftp/pub/p_w_picpath/pxeboot/vmlinux  /var/lib/tftpboot/ #cp /var/ftp/pub/isolinux/boot.msg /var/lib/tftpboot/ #cp /var/ftp/pub/isolinux/splash.jpg /var/lib/tftpboot/
#cp /var/ftp/pub/isolinux/vesamenu.c32 /var/lib/tftpboot
#chmod u+w /var/lib/tftpboot/pxelinux.cfg/default
修改default文件配置ks.cfg 的存放地址
 
#vi /var/lib/tftpboot/pxelinux.cfg/default 
 
————————以下是default文件的内容———————————————————–
 
default vesamenu.c32
 
#prompt 1
 
timeout 600
 
 
 
display boot.msg(这里就是启动的时候看到的如uplooking的界面)
 
 
 
menu background splash.jpg(菜单图片)
 
menu title Welcome to Red Hat Enterprise Linux 6.0!
 
menu color border 0 #ffffffff #00000000
 
menu color sel 7 #ffffffff #ff000000
 
menu color title 0 #ffffffff #00000000
 
menu color tabmsg 0 #ffffffff #00000000
 
menu color unsel 0 #ffffffff #00000000
 
menu color hotsel 0 #ff000000 #ffffffff
 
menu color hotkey 7 #ffffffff #ff000000
 
menu color scrollbar 0 #ffffffff #00000000
 
 
 
label linux
 
menu label ^Install or upgrade an existing system(这里都是安装时候选择你需要安装的项)
menu default(这个标签标示超时以后默认进入那里安装)
kernel vmlinuz 
append initrd=initrd.img ks=ftp://192.168.1.1/ks.cfg  #添加ks.cfg的位置,ftp://192.168.1.1/ks.cfg
方法二:
ftp修改成 http://192.168.68.88/ks.cfg (要安装httpd软件包)
还要在/var/www/html/下面放入ks.cfg文件
如果存放的ks.cfg文件中是用nfs
则需要vim /etc/erports 输入/mnt 这里是iso的挂载点
mount /dev/sro /mnt
/mnt 192.168.68.0/255.255.255.0(ro,sync) 在kickstart里面配置访问方式为DFS server为192.168.68.88 目录为/mnt(不成功的原因是iso问题)
 
label vesa
 
menu label Install system with ^basic video driver
 
kernel vmlinuz
 
append initrd=initrd.img xdriver=vesa nomodeset
 
label rescue
 
menu label ^Rescue installed system
 
kernel vmlinuz
 
append initrd=initrd.img rescue
 
label local
 
menu label Boot from ^local drive
 
localboot 0xffff
 
———————————————-分隔线,红色字体为要修改的内容—————————–
 
 
六、 安装kickstart,同时配置kickstart(如果你的系统没有装anaconda的话,请把下面的rpm包全部装上,是的你没看错全部,其实也只是一条命令而已,要学会用tab键)
#rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm 
   python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm 
   createrepo-0.9.8-4.el6.noarch.rpm
   device-mapper-multipath-libs-0.4.9-31.el6.x86_64.rpm
   device-mapper-multipath-0.4.9-31.el6.x86_64.rpm 
    libhbaapi-2.2-10.el6.x86_64.rpm 
    libhbalinux-1.0.10-1.el6.x86_64.rpm
    libconfig-1.3.2-1.1.el6.x86_64.rpm 
    lldpad-0.9.38-3.el6.x86_64.rpm 
    fcoe-utils-1.0.14-9.el6.x86_64.rpm 
    isomd5sum-1.0.6-1.el6.x86_64.rpm 
    iscsi-initiator-utils-6.2.0.872-10.el6.x86_64.rpm 
    makebootfat-1.4-10.el6.x86_64.rpm 
    pykickstart-1.74.1-1.el6.noarch.rpm 
    pyparted-3.4-2.el6.x86_64.rpm 
    python-cryptsetup-0.0.11-1.el6.x86_64.rpm 
    python-nss-0.8-3.el6.x86_64.rpm 
    python-pyblock-0.48-1.el6.x86_64.rpm 
    squashfs-tools-4.0-3.el6.x86_64.rpm 
    tigervnc-server-1.0.90-0.10.20100115svn3945.el6.x86_64.rpm
    anaconda-yum-plugins-1.0-5.1.el6.noarch.rpm
    anaconda-13.21.82-1.el6.x86_64.rpm
    system-config-language-1.3.4-5.el6.noarch.rpm
    system-config-kickstart-2.8.6.2-1.el6.noarch.rpm
经过上面的安装,现在可以在gnome环境下配置kickstart了
#system-config-kickstart
 
配置界面如下:
 
1. 基本配置:根据内容选择和输入
 
2、 安装方法,选择ftp安装,输入服务器IP和目录,不要输入任何的帐号,我们采用的匿名安装
 
3、   引导安装程序选项,默认
 
4、 分区信息,创建三个分区分别是/boot,/swap和/根目录
5、 网络配置,网络类型选DHCP,设备名称选eth0
 
6、认证。默认不需要更改
7、防火墙设置。SElinux和Security level都选disable
8、显示配置:选上安装图形环境,下面的选disabled和enabled没看出区别
 
9、 软件包的选择:这里注意了如果你没有注册RHN的话,这里会提示“Package selection is disabled due to problems downloading package information”的错误,如图:
 
出现上面的错误要怎么解决呢,很简单只要在/etc/yum.repos.d目录下新建一个repo文件,名字随意后缀一定要是.repo,内容如下,其中baseurl要填写RHEL6安装光盘中Server的位置,注意大小写Server的第一个字母是大写的。因为我已经把安装光盘复制到FTP的公共目录下了,所以我这里直接填FTP的路径。
 
#vi /etc/yum.repos.d/rhel.repo
————————–分隔线以下是rhel.repo文件的内容———————————————–
[server]
name=server
baseurl=ftp://localhost/pub/Server
gpgcheck=1
enabled=1
 
——————————————-分隔线——————————————————————
新建了上面的文件后再来配置kickstart,软件包就可以选了装什么软件自己看着办吧,如图:
 
10、 Pre-Installation Script和Post-Installation Script是干什么的,如果你会写脚本的话这两个配置用处就大了,本人是菜鸟不会写脚本所以不解释了,自己上网搜吧。
11、 最后按file—>save as 生成ks.cfg文件另存到/var/ftp目录下
注:以上生成的ks.cfg安装完后默认是字符界面的,如果想装完默认是图形界面的话,就需要编辑ks.cfg,添加以下几行:
%post
perl -pi -e ‘s,id:3:initdefault,id:5:initdefault,’ /etc/inittab
%end
 
最后记住关闭防火墙和SElinux.
#service iptables stop
#setenforce 0
如果没关闭防火墙和SElinux客户端会出现以下错误:
PXE-E32:TFTP open timeout
 
到此,所有的配置都配完了,现在启动你的B虚拟机安装吧,祝你成功!有什么问题给我留言吧。