1.   PXE无人值守安装

1)      实验一:搭建PXE Server

服务器IP为192.168.10.253,可以给192.168.10.0/24安装RHEL5.9

分别给每台客户端分配主机名,格式如下

stationx.tarena.com     192.168.10.x

安装所需要的软件包存放在/data/iso/rhel5.9

1.      网络配置

编辑网卡配置文件

[root@PXE-Server~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

ONBOOT=yes

HWADDR=00:0c:29:ad:f5:27

IPADDR=192.168.0.252

NETMASK=255.255.255.0

GATEWAY=192.168.0.252

网络服务重新启动

[root@PXE-Server~]# /etc/init.d/network restart

正在关闭接口 eth0:                                        [确定]

关闭环回接口:                                             [确定]

弹出环回接口:                                             [确定]

弹出界面 eth0:                                            [确定]

将网络服务设为开机启动

[root@PXE-Server~]# chkconfig --list network

network         0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

修改主机名(非必须)

[root@PXE-Server~]# vim /etc/sysconfig/network

HOSTNAME=PXE-Server.com

NETWORKING=yes

HOSTNAME=os.server

为了使修改直接生效,可以直接再开终端Ctrl+Shift+t

关闭NetworkManager服务(非必须)

[root@PXE-Server~]# /etc/init.d/NetworkManager status

NetworkManager已停

[root@PXE-Server~]# chkconfig --list NetworkManager

NetworkManager  0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

配置yum源文件

[root@PXE-Server~]# cd /etc/yum.repos.d/

[root@PXE-Serveryum.repos.d]# ls

rhel-debuginfo.repo

[root@PXE-Serveryum.repos.d]# cp rhel-debuginfo.repo dvd.repo

[root@PXE-Serveryum.repos.d]# vim dvd.repo

[rhel-server]

name=RedHat

baseurl=file:///media/Server

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@PXE-Serveryum.repos.d]# yum clean all

查看yum源的配置情况

[root@PXE-Server~]# yum repolist

Loadedplugins: product-id, security, subscription-manager

Thissystem is not registered to Red Hat Subscription Management. You can usesubscription-manager to register.

rhel-server                                 | 1.5 kB     00:00    

rhel-server/primary                         | 932 kB     00:00    

rhel-server                                             3335/3335

repoid                         repo name                    status

rhel-server                     Red Hat                      3,335

repolist:3,335

证明yum源配置正确

确定防火墙与SELinux关闭

[root@PXE-Server~]# /etc/init.d/iptables status

防火墙已停

[root@PXE-Server~]# getenforce

Disabled

2.      实验步骤:

01.  配置DHCP(给需要安装系统的主机分配ip

[root@pxesvr~]# yum  -y  install dhcp                  //安装 dhcp 服务程序

 

[root@pxesvr~]# vim /etc/dhcp/dhcpd.conf

option domain-name "tarena.com";

option domain-name-servers 192.168.4.6;

default-lease-time 7200;6

max-lease-time 14400;

subnet 192.168.4.0  netmask  255.255.255.0 {

range 192.168.4.100  192.168.4.200;

option routers 192.168.4.254;

next-server  192.168.4.6;                     #//TFTP引导服务器的地址    

filename  "pxelinux.0";                    #//网卡引导文件名

}

 

[root@pxesvr~]# service  dhcpd   restart         //启动 dhcpd 服务

[root@pxesvr~]# netstat  -anptu  | grep  dhcpd       //查看监听状态

udp        0      0 0.0.0.0:67                  0.0.0.0:*                               4095/dhcpd

 

[root@pxesvr~]# chkconfig  dhcpd  on             //设置 dhcpd 服务开机自运行

 

02.  配置DNS

[root@pxesvr~]# yum  -y  install bind bind-chroot

[root@pxesvr ~]# mv /etc/named.conf /etc/named.conf.old         //避免默认配置干扰

 

[root@pxesvr ~]# vim /var/named/chroot/etc/named.conf       //DNS服务的主配置文件

options {

directory "/var/named";

};

zone "tarena.com" IN {                                //定义正向区域

type master;

file "tarena.com.zone";

};

zone"4.168.192.in-addr.arpa" IN {                          //定义反向区域

type master;

file "192.168.4.arpa";

};

 

[pxesvr ~]# vim /var/named/chroot/var/named/tarena.com.zone        //正向区域数据文件

$TTL1D

@ SOAtarena.com.  root.tarena.com.  (

2014072101

8H

2H

4H

1D

)

@       IN   NS  ns.tarena.com.

ns       IN   A     192.168.4.6

pxesvr       IN   A     192.168.4.6

ftp      IN   CNAME pxesvr

$GENERATE  100-200  pc$ IN   A     192.168.4.$

 

[@pxesvr ~]# cat /var/named/chroot/var/named/192.168.4.arpa         //反向区域数据文件

$TTL1D

@ SOAtarena.com.  root.tarena.com.  (

2014072101

8H

2H

4H

1D

)

@       IN   NS  ns.tarena.com.

6  IN   PTR pxesvr.tarena.com.

$GENERATE  100-200  $     IN   PTR pc$.tarena.com.

 

[root@pxesvr ~]# service named  restart                   //启动 named 服务

。。。

[root@pxesvr ~]# chkconfig named  on                     //设置 named 服务开机自运行 

 

[root@pxesvr ~]# vim /etc/resolv.conf                  //设置 DNS 客户端文件

Search     tarena.com

nameserver       192.168.4.6

[root@pxesvr ~]# host pxesvr.tarena.com                   //测试,确保 DNS 解析可用

pxesvr.tarena.com has address 192.168.4.6

[root@pxesvr ~]# host  pc123.tarena.com

pc123.tarena.com has address 192.168.4.123

[root@pxesvr ~]# host 192.168.4.123

123.4.168.192.in-addr.arpa domain name pointerpc123.tarena.com.

03.  配置TFTP

[root@pxesvr ~]# yum -y  install  tftp-server          //安装 TFTP 服务器程序

[root@pxesvr ~]# chkconfig tftp  on                    //将临时服务 tftp 设为启用

[root@pxesvr ~]# service xinetd  restart              //启用 xinetd  超级服务

[root@pxesvr ~]# netstat -anptu  |  grep xinetd          //查看监听状态

udp        0      0 0.0.0.0:69                  0.0.0.0:*                               30426/xinetd

[root@pxesvr ~]# chkconfig xinetd  on               //设置 dhcpd 服务开机自运行

 

04.  准备装机文件initrd.img pxelinux.0  vmlinuz

a)       提取 pxelinux.0
1直接从光盘目录提取

[root@pxesvr ~]# rpm2cpio /var/ftp/rhel6/Packages/syslinux-4.02-8.el6.x86_64.rpm | \

cpio -id ./usr/share/syslinux/pxelinux.0  提取光盘内的 pxelinux.0 文件

。。。

[root@pxesvr ~]# mv usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

//提取引导RHEL6客户机的网卡启动文件

[root@pxesvr ~]# rm -rf  usr/                    //清理残留的目录

 

2查找pxelinux.0文件,因为本机开机时也需要该文件,所以本机上必然存在。

[root@PXE-Server ~]# find / -name pxelinux.0

/usr/share/syslinux/pxelinux.0

/tftpboot/linux-install/pxelinux.0

3 安装 安装syslinux 提取pxelinux.0

[root@server01 ~]# rpm -ql syslinux | grep pxelinux.0

/usr/share/syslinux/gpxelinux.0

/usr/share/syslinux/pxelinux.0

[root@os chroot]# yum -y install syslinux

[root@oschroot]# cp /var/ftp/redhat6.5/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/

[root@oschroot]# cd /var/lib/tftpboot/

[root@ostftpboot]# ls

initrd.img  vmlinuz

[root@ostftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@ostftpboot]# ls

initrd.img pxelinux.0  vmlinuz

 

b)      提取initrd.img  vmlinuz 文件

 [root@pxesvr ~]# cd  /var/ftp/rhel6/p_w_picpaths/pxeboot/        //拷贝引导RHEL6客户机的内核和初始化镜像

[root@pxesvr isolinux]# cp vmlinuz  initrd.img  /var/lib/tftpboot/

 

[root@pxesvr ~]# ls /var/lib/tftpboot/           //确认 TFTP 根目录下部署的文档

initrd.img  pxelinux.0  vmlinuz

c)       测试 TFTP 服务 (可选)

[root@pxesvr ~]# yum -y  install  tftp                  //安装TFTP 客户端命令

[root@pxesvr ~]# tftp 192.168.4.6  -c  get pxelinux.0     //连接服务端,测试下载文件

[root@pxesvr ~]# ls -lh  pxelinux.0                   //确认下载结果

-rw-r--r--. 1 root root 27K 7月  19 21:55 pxelinux.0

 

05.  NFS共享网络装机

[root@PXE-Server ~]# cat /etc/exports

/data/iso/rhel5.9       *(ro)

[root@PXE-Server~]# service portmap restart

[root@PXE-Server~]# service nfs restart

[root@PXE-Server~]# chkconfig portmap on

[root@PXE-Server~]# chkconfig nfs on

06.  FTP网络装机

[root@server01~]# yum -y install vsftpd

[root@server01 ~]# tail -n 1/etc/vsftpd/vsftpd.conf

anon_root=/var/ftp/

[root@server01~]# service vsftpd restart

[root@server01~]# chkconfig vsftpd on

07.  HTTP网络装机

[root@server01~]# yum -y install httpd

[root@server01 ~]# grep DocumentRoot/etc/httpd/conf/httpd.conf |  grep -v"^#"

DocumentRoot "/var/www/html"

[root@server01~]# grep  Indexes  /etc/httpd/conf.d/welcome.conf

OptionsIndexes

[root@server01~]# service httpd restart

[root@server01~]# chkconfig httpd on

08.  准备安装光盘

cp/misc/cd/* /var/ftp/redhat6.5

3.      PXE安装配置启动菜单

 

[root@pxesvr ~]# mkdir /var/lib/tftpboot/pxelinux.cfg        //创建启动配置目录

[root@pxesvr ~]#cp /var/ftp/rhel6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

//拷贝模板配置

[root@pxesvr ~]#chmod  755  /var/lib/tftpboot/pxelinux.cfg/default

 

[root@pxesvr ~]# vim /var/lib/tftpboot/pxelinux.cfg/default  //修改默认启动设置

default   linux                #//默认从哪个标签引导系统

prompt 1                   #//是否交互式安装

timeout 600                    #//进入默认系统的等待超时(单位:1/10秒)

label linux                  #//定义名为linux的标签

kernel  vmlinuz          #//选择此标签时,需要加载的内核文件

append initrd=initrd.img      #//加载内核文件时附加的参数

2)      实验二:通过Kickstart实现无人值守安装(接着实验一)

[root@PXE-Server ~]# yum -y installsystem-config-kickstart

操作过程见图片

在/root/ks.cfg文件中添加key --skip

[root@PXE-Server~]# cp /root/ks.cfg /data/iso/rhel5.9/

[root@server01~]# vim /tftpboot/pxelinux.cfg/default

...

10label linux

11   kernel vmlinuz

12   append initrd=initrd.imgks=http://192.168.10.253/ks.cfg

appendinitrd=initrd.img ks=nfs:192.168.10.253:/../ks.cfg

4.       文字:准备应答文件

找一台已装好的RHEL 6.4 模板客户机(本例中可选 PXE 服务器本机),

通过 system-config-kickstart 工具创建 ks-el6.cfg 应答文件

 

[root@pxesvr ~]# yum -y  install  system-config-kickstart

[root@pxesvr ~]# system-config-kickstart          //在图形桌面下运行

!!!! 打开 /root/anaconda-ks.cfg文件,作为应答文件模板

!!!! 基本配置:指定默认语言、时区、根口令(123456)

!!!! 安装方式:新安装、FTP安装(192.168.4.6、/rhel6)

!!!! 分区信息:清除主引导记录、删除所有现存分区、初始化磁盘标签、/boot 200MB、SWAP 2GB、/  剩余空间

!!!! 网络配置:第一块网卡DHCP自动获取

!!!! 防火墙配置:禁用SELinux、禁用防火墙

!!!! 软件包选择:不安装图形桌面

!!!! 安装后脚本:从 pxesvr 自动下载并部署 YUM 客户端配置、安装并启动 httpd 网站服务

rm  -rf  /etc/yum.repos.d/*

wget ftp://192.168.4.6/rhel6.repo -O  /etc/yum.repos.d/rhel6.repo

yum  clean  all

yum  -y  install httpd

echo  "I  LOVE TARENA"  >  /var/www/html/index.html

/etc/init.d/httpd start

chkconfig httpd  on

!!!! 经上述调整后,另存为应答文件/opt/ks-el6.cfg

5.      图片:安装软件包

[root@PXE-Server~]# rpm -q system-config-kickstart

packagesystem-config-kickstart is not installed

[root@PXE-Server~]# yum -y install system-config-kickstart

……

Installed:

system-config-kickstart.noarch0:2.6.19.9-2.el5              

DependencyInstalled:

pykickstart.noarch0:0.43.9-1.el5                            

Complete!

[root@PXE-Server~]# system-config-kickstart

 

安装方法选择

 

引导装在程序,使用默认值

 

6.      分区信息

7.      网络配置,添加网络设备,曹勇DHCP自动获取IP

 

8.      验证,使用默认值

 

9.      防火墙配置,全部禁用

 

10. 显示配置,可根据情况调整

 

11. 软件包选择

桌面,选择GNOME

 

12. 用用程序的选择

 

13. 开发的选择,可随意,可不选,在企业中根据是否有发开情况协商之后选择

 

14. 服务器选择

 

15. 基本系统的选择

 

 

16. 语言支持,选择中文与英文

 

17. 安装前脚本、安装后脚本暂时不需书写

将结果保存

18. 文件名ks.cfg,保存位置随意,可以之后调整

3)      编辑ks.cfg文件

19. 移动文件

[root@PXE-Server~]# ls

anaconda-ks.cfg  install.log         ks.cfg

Desktop          install.log.syslog

编辑ks.cfg位置

[root@PXE-Server~]# cp ks.cfg /var/ftp/

[root@PXE-Server~]# /etc/init.d/vsftpd restart

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                    [确定]

20. 编辑default文件,说明应答文件的位置

[root@PXE-Server~]# vim /tftpboot/pxelinux.cfg/default

3timeout 60

11   append ks=ftp://192.168.0.252/ks.cfg initrd=initrd.img

21. 通过浏览器可以查看到ks.cfg文件

 

22. 在安装时有一个注意事项,需要安装码

可以在ks.cfg文件中写入一行内容,自动跳过

[root@PXE-Server~]# vim /var/ftp/ks.cfg

12key --skip

OK,准备工作都已经完成,之后就是验证我们操作结果的时候了

新建虚拟机,将网络设置与PXE+Kickstart相同,开机,这是如果你很自信,那么你就可以去喝咖啡了。

4)      验证

对于新安装的系统,查看本机IP、主机名、DNS解析、网关等,可以验证本次操作是否正确。

5)      扩展

23. 使用httpd服务,提供ks.cfg文件,修改default文件

vsftpd提供的ks.cfg备份

[root@PXE-Server~]# ls

anaconda-ks.cfg  install.log         ks.cfg

Desktop          install.log.syslog

[root@PXE-Server~]# cd /var/ftp/

[root@PXE-Serverftp]# ls

ks.cfg  pub

[root@PXE-Serverftp]# mv ks.cfg ks.cfg.bak

[root@PXE-Serverftp]# ls

ks.cfg.bak  pub

[root@PXE-Serverftp]# cd

安装httpd软件包

[root@PXE-Server~]# rpm -q httpd

packagehttpd is not installed

[root@PXE-Server~]# yum -y install httpd

……

Installed:

httpd.x86_640:2.2.3-74.el5                                  

DependencyInstalled:

apr.x86_640:1.2.7-11.el5_6.5                                

apr-util.x86_640:1.2.7-11.el5_5.2                           

postgresql-libs.x86_640:8.1.23-6.el5_8                       

Complete!

启动httpd服务

[root@PXE-Server~]# /etc/init.d/httpd status

httpd已停

[root@PXE-Server~]# /etc/init.d/httpd start

启动 httpd:httpd: apr_sockaddr_info_get() failedfor PXE-Server

httpd:Could not reliably determine the server's fully qualified domain name, using127.0.0.1 for ServerName

[确定]

编辑httpd的主配置文件

[root@PXE-Server~]# vim /etc/httpd/conf/httpd.conf

265#ServerName www.example.com:80

266ServerName www.tarena.com:80

设置主机名

查看之前的解析是否对应

[root@PXE-Server~]# host www.tarena.com

www.tarena.comhas address 192.168.0.252

重启httpd服务并设置为开机启动

[root@PXE-Server~]# /etc/init.d/httpd restart

停止 httpd:                                              [确定]

启动 httpd:                                               [确定]

[root@PXE-Server~]# chkconfig --list httpd

httpd           0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭 6:关闭

[root@PXE-Server~]# chkconfig httpd on

[root@PXE-Server~]# chkconfig --list httpd

httpd           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用 6:关闭

ks.cfg文件移动到httpd服务的主目录下

[root@PXE-Server~]# ls

anaconda-ks.cfg  install.log         ks.cfg

Desktop          install.log.syslog

[root@PXE-Server~]# cp ks.cfg /var/www/html/

验证是否能够读取该文件

能够成功读取该文件

修改default文件

[root@PXE-Server~]# vim /tftpboot/pxelinux.cfg/default

12   append ks=http://192.168.0.252/ks.cfginitrd=initrd.img

光盘镜像位置还由vsftpd服务提供

[root@PXE-Server~]# vim /var/www/html/ks.cfg

12key --skip

23url --url=ftp://192.168.0.252/pub

新建虚拟机验证

安装完成之后查看配置信息

[root@station46~]# ifconfig eth0 |head -n 2

eth0      Link encap:Ethernet  HWaddr 00:0C:29:30:69:BB 

inetaddr:192.168.0.46 Bcast:192.168.0.255 Mask:255.255.255.0

[root@station46~]# hostname

station46.tarena.com

[root@station46~]# cat /etc/resolv.conf

;generated by /sbin/dhclient-script

searchdomain.org

nameserver192.168.0.252

[root@station46~]# route -n |tail -n 1

0.0.0.0         192.168.0.252   0.0.0.0         UG   0      0        0 eth0