(Dhcp+nfs+tftp+ks )如何大规模的部署RedHat Linux操作系统,避免了手工安装的繁琐?在安装RedHat Linux企业版的过程中,我们都知道它允许通过NFS、HTTP或FTP协议来进行网络安装。
但是在一般情况下我们需要有一个安装引导介质(引导光盘、引导软盘、U盘等),有没有一种方法不通过引导光盘方式来安装呢,而直接通过网络来进行安装?答案是有,即通过PXE技术实现。
一、基本原理:PXE到底是什么东东?PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。
协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。
简单地说PXE网络安装,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。
1:客户端网卡在主机启动初始化时通过网卡内置的PXE芯片启动DHCP进程向server获取ip地址,网卡获取到ip地址后,server会提供给client一个下载bootloader的指令,就是dhcp 服务器中dhcpd.conf配置文件中filename这个选项。
2:网卡PXE芯片中已经包含了tftp client程序,获取到ip地址后,网卡会启动tftp服务去向tftp server请求传输这个bootloader文件PXElinux.0。
当Bootloader加载后我们可以看到主机屏幕上有信息显示,而这个画面就是我们在用光驱装linux的时候看到的第一个画面。
画面提示选择图形界面安装还是linux text字符界面安装等信息。
如果在server端的tftpboot目录下只有这个文件,那么客户机会一直停留在boot这个地方,因为没有default这个bootloader配置文件告诉机器下一步加载哪个系统内核,default配置文件的作用是告诉主机从哪里去加载操作系统内核,这个时候如果我们按照正常光碟装机时会看到提示:输入回车或者linux text等信息。
Bootloader会去调用default配置文件中的操作系统内核文件。
3:default 文件配置好之后,接着就是指定内核文件,这个在default文件最后。
就是vmlinuz,initrd.img *.msg 这几个文件。
4:到这一步加载成功后,系统就按照我们平常光碟装系统看到的过程一模一样了,选择语言,鼠标,键盘等,但因为有了KS这个自动安装脚步,这些都不要我们手工去指定,全部会自动完成。
5:到这里为止,也许有人会问,那我们从哪里去加载安装的镜像。
且慢,不是有个ks安装脚本吗,就是这个脚本里面我们可以指定安装镜像在哪里。
6:现在就考虑系统镜像的传输,这里我们选用linux特有的NFS网络文件系统进行镜像的传输。
二、配置安装可以分为如下步骤:1、配置服务器端的DHCP,用于给客户端提供IP地址及其它信息2、配置服务器端TFTP服务器,用于提供客户端PXE引导所必须的文件3、配置服务器端NFS服务器,用于存放安装树4、配置服务器端Kickstart,用于自动应答安装5、使用PXE功能引导客户机1、DHCP安装和配置1)DHCP的安装[root@oracle9i ~]# rpm -qa |grep dhcpdhcpv6_client-0.10-24_EL4dhcp-3.0.1-62.EL4我的机器已经安装,如果没有安装,找到Redhat的光盘镜像里面找到RPM包文件夹进行安装即可2)、配置DHCP(在第三张光盘ls | grep dhcp )[root@oracle9i ~]# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf为了满足我们的安装需求,假设PXE服务器、DHCP服务器、TFTP服务器全部安装在一台为192.168.203..217的计算机上。
我们需要进行如下操作:(1)修改/etc/dhcpd.conf 文件,指定IP 地址等信息。
(2)在'''/etc/dhcpd.conf''' 中增加tftp-server 需要推送给客户端的启动文件(bootstrap):filename "pxelinux.0";因为tftp 的默认目录是/tftpboot,所以文件的绝对路径就是:/tftpboot/pxelinux.0";当然也可以指定为其它的路径。
另外需要指定next-server 参数,告诉客户端在获取到pxelinux.0 文件之后去哪里获取其余的启动文件:next-server 192.168.203.217;最终的配置文件结果如下所示:[root@oracle9i ~]# vi /etc/dhcpd.confoption domain-name "";option domain-name-servers 202.96.209.133;option time-offset -18000;# Eastern Standard Time# option ntp-servers 192.168.1.1;# option netbios-name-servers 192.168.1.1;# --- Selects point-to-point node (default is hybrid). Don't change this unless# -- you understand Netbios very well# option netbios-node-type 2;range dynamic-bootp 192.168.203.128 192.168.203.254;default-lease-time 21600;max-lease-time 43200;next-server 192.168.203.227;# #TFTP Server的IP地址filename "/pxelinux.0";# we want the nameserver to appear at a fixed address# host ns {# next-server ;# hardware ethernet 12:34:56:78:AB:CD;# fixed-address 207.175.42.254;# }}配置完成后,重启DHCP服务,并将它设为开机自启动。
[root@oracle9i ~]# service dhcpd restartShutting down dhcpd: [FAILED]Starting dhcpd: [ OK ]2、安装配置TFTP服务器(在第二张(ls | grep xinetd )和第三张(ls | grep tftp).在PXE安装过程中,客户机在使用TFTP协议从TFTP服务器下载引导文件并执行。
我们主要通过配置TFTP服务器和PXE的引导配置完成这个过程。
1)安装配置TFTP服务器首先,安装TFTP服务器软件包,RedHat提供了如下两个软件包:tftp-server:服务端程序tftp :客户端程序[root@oracle9i ~]# rpm -qa | grep tftptftp-server-0.39-3.el42)配置tftp服务tftp 服务由xinetd服务管理。
编辑'''/etc/xinetd.d/tftp''' 文件,将'''disable = yes''' 改为:disable = no。
[root@oracle9i ~]# vi /etc/xinetd.d/tftpservice tftp{socket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /tftpbootdisable = noper_source = 11cps = 100 2flags = IPv4}从这里看出,默认选择/tftpboot为TFTP服务器的根目录位置,配置完成后重启xinetd服务,使TFTP服务器生效。
[root@oracle9i ~]# /etc/init.d/xinetd restartStopping xinetd: [ OK ]Starting xinetd: [ OK ][root@oracle9i ~]#3)客户端PXE引导配置。
syslinux在第一张光盘[root@oracle9i ~]# rpm -qa | grep syslinuxsyslinux-2.11-1[root@oracle9i ~]# rpm -ql syslinux | grep pxelinux.0/usr/lib/syslinux/pxelinux.0[root@oracle9i ~]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot将RedHat 安装光盘目录中的'''images/pxeboot/{vmlinuz,initrd.img}''' 启动文件复制/tftpboot/ ''':[root@oracle9i ~]# mount /dev/hdc /mnt/mount: block device /dev/cdrom is write-protected, mounting read-only[root@oracle9i ~]# cd /mnt/[root@oracle9i cdrom]# cd images/[root@oracle9i images]# lsboot.iso diskboot.img pxeboot README xen[root@oracle9i images]# cd pxeboot/[root@oracle9i pxeboot]# lsiniti586.img initrd.img README vmlinuz vmlzi586[root@oracle9i pxeboot]# cp vmlinuz /tftpboot/[root@oracle9i pxeboot]# cp initrd.img /tftpboot/由于多个客户端可以从一个PXE服务器引导,PXE引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件。