构建PXE一键装机平台

xiaoxiao2022-06-24  2

2.构建PXE一键装机平台 问题 准备一台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 2. 拷入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/ 3. 拷入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/ 4. 提供以第三方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 5. 为客户机提供 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 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 1 1Hc29SWRV$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 1 1Hc29SWRV$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[,…]] <device|image_file> <mount_point>

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