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