自动化之安装操作系统——PXE

    PXE:Preboot eXecution Everionment,Intel公司开发的预启动执行环境,使用这套环境能够使我们在为大量的计算机部署操作系统的时候,不必在每一台新主机上部署操作系统,而是让其自动安装,我们只需要让机器开机即可。在这个环境中使用到的软件和服务是DHCP、TFTP和HTTP(或者FTP、NFS等),他们功能分别是当一台机器加电启动的时候,如果其硬盘中没有操作系统,那么它就会自动的从网络环境中启动,而DHCP的功能就是为其分配一个可用IP地址,使其能够正常的进行网络访问,在为其分配完IP地址后,DHCP还有一个功能就是告诉这台没有操作系统的机器去一个特定的地方去加载启动文件,这个特定的地方就是安装有TFTP-SERVER的地方,在这个地方为机器提供引导文件和Linux的内核及initrd.img等文件,并且提供一个供安装使用的菜单。在得到了配置文件之后,机器就能够读取,知道下一步应该使用HTTP或者其他的一些协议到特定的地方下载自动安装的配置文件和软件包了。上面提到的这些服务可以部署在一台主机上,也可以部署在不同的主机上,根据实际需要进行选择。下面开始进行详细的部署:

一、环境搭建(在172.16.128.14)

    在这里,我选择使用DHCP、TFTP-SERVER、HTTP来进行部署,也可以选择其他类似的软件,只要能够实现功能即可。在这里,我使用的系统是CentOS 6。首先,安装这三个软件:

~]# yum -y install dhcp tftp-server httpd

    下面,开始配置DHCP服务,DHCP默认监听在UDP的67号端口,负责为网段中有需要的主机分配IP地址(也可以为其他网段有需要的主机分配IP地址,称其为DHCP的中继服务,不过在这里用不到)。DHCP的主配置文件是“/etc/dhcp/dhcpd.conf”,我们在其中添加以下配置:

default-lease-time      3600;
max-lease-time          7200;
subnet 172.16.0.0 netmask 255.255.0.0 {
    option routers 172.16.128.14;                    #指定网关
    option domain-name "getip.com";                  #指定此DHCP服务监听域名
    option domain-name-servers 172.16.128.14;        #指定DNS服务地址
    range 172.16.100.1 172.16.100.254;               #指定分配IP地址的范围
    filename "pxelinux.0";                           #指定引导文件
    next-server 172.16.128.14;                       #指定TFTP-SERVER地址
}

    修改完配置文件并保存退出之后,可以使用“dhcpd”命令来检测语法是否正确,出现如图所示画面即表示配置正确:

c7e278500cb8a50bcb10a48bdefa14ef.png-wh_

    然后启动DHCP服务:

~]# service dhcpd start

    这样,DHCP服务就配置完成了,接下来配置TFTP-SERVER,在这里我们需要一个启动引导文件,这个启动引导文件可以通过安装“syslinux”来获得:

~]# service dhcpd start

    安装完成之后会在“/usr/share/syslinux/”下产生一个“pxelinux.0”的文件,然后将这个文件复制到TFTP-SERVER的文件目录“/var/lib/tftpboot/”下,同时,将一些启动所需要的文件拷贝到这个目录中:

~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
~]# cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
~]# cp /mnt/cdrom/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot

    然后启动TFTP服务,需要修改配置文件“/etc/xinetd.d/tftp”,在这个配置文件中,我们需要将“disable”那一项后头的yes改为no,当其为yes的时候是不启动。如果我们想要指定主目录的话,可以修改server_args选项,在这个选项中添加“-c”参数可以让用户能够创建目录。在配置完成之后,使用命令启动服务:

~]# service xinetd restart

    然后再使用命令查看,如果能够如图一样匹配出结果,即证明服务运行成功:

~]# ss -unlp | grep 69

8f434c4fbcd0269cae41eaaeff7769bc.png-wh_

    到这里,文件拷贝的任务完成了,还需要设置启动选项,这个启动选项是供我们来进行选择的选项,配置的方法是首先创建一个“pxelinux.cfg”目录,然后在其中创建一个“default”配置文件(可以拷贝过来),这个步骤必须一点误差都没有,否则找不到选项卡,那么就会失败:

~]# mkdir /var/lib/tftpboot/pxelinux.cfg
~]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

    拷贝完这个文件之后,对其进行一些修改,添加一个标签项:

label autoinst
menu label ^Auto install CentOS 6.7
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.128.14/installcentos6/centos6-ks.cfg

    到这里,我们的引导步骤就做完了,我们可以新建一个虚拟机来进行测试,在建好虚拟机之后,不用选择光驱,网络选择仅主机(也可以不是仅主机,只要能够连接到这台服务器即可),如果前面的配置都正确,那么在等待一段时间之后,就可以看到如图所示的画面:

27a37b54fa6fe3d9903dfb961736ed7e.png-wh_

    这个画面是我们在构建好虚拟机之后,开机直接跳出来的画面,我们并没有为其装载任何的系统或者光盘镜像,从开机到加载到当前的这个画面,都是其通过DHCP和TFTP-SERVER自动完成的。这是在虚拟机里,我们还需要配置硬件,如果我们在真实的机房环境中,仅仅只需要插好网线,打开电源即可,无疑是大大的方便了安装系统的人员。

    当到了这个画面,说明能够进行引导了,但是还不能开始装系统,因为没有可以使用的软件包,而且就算有软件包,也得自己来一次一次的点击下一步,这是很不方便的,所以我们需要使用一个叫做“kickstart”的东西,这是一个配置文件,其中记录了安装一个系统的所有详细步骤,比如如何进行分区、安装哪些软件等。这个配置文件我们可以通过HTTP来进行获取,所以我们首先要启动HTTP的服务(这个步骤可以使用任何能够远程连接进行读取文件的服务)。

~]# service httpd start

    然后创建目录:

~]# mkdir /var/www/html/installcentos6

    在这个目录中编辑一个叫做“centos6-ks.cfg”的文件:

~]# vim centos6-ks.cfg

    在其中写入以下内容(由于是为了测试和实验,所以我删除了注释和大部分的软件包,在真实使用的时候可以使用kickstart生成软件来进行生成):

firewall --disabled
install
url --url="http://172.16.128.14/installcentos6/centos"
rootpw  --iscrypted $6$8co3aKHpsGrObvhg$uXiOMHBKT.bc5pXfm9aX.k89rvkrCs5L9FOZPhqFaPyjPuwZAUm/YFAjeMLsfSvq2x3EiwoFMelbxLy12Dnqa0
text
firstboot --disable
lang en_US
keyboard us
selinux --disabled
reboot
timezone Asia/Shanghai
auth --useshadow --passalgo=sha512
bootloader --location=mbr --driveorder="sda" --append="rhgb crashkernel=auto quiet"
zerombr
clearpart --all
part /boot --fstype="ext4" --size=200
part pv.008 --size=61440
volgroup vg0 --pesize=8192 pv.008
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
%packages
@base
@core
%end

    保存退出之后,通过浏览器访问“http://172.16.128.14/installcentos6/”即可看到如图所示的页面(创建一个centos的目录是为了保存安装包):

41632fb4277f26ecd0b9c905a893ea8c.png-wh_

    在验证了可以访问之后,我们将当前这个系统的光盘绑定在刚才创建的“centos”目录上:

~]# mount --bind /mnt/cdrom/ /var/www/html/installcentos6/centos

    然后刷新浏览器,并点击centos那个选项,即可看到如图所示的光盘中的内容:

d4fc8a158c696118badc4ad99f7d3580.png-wh_

二、进行验证

    至此,PXE模式自动安装操作系统的部署与配置就完成了,接下来,我们只需要重启刚才作为测试的哪个虚拟机即可,在等待一会之后,就能看到选择如何安装的哪个选项卡,我们选择第一个选项来进行自动安装(也可以修改配置文件,将自动安装设置为默认,或者删除其他的选项):

d1649b7b6c442300262b7ed3b8abed18.png-wh_

    选择了自动安装之后,操作系统就开始按照设定好的步骤启动安装程序,再次等待一段时间之后,安装程序就开始进行安装必要的软件包了。如果不算刚才选择如何安装的过程,那么从开始加电到安装完成,计算机都能够自动完成,那么当我们在安装很多台计算机时都可以只摁个开机键即可。不过这种模式有个缺点就是配置一套这样的PXE自动安装仅能安装一种操作系统,即,如果配置的是CentOS 6 ,那么就不能再配置CentOS 7 的安装程序了。为了解决这个问题,在下一篇博客中会说cobbler这个软件。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章