LINUX 构建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冲突的情况,因此在项目测试阶段建议大家不要选桥接网络。
注意:如果采用虚拟机,调试阶段先不要用桥接网络,否则会干扰物理网络;最终投入到真实环境启用时,再把网卡类型设为桥接,否则客户机会无法连接。
LINUX 构建PXE一键装机平台_第1张图片
图-4
步骤
实现此案例需要按照如下步骤进行。
步骤一:为RHEL6、CentOS6准备安装素材

  1. 安装并启用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
  1. 拷入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/
  1. 拷入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/
  1. 提供以第三方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
  1. 为客户机提供 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
  1. 为客户机提供 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装机服务各组件

  1. 搭建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
  1. 搭建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选择装机

  1. 找一台需要重装系统的虚拟机,从PXE网卡启动、验证安装过程
    1)自动获取IP地址,连接指定的TFTP服务器。
    2)下载并运行pxelinux.0启动文件。
    3)读取 pxelinux.cfg/default 配置文件,显示图形引导菜单,如图-5所示。
    4)根据用户选择安装RHEL6或CentOS6系统,或者超时后从硬盘启动。
    LINUX 构建PXE一键装机平台_第2张图片
    图-5

  2. 检查安装后的客户机系统
    1)以备用管理员账号zyadm可登录(密码为pwd123),如图-6所示。
    LINUX 构建PXE一键装机平台_第3张图片
    图-6
    2)通过“应用程序”菜单组可打开LibreOffice办公相关软件,如图-7所示。
    LINUX 构建PXE一键装机平台_第4张图片
    图-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

你可能感兴趣的:(学习)