在Linux中有多种的安装方式:HD、USB、CDROM、PXE及远程管理卡等。在我们的系统运维的生涯中,经常要安装操作系统,然而我们维护的机器不是一两台而已,一般的企业服务器数量都在几十、几百、几千、甚至上万台。这么多的机器,如果人工的一台一台去安装,那我们这些运维人员,可能要把大部分时间都花费在了安装系统上,所以,我们一般都会建立一个PXE服务器,通过网络来批量部署系统。
随着计算机产品的更新换代以及IT企业的发展,一个公司的计算机型号种类越来越多,硬盘也不一样,那么我们维护的手段也需要与时俱进。本文主要介绍硬件环境差异比较大的情况下,如何搭建一机多用的PXE服务器,下面以CentOS-6.4-x86_64版本为例,进行服务器的配置。
一、普通机器的PXE系统部署
实现自动获取IP网络安装linux是这样的:客启端PXE网卡启动–>通过Bootp协议广播dhcp请求–>DHCP服务器–>获取IP,TFTP服务器地址–>从TFTP上下载 pxelinux.0以及系统内核文件vmlinuz、initrd.img–>启动系统–>(到指定url去下载ks.cfg文件–>根据ks.cfg文件去NFS/HTTP/FTP服务器自动下载软件包)安装系统–>完成安装。
主要使用的使用到的服务,FTP server用来发布linux系统的安装树(也可以使用NFS、HTTP或HTTPS),DHCP server为客户端分配ip并提供TFTP服务器地址及PXE启动文件位置,TFTP server为客户端提供引导文件。三个服务可以安装在同一台服务器上,也可以安装在三台服务器上。
1、安装配置FTP server
[root@pxe~]#yuminstallvsftpd [root@pxe~]#chkconfigvsftpdon [root@pxe~]#servicevsftpdstart
vsftpd的默认配置文件在/etc/vsftpd/vsftpd.conf,共享目录在/var/ftp/pub/下,不用做什么修改就可以直接使用了。安装好后要把系统盘镜像的全部文件复制到这里,或挂载到这个目录下,我就是把光盘镜像挂载到了这里,因为还有个ks.cfg文件要发到这里,所以我在这里有建立了mirror目录,将系统镜像挂载到了/var/ftp/pub/mirror/下。
2、安装配置DHCP server
[root@pxe~]#yuminstalldhcp
编辑配置文件,这里是很重要的。
[root@pxe~]#vim/etc/dhcp/dhcpd.conf default-lease-time600; max-lease-time7200; ddns-update-stylenone; subnet10.12.190.0netmask255.255.255.0{ rangedynamic-bootp10.12.190.10010.12.190.120; optionrouters10.12.190.254; optionsubnet-mask255.255.255.0; filename"pxelinux.0";//如果不是在TFTP根目录下,要写上目录 next-server10.12.190.140;//tftp服务器地址 }
3、安装配置TFTP server
①安装TFTP,然后编辑配置文件,开启开启服务,默认的数据目录/var/lib/tftpboot
[root@pxe~]#yuminstalltftp-server [root@pxe~]#vim/etc/xinetd.d/tftp servicetftp { socket_type=dgram protocol=udp wait=yes user=root server=/usr/sbin/in.tftpd server_args=-s/tftpboot//这个可以自己修改 disable=no//将yes改成no是启用 per_source=11 cps=1002 flags=IPv4 } [root@pxe~]#servicexinetdrestart
②将pxelinux.0拷贝到tftpboot目录下
[root@pxe~]#cp/usr/share/syslinux/pxelinux.0/tftpboot//如果找不到这个文件,要安装syslinux软件包
③将启动文件从光盘中找到,并复制到该目录下:
[root@pxe~]#ll/tftpboot/
总用量 36084:
-rwxrw-rw-1rootroot324918563月22013initrd.img//这是一个初始化文件,一个最小的系统镜像 -rwxrw-rw-1rootroot2682812月922:57pxelinux.0//这文件是为legcay启动,它是legcay的启动镜像, drwxrwxrwx2rootroot40961月2812:14pxelinux.cfg//该文件夹下放的是启动菜单,手动创建 -rwxrw-rw-1rootroot1512303月52013splash.jpg//背景图片,可以不要 -rwxrw-rw-1rootroot1628603月52013vesamenu.c32//legacyBIOS引导菜单工具,可以从光盘或/usr/share/syslinux/中找到 -rwxrw-rw-1rootroot40438883月52013vmlinuz//内核文件
④在pxelinux.cfg目录下,建立默认文件,该文件可以使用光盘中的isolinux.cfg文件来当模板,这个启动菜单很重要
[root@pxe~]#vim/tftpboot/pxelinux.cfg/default defaultvesamenu.c32 timeout30 menubackgroundsplash.jpg menutitleWelcometoPXECentOS-6.4-x86_64! menucolorborder0#ffffffff#00000000 menucolorsel7#ffffffff#ff000000 menucolortitle0#ffffffff#00000000 menucolortabmsg0#ffffffff#00000000 menucolorunsel0#ffffffff#00000000 menucolorhotsel0#ff000000#ffffffff menucolorhotkey7#ffffffff#ff000000 menucolorscrollbar0#ffffffff#00000000 labellinux menulabel^InstallorupgradeCentOS-6.4-x86_64anexistingsystemfromtoNetwork kernelvmlinuz appendinitrdinitrd=initrd.imgksdevice=eth0repo=ftp://10.12.190.187/pub/mirrorip=dhcp labellinux menulabel^InstallCentOS-6.4-x86_64usekisckstartfile menudefault kernelvmlinuz appendinitrdinitrd=initrd.imgip=10.12.190.183netmask=255.255.255.0gateway=10.12.13.254dns=202.106.0.20ksdevice=eth0ks=ftp://10.12.190.187/pub/ks.cfg labelrescue menulabel^Rescueinstalledsystem kernelvmlinuz appendinitrdinitrd=initrd.imgrescueksdevice=eth0repo=ftp://10.12.190.187/pub/mirrorip=dhcp labellocal menulabelBootfrom^localdrive localboot0xffff
以上参数可以接在kernel后边,也可以接在initrd.img后边,都不影响。
ksdevice= 是为了指定使用哪块网卡,因为机器有多块网卡,无人值守会卡在这里。
repo= 是指定安装镜像的url,如果没有,就会提示要一下画面,那就需要手工处理了。
ip= 可以指定网卡自动获取ip,还是使用固定ip,如果使用固定ip,系统将把这个ip写入到配置文件中去。
ks= 是指定ks.cfg文件的url,ks.cfg是个应答文件,可以替我们处理所有安装时,所有需要手工设置的内容,该文件可以直接编辑系统中的/home/anaconda-ks.cfg文件,或者在图形化下使用system-config-kickstart包来编辑一个,非常好用。
有的时候,可能需要手工来处里某一台机器,还要跑到那台机器前吗?当然不需要,安装的时候也可以使用vnc来远程操作的。机器不一样,用途也不一样,有的时候不能完全自动,也需要我们手工做些改动。
⑤允许远程访问安装系统
在另一个系统上显示图形或字符安装界面,这时就可以使用vnc服务,这是操作系统本身就支持的功能,vnc选项启动VNC服务,vncpassword选项用来设置一个远程访问的密码,VNC密码必须至少6个字符,不设置密码去掉vncpassword选项也可以。使用方法很简单,可以写在PXE的引导菜单中,添加在kernel或initrd.img后边,或是在出现菜单画面时,按Tab键,编辑某一行,在最后边加入vnc vncpassword=123456字段,或是按Esa键,在命令行里直接输入linux vnc vncpassword=123456就可以了,U盘安装,光盘装都有效。
假设远程机器ip是10.12.190.181.,被安装机器的ip是10.12.190.101
(1)正向连接方式:
linuxvncip=10.12.190.101netmask=255.255.255.0gateway=10.12.190.254vncpassword=123456
指定被安装机器的ip是10.12.190.181 网关是10.12.190.254 掩码是24, vnc连接的密码是123456
由远程vnc客户端,连入被安装机器进行安装,之后的操作就和平时一样了。在安装系统上将显示如下信息:
vnc连接地址为10.12.190.101:1
(2)反向连接方式:
在远程启动vnc的被动连接:vncviewer.exe -listen,当客户端安装过程启动后,远程端的vnc会自动连接
linuxvncvncconnect=10.12.190.181vncpassword=123456
vnc会自动反向联接10.12.190.181,如果远程机器开启vnc监听,在10次超时15秒后,会变成主动方式连接,在安装系统上将显示如下信息:
以上2种方式,如果IP是DHCP自动获取的话,使用反向连接方式比较好,这样,无需知道安装系统的客户端获取的IP是多少,也可以建立连接。
⑥另一种安装菜单的写法:
labellinux menulabel^InstallorupgradeCentOS-6.4-x86_64anexistingsystemfromtoNetwork kernel/vmlinuzksdevice=eth0repo=ftp://10.12.190.187/pub/mirrorip=dhcp initrd/initrd.img labellinux menulabel^InstallCentOS-6.4-x86_64usekisckstartfile menudefault kernel/vmlinuzip=10.12.190.183netmask=255.255.255.0gateway=10.12.13.254dns=202.106.0.20ksdevice=eth0ks=ftp://10.12.190.187/pub/ks.cfg initrd/initrd.img