当前位置: 首页 > 科技观察

LinuxPXE和UEFIPXE远程安装系统

时间:2023-03-14 19:34:15 科技观察

Linux的安装方式有很多种:硬盘、USB、光驱、PXE和远程管理卡等,在我们的系统运维生涯中,经常需要安装一个操作系统.但是,我们维护的不止一两台机器。一般企业服务器的数量是几十台、几百台、几千台,甚至几万台。这么多机器,如果我们手动一台一台安装,那么我们的运维人员可能大部分时间都花在安装系统上了。因此,我们一般会搭建一个PXE服务器来批量Deploy系统。随着电脑产品的更新换代和IT企业的发展,一个公司的电脑型号越来越多,硬盘也各不相同,所以我们的维护方式也需要与时俱进。本文主要介绍在硬件环境差异较大的情况下,如何搭建一个多用途的PXE服务器。下面以CentOS-6.4-x86_64版本为例进行服务器配置。1、普通机PXE系统部署实现linux自动获取IP网络安装如下:客户端PXE网卡启动-->通过Bootp协议广播dhcp请求-->DHCP服务器-->获取IP、TFTP服务器地址-->从TFTP下载pxelinux.0和系统内核文件vmlinuz、initrd.img-->启动系统-->(去指定的url下载ks.cfg文件-->去NFS/HTTP/FTP服务器根据ks.cfg文件自动下载软件包)安装系统-->完成安装。主要使用服务,FTP服务器用于发布linux系统的安装树(也可以使用NFS、HTTP或HTTPS),DHCP服务器为客户端分配IP并提供TFTP服务器的地址和位置PXE引导文件,TFTP服务器为客户端提供引导文件。这三个服务可以安装在同一台服务器上,也可以安装在三台服务器上。1、安装配置FTP服务器[root@pxe~]#yuminstallvsftpd[root@pxe~]#chkconfigvsftpdon[root@pxe~]#servicevsftpdstartvsftpd默认配置文件在/etc/vsftpd/vsftpd.conf,共享目录为在/var/下的ftp/pub/下,不做任何修改,直接使用即可。安装完成后,将系统盘镜像的所有文件复制到这里,或者挂载到该目录下。我这里只是挂载了光盘镜像,因为这里有一个ks.cfg文件要发送,所以我在这里建立了一个镜像目录,系统镜像挂载在/var/ftp/pub/mirror/下。2、安装配置DHCP服务器[root@pxe~]#yuminstalldhcp编辑配置文件,这里很重要。[root@pxe~]#vim/etc/dhcp/dhcpd.confdefault-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服务器①安装TFTP,然后编辑配置文件,启用服务,默认数据目录/var/lib/tftpboot[root@pxe~]#yuminstaltftp-server[root@pxe~]#vim/etc/xinetd.d/tftpservicetftp{socket_type=dgramprotocol=udpwait=yesuser=rootserver=/usr/sbin/in.tftpdserver_args=-s/tftpboot//这个可以自己修改disable=no//把yes改成notoenableper_source=11cps=1002flags=IPv4}[root@pxe~]#servicexinetdrestart②将pxelinux.0复制到tftpboot目录下[root@pxe~]#cp/usr/share/syslinux/pxelinux.0/tftpboot//如果可以找不到这个文件,要安装syslinux软件包age③从光盘中找到启动文件,复制到这个目录下:[root@pxe~]#ll/tftpboot/totalusage36084:-rwxrw-rw-1rootroot324918563月22013initrd。img//这是一个初始化文件,最小的系统镜像-rwxrw-rw-1rootroot26828December922:57pxelinux.0//这个文件是legcay启动的,是legcay的启动镜像,drwxrwxrwx2rootroot4096January2812:14pxelinux.cfg//这个文件夹是启动菜单,手动创建的-rwxrw-rw-1rootroot151230March52013splash.jpg//背景图,你可以不要-rwxrw-rw-1rootroot162860March52013vesamenu.c32/legacybootmenu/工具可以从光盘或/usr/share/syslinux/-rwxrw-rw-1rootroot40438883月52013vmlinuz//kernel文件中找到④在pxelinux.cfg目录下,创建一个默认文件,可以使用光盘中的isolinux.cfg文件来当模板,这个启动菜单很重要[root@pxe~]#vim/tftpboot/pxelinux.cfg/defaultdefaultvesamenu.c32timeout30menubackgroundsplash.jpgmenutitleWelcometoPXECentOS-6.4-x86_64!menucolorborder0#ffffffff#00000000menucolorsel7#ffffffff#ff000000menucolortitle0#ffffffff#00000000menucolortabmsg0#ffffffff#00000000menucolorunsel0#ffffffff#00000000menucolorhotsel0#ff000000#ffffffffmenucolorhotkey7#ffffffff#ff000000menucolorscrollbar0#ffffffff#00000000labellinuxmenulabel^InstallorupgradeCentOS-6.4-x86_64anexistingkerendinvinvlinvtoNetwork系统itrd.imgksdevice=eth0repo=ftp://10.12.190.187/pub/mirrorip=dhcplabellinuxmenulabel^InstallCentOS-6.4-x86_64usekisckstartfilemenudefaultkernelvmlinuzappendinitrdinitrd=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.cfglabelrescuemenulabel^Rescueinstalledsystemkernelvmlinuzappendinitrdinitrd=initrd.imgrescueksdevice=eth0repo=ftp://10.12.190.187/pub/mirrorip=dhcplabellocalmenulabelBootfrom^localdrivelocalboot0xffff以上参数可以在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键,编辑一行,在末尾加上vncvncpassword=123456字段,或者按Esa键直接在命令行输入linuxvncvncpassword=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本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=123456vnc会自动反向连接10.12.190.181。如果远程机器启动vnc监控,在超时10次,15秒后成为主动连接。在安装系统上会显示如下信息:以上两种方式,如果IP是通过DHCP自动获取的,最好使用反向连接的方式。这样就可以在不知道安装系统的客户端获取的IP的情况下建立连接。⑥另一种安装菜单的写法:labellinuxmenulabel^InstallorupgradeCentOS-6.4-x86_64anexistingsystemfromtoNetworkkernel/vmlinuzksdevice=eth0repo=ftp://10.12.190.187/pub/mirrorip=dhcpinitrd/initrd.imglabellinuxmenulabel^InstallCentOS-6.4-x86_64usekisckstartfilemenudefaultkernel/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.cfginitrd/initrd.img以上都是普通PXE安装系统的操作方法,现在你可以使用。2、UEFIPXE系统部署对于使用UEFI启动的机器,以上方法完全无效,根本无法顺利安装系统。要想顺利安装系统,首先要加载UEFI驱动。UEFIPXE与上述方法的区别在于TFTP服务器提供了系统启动所必需的文件,以及DHCP服务器的设置,这些服务仍然被使用。1、TFTP服务器的配置文件同上,只是需要替换目录下的文件。这次需要从系统盘中提取三个文件。将光盘中的efiboot.img挂载到系统:[root@pxe~]#mount-loopefiboot.img/mnt[root@pxe~]#ll/mnt/EFI/BOOT/total250-rwxr-xr-x1rootroot411Mar52013BOOTX64。conf//为grub配置文件,用于显示启动菜单-rwxr-xr-x1rootroot251274Mar52013BOOTX64.efi//UEFI启动镜像-rwxr-xr-x1rootroot1341Mar52013splash.xpm.gz//UEFI启动菜单工具[root@pxe~]#cp/mnt/EFI/BOOT/*/tftpboot/BOOTX64.efi就是我们需要启动的,这三个文件也可以直接使用光盘EFI目录下的文件。2、在DHCP服务器上配置DHCP的要点是修改/etc/dhcp/dhcpd.conf文件,将pre-boot引导改为BOOTX64.efi。我们之前指定了文件pxelinux.0。[root@pxe~]#vim/etc/dhcp/dhcpd.confdefault-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"BOOTX64.efi";next-server10.12.190.140;}3.创建启动菜单[root@pxe~]#vim/tftpboot/efdefaultdefault=0timeout=15splashimage=(nd)/splash.xpm.gztitleInstallCentOS-6.4-x86_64(UEFI)root(nd)kernel/vmlinuzmethod=ftp://10.12.190.187/pub/mirror/ip=10.12.16.100netmask=255.255....imgtitleRescueinstalledsystemroot(nd)kernel/vmlinuzrescuemethod=ftp://10.12.190.187/pub/mirrorinitrd/initrd.img注意这个菜单只能这样写,而且option参数一定要加在kernel这一行后面,否则不可能是加载。使用的参数和普通PXE一样,修改后即可使用。选择菜单后,等待很长时间。当你看到这是一只小企鹅时,说明UEFI驱动已经加载完毕,说明你的TFTP服务器和DHCP服务器设置都没有问题。如果你看到上面的错误信息,说明你的菜单有问题,需要在新的一行添加initrd/initrd.img,不能和内核走。安装UEFI系统时,也可以使用vnc远程安装,但是硬盘的分区表必须是GPT格式。如果您的硬盘不是这种格式,则需要多做一步。使用parted命令进行修改。可惜vnc没有提供Ctrl+Alt+F1~F6快捷键,让你切换到字符终端进行操作。不过也不是不可以,我们可以在rescue模式下连接vnc,这样输入命令就可以操作了。parted命令的使用请参考这篇文档。3、混合模式一般我们机房,两种服务都会有,也可能有安腾的机器,不会是同一个型号。这样的话,每次都要修改DHCP服务器服务,比较麻烦。将这些不同的机器划分到不同的vlan,然后在每个vlan中设置一个DHCP服务器,有点太浪费资源了。所以有必要使用更好的方法。一台服务器同时提供多个系统安装,需要安装系统的客户机从服务器上下载自己的引导文件。1、TFTP服务器配置在/tftpboot/目录下。不同平台需要的文件不同。可以直接全部放在TFTP的根目录下,但是这样管理不方便,所以我把普通的PXE引导文件放在/tftpboot/Legacy/下,UEFI引导文件放在/tftpboot/UEFI下,做其他平台也一样。2.DHCP服务器配置要实现混合模式,最重要的是DHCP配置文件[root@pxe~]#vim/etc/dhcp/dhcpd.confdefault-lease-time600;max-lease-time7200;ddns-update-stylenone;optionspacePXE;optionPXE.mtftp-ipcode1=ip-address;optionPXE.mtftp-cportcode2=unsignedinteger16;optionPXE.mtftp-sportcode3=unsignedinteger16;optionPXE.mtftp-tmoutcode4=unsignedinteger8;optionPXE.mtftp-delaycode5=unsigned16;optionPXE.mtftp-delaycode5=8unsigned1intesubnet10.12.190.0netmask255.255.255.0{optionrouters10.12.190.254;range10.12.190.1010.12.190.20;class"pxeclients"{matchifsubstring(optionvendor-class-identifier,0,9)="PXEClient";next-server10.12.190.181;ifoptionarch=00:02{文件名“ia64/elilo.efi”;}elseifoptionarch=00:06{文件名“X86PC/bootia32.efi”;}elseifoptionarch=00:07{文件名“UEFI/BOOTX64.efi”";}else{filename"Legacy/pxelinux.0";}}}各行含义这里不再详细解释,具体请参考相关资料。这里重点是根据客户端信息判断,指定服务器向客户端提供什么信息。引导文件的名称(如果客户端使用EFI,则引导名称为bootia32.efi和boottx64.efi,如果客户端使用LegacyBIOS引导,则名称为pxelinux.0),其他服务部分没有变化,并且FTP服务不需要改变。至此,我们就大功告成了,所有的准备工作都完成了,现在我们就可以使用这个多平台PXE进行批量部署了。