问题
准备一台CentOS6服务器,将其打造为PXE一键装机平台。首先以虚拟机作为客户机进行测试,测试通过以后可直接投入真实局域网使用。
PXE服务器环境:
1)操作系统:CentOS 6.7 x86_64
2)主机名、IP地址:pxesvr.tedu.cn,192.168.4.254/24
3)关闭SELinux、iptables、NetworkMagager
针对客户机的需要,集中提供PXE装机相关素材,本例要求改用Web服务提供:
1)为 RHEL6、CentOS6 准备安装源
2)使用 ntfs-3g、libreoffice 包构建Yum源
3)为客户机提供Yum仓库配置、kickstart自动应答文件
方案
在项目实施中可以采用CentOS6虚拟机来做PXE服务器,当然也可以直接在CentOS6真机上来做,如图-4所示。真实网络中只应有一台PXE服务器,否则会出现DHCP冲突的情况,因此在项目测试阶段建议大家不要选桥接网络。
注意:如果采用虚拟机,调试阶段先不要用桥接网络,否则会干扰物理网络;最终投入到真实环境启用时,再把网卡类型设为桥接,否则客户机会无法连接。
图-4
步骤
实现此案例需要按照如下步骤进行。
步骤一:为RHEL6、CentOS6准备安装素材
安装并启用Web服务
1)安装httpd包,简单配置
[root@pxesvr ~]# yum -y install httpd
[root@pxesvr ~]# vim /etc/httpd/conf/httpd.conf
ServerName pxesvr.tedu.cn
… …
2)启动httpd服务,并设为开机自动运行
[root@pxesvr ~]# service httpd restart
停止 httpd: [失败]
正在启动 httpd: [确定]
[root@pxesvr ~]# netstat -anpt | grep httpd
tcp 0 0 :::80 :::* LISTEN 16221/httpd
[root@pxesvr ~]# chkconfig httpd on
拷入RHEL 6.7系统的光盘源
1)创建资源文件夹 /var/www/html/rhel6/
[root@pxesvr ~]# mkdir -p /var/www/html/rhel6
2)插入 RHEL 6.7系统的DVD光盘,将挂载点的文档复制到上述目录
[root@pxesvr ~]# \cp -rf /misc/cd/* /var/www/html/rhel6/
拷入CentOS 6.7系统的光盘源
1)创建资源文件夹 /var/www/html/centos6/
[root@pxesvr ~]# mkdir -p /var/www/html/centos6
2)弹出RHEL 6.7光盘,插入 CentOS 6.7的DVD1光盘,复制光盘文档
[root@pxesvr ~]# eject //卸载并弹出光盘
.. .. //手动更换为CentOS DVD1并连接
[root@pxesvr ~]# \cp -rf /misc/cd/* /var/www/html/centos6/
3)弹出CentOS 6.7的DVD1光盘,插入DVD2光盘,复制光盘文档
[root@pxesvr ~]# eject //卸载并弹出光盘
.. .. //手动更换为CentOS DVD2并连接
[root@pxesvr ~]# \cp -rf /misc/cd/* /var/www/html/centos6/
提供以第三方rpm包构建的软件源
1)创建资源文件夹 /var/www/html/other/
[root@pxesvr ~]# mkdir -p /var/www/html/other
2)解压LibreOffice的相关文件,拷入释放后的 *.rpm 文件
[root@pxesvr ~]# unzip LibreOffice_5.0.5_Linux_x86-64_rpm.zip
[root@pxesvr ~]# mv LibreOffice_*/RPMS/*.rpm /var/www/html/other/
[root@pxesvr ~]# mv ntfs-3g-*.rpm /var/www/html/other/
3)将 ntfs-3g 的rpm包拷入Web目录
[root@pxesvr ~]# mv ntfs-3g-2015.3.14-2.el6.x86_64.rpm /var/www/html/other/
4)安装 createrepo 工具,并为资源目录生成 repodata/ 库数据
[root@pxesvr ~]# yum -y install createrepo^C
[root@pxesvr ~]# createrepo /var/www/html/other/
Spawning worker 0 with 54 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@pxesvr ~]# ls /var/www/html/other/repodata/
.. ..
repomd.xml
为客户机提供 yum 仓库配置文件
1)创建pxe素材文件夹 /var/www/html/pxe/
[root@pxesvr ~]# mkdir /var/www/html/pxe
2)提供 RHEL6 客户机的仓库配置文件
[root@pxesvr ~]# vim /var/www/html/pxe/rhel6.repo
[rhel-packages]
name=Red Hat Enterprise Linux 6.7
baseurl=http://192.168.4.254/rhel6
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[other]
name=Other Packages
baseurl=http://192.168.4.254/other
gpgcheck=0
3)提供 CentOS6 客户机的仓库配置文件
注意:CentOS6系统的光盘库包括有LibreOfffice4.1版本的RPM包,因此不要添加other库。如果添加的话,则yum安装LibreOffice的时候可能会出现版本冲突。
[root@pxesvr ~]# vim /var/www/html/pxe/centos6.repo
[base]
name=CentOS 6.7
baseurl=http://192.168.4.254/centos6
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-6
为客户机提供 kickstart 自动应答配置文件
1)提供 RHEL6 客户机的ks-rhel6.cfg应答文件
找一台 RHEL 6.7 客户机,配好yum仓库:
[root@pc205 ~]# cd /etc/yum.repos.d/
[root@pc205 yum.repos.d]# rm -rf *.repo
[root@pc205 yum.repos.d]# wget http://192.168.4.254/pxe/rhel6.repo
… …
正在保存至: “/etc/yum.repos.d/rhel6.repo”
100%[===============================>] 207 --.-K/s in 0s
2014-11-10 18:32:50 (24.7 MB/s) - 已保存“/etc/yum.repos.d/rhel6.repo” [207/207])
安装system-config-kickstart,并生成ks-rhel6.cfg应答文件。注意应安装图形桌面,并通过安装后脚本完成Yum仓库设置、备用管理员账号添加等操作。最后将ks-rhel6.cfg文件拷贝到PXE服务器上,部署到Web目录,内容参考如下:
[root@pxesvr ~]# vim /var/www/html/pxe/ks-rhel6.cfg
firewall --disabled
install
url --url="http://192.168.4.254/rhel6" //采用Web源
rootpw --iscrypted $1$Hc29SWRV$u.5zg3fkUEmgtggp4HLtz1
auth --useshadow --passalgo=sha512
graphical
firstboot --disable
keyboard us
lang zh_CN
selinux --disabled
logging --level=info
timezone Asia/Shanghai
network --bootproto=dhcp --device=eth0 --onboot=on
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
zerombr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
%post --interpreter=/bin/bash //安装后脚本
useradd -u 0 -o zyadm
echo pwd123 | passwd --stdin zyadm
cd /etc/yum.repos.d/
rm -rf *.repo
wget http://192.168.4.254/pxe/rhel6.repo
yum -y install ntfs-3g libreoffice5.0*
%end
%packages
@base
@basic-desktop
@chinese-support
.. .. //省略更多软件列表
%end
2)提供 CentOS6 客户机的ks-centos6.cfg应答文件
找一台 CentOS 6.7 客户机(PXE服务器本机即可),配好yum仓库:
[root@pxesvr ~]# cd /etc/yum.repos.d/
[root@pxesvr yum.repos.d]# rm -rf *.repo
[root@pxesvr yum.repos.d]# wget http://192.168.4.254/pxe/centos6.repo
.. ..
正在保存至: “/etc/yum.repos.d/centos6.repo”
100%[===============================>] 207 --.-K/s in 0s
2014-11-10 18:32:50 (24.7 MB/s) - 已保存“/etc/yum.repos.d/centos6.repo” [207/207])
然后安装system-config-kickstart,并生成ks-centos6.cfg应答文件。最后将ks-centos6.cfg文件拷贝到PXE服务器上,部署到Web目录,内容参考如下:
[root@pxesvr ~]# vim /var/www/html/pxe/ks-centos6.cfg
firewall --disabled
install
url --url="http://192.168.4.254/centos6" //采用Web源
rootpw --iscrypted $1$Hc29SWRV$u.5zg3fkUEmgtggp4HLtz1
auth --useshadow --passalgo=sha512
graphical
firstboot --disable
keyboard us
lang zh_CN
selinux --disabled
logging --level=info
timezone Asia/Shanghai
network --bootproto=dhcp --device=eth0 --onboot=on
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
zerombr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
%post --interpreter=/bin/bash //安装后脚本
useradd -u 0 -o zyadm
echo pwd123 | passwd --stdin zyadm
cd /etc/yum.repos.d/
rm -rf *.repo
wget http://192.168.4.254/pxe/centos6.repo
%end
%packages
@base
@basic-desktop
@chinese-support
.. .. //省略更多软件列表
%end
.. ..
步骤二:配置PXE装机服务各组件
搭建DHCP服务器
1)安装dhcp软件包、配置dhcpd服务
[root@pxesvr yum.repos.d]# yum -y install dhcp
[root@pxesvr ~]# vim /etc/dhcp/dhcpd.conf
default-lease-time 7200;
max-lease-time 14400;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.10 192.168.4.200;
option routers 192.168.4.254;
next-server 192.168.4.254; #//TFTP引导服务器的地址
filename “pxelinux.0”; #//网卡引导文件名
}
2)启用dhcpd服务,并设置为开机自动运行
[root@pxesvr ~]# service dhcpd restart
正在启动 dhcpd: [确定]
[root@pxesvr ~]# chkconfig dhcpd on
搭建TFTP服务器
1)安装tftp-server软件包,并启用服务
[root@pxesvr ~]# yum -y install tftp-server
[root@pxesvr ~]# chkconfig tftp on
[root@pxesvr ~]# chkconfig xinetd on
[root@pxesvr ~]# service xinetd restart
停止 xinetd: [失败]
正在启动 xinetd: [确定]
2)拷贝用来安装RHEL6客户机的内核文件、初始化镜像文件
[root@pxesvr ~]# mkdir -p /var/lib/tftpboot/rhel6/
[root@pxesvr ~]# cd /var/www/html/rhel6/images/pxeboot/
[root@pxesvr pxeboot]# cp -rf vmlinuz initrd.img /var/lib/tftpboot/rhel6/
3)拷贝用来安装CentOS6客户机的内核文件、初始化镜像文件
[root@pxesvr ~]# mkdir -p /var/lib/tftpboot/centos6
[root@pxesvr ~]# cd /var/www/html/centos6/images/pxeboot/
[root@pxesvr pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/centos6/
4)拷贝PXE网卡启动文件、图形模块文件、背景图片文件
[root@pxesvr ~]# yum -y install syslinux
[root@pxesvr ~]# cd /var/lib/tftpboot/
[root@pxesvr tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./
[root@pxesvr tftpboot]# cp /usr/share/syslinux/vesamenu.c32 ./
[root@pxesvr tftpboot]# cd /usr/share/doc/syslinux-4.04/sample/
[root@pxesvr sample]# cp syslinux_splash.jpg /var/lib/tftpboot/splash.jpg
5)配置PXE引导菜单
[root@pxesvr ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@pxesvr ~]# cd /var/www/html/centos6/isolinux/
[root@pxesvr isolinux]# cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@pxesvr isolinux]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
[root@pxesvr ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
timeout 600
menu background splash.jpg
menu title Welcome to PXE Installation Server !
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 rhel6
menu label Install RH^EL 6.7 ( Kickstart )
kernel rhel6/vmlinuz
append ks=http://192.168.4.254/pxe/ks-rhel6.cfg initrd=rhel6/initrd.img
label centos6
menu label Install ^CentOS 6.7 ( Kickstart )
kernel centos6/vmlinuz
append ks=http://192.168.4.254/pxe/ks-centos6.cfg initrd=centos6/initrd.img
label rescue
menu label ^Rescue Installed System
kernel rhel6/vmlinuz
append initrd=rhel6/initrd.img rescue
label local
menu label Boot From ^Local Drive
menu default
localboot 1
6)确认TFTP目录及文件结构、测试tftp下载
[root@pxesvr isolinux]# ls -R /var/lib/tftpboot/
/var/lib/tftpboot/:
centos6 pxelinux.0 pxelinux.cfg rhel6 splash.jpg vesamenu.c32
/var/lib/tftpboot/centos6:
initrd.img vmlinuz
/var/lib/tftpboot/pxelinux.cfg:
default
/var/lib/tftpboot/rhel6:
initrd.img vmlinuz
[root@pxesvr ~]# yum -y install tftp
[root@pxesvr ~]# tftp 192.168.4.254 -c get pxelinux.0
[root@pxesvr ~]# ls -l pxelinux.0
-rw-r--r--. 1 root root 26828 11月 10 19:40 pxelinux.0
步骤三:测试PXE选择装机
找一台需要重装系统的虚拟机,从PXE网卡启动、验证安装过程
1)自动获取IP地址,连接指定的TFTP服务器。
2)下载并运行pxelinux.0启动文件。
3)读取 pxelinux.cfg/default 配置文件,显示图形引导菜单,如图-5所示。
4)根据用户选择安装RHEL6或CentOS6系统,或者超时后从硬盘启动。
图-5
检查安装后的客户机系统
1)以备用管理员账号zyadm可登录(密码为pwd123),如图-6所示。
图-6
2)通过“应用程序”菜单组可打开LibreOffice办公相关软件,如图-7所示。
图-7
3)已经装好ntfs-3g支持工具。
[root@pxesvr ~]# ntfs-3g --help
ntfs-3g 2015.3.14 integrated FUSE 27 - Third Generation NTFS Driver
Configuration type 1, XATTRS are on, POSIX ACLS are off
Copyright © 2005-2007 Yura Pakhuchiy
Copyright © 2006-2009 Szabolcs Szakacsits
Copyright © 2007-2015 Jean-Pierre Andre
Copyright © 2009 Erik Larsson
Usage: ntfs-3g [-o option[,…]]
Options: ro (read-only mount), windows_names, uid=, gid=,
umask=, fmask=, dmask=, streams_interface=.
Please see the details in the manual (type: man ntfs-3g).
Example: ntfs-3g /dev/sda1 /mnt/windows
News, support and information: http://tuxera.com