Loading... <p style="text-indent: 2em"> <hr /> <p style="text-indent: 2em"><strong>前言</strong></p> <p style="text-indent: 2em"><span style="font-size: 14px">在生产环境中,我们时常会需要在多台客户端主机或服务器安装操作系统,如果每一台都去手动安装,费时费力,显然是不现实的。那么,如何高效的完成此类工作呢?文将讲解如何实现Linux系统的全自动无人值守安装。</span></p> <hr /> <p style="text-indent: 0em"><strong>提供PXE服务所需安装包</strong></p> <p style="text-indent: 2em"><span style="font-size: 14px">dhcp:动态主机配置协议,给客户端提供ip地址<br style="text-indent: 2em" /></span></p> <p style="text-indent: 2em"><span style="font-size: 14px">tftp-server:tftp服务器端,提供系统安装所需文件<br style="text-indent: 2em" /></span></p> <p style="text-indent: 2em"><span style="font-size: 14px">xinetd:tftp服务超级守护进程,用于唤醒tftp服务<br style="text-indent: 2em" /></span></p> <p style="text-indent: 2em"><span style="font-size: 14px">httpd:基于http服务提供安装源</span></p> <p style="text-indent: 2em"><span style="font-size: 14px">syslinux:提供pxelinux.0文件,此文件用于引导系统,相当于bootloader<br style="text-indent: 2em" /></span></p> <p style="text-indent: 0em"><strong><span style="font-size: 14px">安装所需安装包</span></strong></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-98.jpg" title="1427890624656767.jpg" alt="1.jpg" /></p> <p style="text-indent: 0em"><strong>dhcp服务配置</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">dhcp服务的配置文件默认是/etc/dhcp/dhcpd.conf,但此文件默认是没任何配置的,此服务提供了一个参考文件/usr/share/doc/dhcp*/dhcpd.conf.sample,复制此文件覆盖原配置文件,直接修改即可。</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-20.jpg" title="1427890641660595.jpg" alt="2.jpg" /></p> <pre class="brush:bash;toolbar:false">#option domain-name "scholar.com"; #分配dns域 #option domain-name-servers 172.16.10.10; #分配dns地址 #default-lease-time 600; #默认租约时长 #max-lease-time 7200; #最大租约时长 #以上为dhcp全局配置,如果仅为实现PXE可默认 subnet 172.16.0.0 netmask 255.255.0.0 { #提供dhcp服务的网段 range 172.16.10.20 172.16.10.100; #地址池 option routers 172.16.0.1; #网关 next-server 172.16.10.10; #tftp服务器地址 filename "pxelinux.0" #PXE引导文件 } #以下仅为介绍dhcp特殊配置,无需要可不配置 #host winxp { #设置保留专用地址 # hardware ethernet 00:0c:29:50:29:02; #保留主机物理地址 # fixed-address 172.16.100.2; #保留地址,非地址池内地址,优先分配 #}</pre> <p style="text-indent: 2em"><span style="font-size: 14px">dhcp服务配置完成,测试配置无语法错误后,启动服务并设置开机自启</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-35.jpg" title="1427890663597600.jpg" alt="3.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">dhcp工作在upd的67端口,启动服务后,可查看67端口是否开启</span><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-7.jpg" title="1427890729518822.jpg" alt="4.jpg" /></p> <p style="text-indent: 0em"><strong>tftp服务配置</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">xinetd是tftp的超级守护进程,即tftp是xinetd的子服务,修改配置文件,确保tftp服务没有被禁用。</span><br style="text-indent: 2em" /></p> <pre class="brush:bash;toolbar:false">[root@scholar ~]# vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no #确保此项为no per_source = 11 cps = 100 2 flags = IPv4 }</pre> <p style="text-indent: 2em"><span style="font-size: 14px">修改完配置文件,启动xinetd进程并设置tftp服务开机自启</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-94.jpg" title="1427890752107583.jpg" alt="4.1.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">tftp工作在udp的69端口,启动服务后,可查看69端口是否开启</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-26.jpg" title="1427890776111369.jpg" alt="4.2jpg.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">注意:请将防火请关闭或设置相关规则允许访问69端口,不然将无法访问tftp服务。</span></p> <p style="text-indent: 0em"><strong>提供引导内核等文件</strong></p> <p style="text-indent: 2em"><span style="font-size: 14px">从挂载的光盘中复制PXE所需文件到tftp工作目录下(默认为/var/lib/tftpboot)</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-57.jpg" title="1427890812112524.jpg" alt="5.jpg" /></p> <p style="text-indent: 0em"><strong>提供PXE工作环境</strong></p> <p style="text-indent: 2em"><span style="font-size: 14px">复制pxelinux.0文件(由syslinux包提供,需提前安装)到tftp工作目录</span><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-56.jpg" title="1427890834108644.jpg" alt="6.jpg" /></p> <p style="text-indent: 0em"><strong>提供安装源</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">可提供安装源的服务有很多,例如:http、ftp、nfs等,我们就基于http服务实现此操作。在http服务默认的工作目录里创建一个专为安装源所使用目录,并将之与已挂载的光盘目录绑定。</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-84.jpg" title="1427890864138823.jpg" alt="7.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">启动http服务并设置开机自启,http服务工作在tcp的80端口,启动服务后,可查看80端口是否开启</span>。</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-15.jpg" title="1427891130790777.jpg" alt="8.jpg" /></p> <p style="text-indent: 0em"><strong>提供kickstart文件</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">kickstart文件可以自己创建(需安装system-config-kickstart.noarch工具),也可以复制系统文件直接修改。这里我们就不演示创建过程了,直接复制文件修改(此文件为/root/anaconda-ks.cfg)</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-1.jpg" title="1427891152123169.jpg" alt="9.jpg" /></p> <pre class="brush:bash;toolbar:false">#修改或添加以下两项,目标指向安装源 url --url=http://172.16.10.10/RHEL6.6 repo --name="Redhat" --baseurl=http://172.16.10.10/RHEL6.6 --cost=100</pre> <p style="text-indent: 2em"><span style="font-size: 14px">为了启动时能够加载kickstart文件,还需要修改/var/lib/tftpboot/pxelinux.cfg/default文件,添加ks文件的位置。</span></p> <pre class="brush:bash;toolbar:false">[root@scholar ~]# vim /var/lib/tftpboot/pxelinux.cfg/default label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=http://172.16.10.10/ks.cfg #指向ks文件</pre> <p style="text-indent: 0em"><strong>启动测试</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">将待装系统的主机设置为网卡启动</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-40-1.jpg" title="1427891177111963.jpg" alt="10.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">开机开始引导</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-97.jpg" title="1427891212102088.jpg" alt="11.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">引导成功开始安装各种包</span></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-38.jpg" title="1427891231107201.jpg" alt="12.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">安装成功,查看IP地址</span><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703144948-69.jpg" title="1427891253762952.jpg" alt="13.jpg" /></p> <p style="text-indent: 2em"><strong>The end</strong></p> <p style="text-indent: 2em"><span style="font-size: 14px">好了,以上便是基于PXE实现系统全自动无人值守安装的整个过程,如果在引导时出现无法下载kickstart文件的情况,请检查网络内有无dhcp冲突,或selinux是否关闭。仅为个人学习整理,如有错漏,大神勿喷~~~</span></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信