2. 具体实现方法:
一、 安装一台REDHAT AS 3.O SERVER , 彻底安装。(省得之后要用到一些东东再费时间安装,以地址 192.168.1.1 为例)。
二、 首先配制HTTP服务器(固然也能够是NFS、FTP)。配好后,在HTTP的DocumentRoot目录下(通常为/var/www/html)建一个rhel目录,用于放RedHat的安装文件。把RedHat第一张安装盘的RedHat目录及下面的内容所有考到这个目录下,把第2、第三张盘的RPMS目录下的rpm包考到rhel/RedHat/RPMS目录下,完成安装文件的考贝。用service httpd restart开启HTTP服务。用 lynx
http://192.168.1.1/rhel 查看配置是否正确。
三、 使用 kickstart ,系统管理员能够建立单个文件,该文件包括对典型 Red Hat Linux 安装中所询问的问题的回答。用redhat-config-kickstart命令作一个ks.cfg文件,注意在“安装方法”选项中 选HTTP,在“HTTP服务器:”中打入HTTP服务器的IP地址192.168.1.1 ,在“HTTP目录:”中打入rhel,其它的我就很少说了。作好后把这个ks.cfg文件考到HTTP服务器的DocumentRoot/目录下。
四、 在一台机器上作一下测试(注意:由于是自动安装,这台机器的上的数据可能所有被格式化)。用光盘启动机器,在boot:提示符下打入:linux ks=http://192.168.1.1/ks.cfg,看一下是否是能实现自动安装.若是能够继续如下步骤。
五、 配制DHCP、TFTP、和PXElinux。(固然这些服务能够和HTTP、NFS、FTP放在一台服器上)
1) 配置TFTP服务器,用chkconfig tftp on 打开xinetd代理的tftp服务。 用 service xinetd restart 重起服务。
2) 作一台DHCP服务器,这是关键。下面是个人dhcp.conf文件:
ddns-update-style interim ;
ignore client-updates ;
allow booting ;
allow bootp ;
subnet 192.168.1.0 netmask 255.255.255.0
{
default-lease-time 216000 ;
max-lease-time 432000 ;
option routers 192.168.1.1 ;
option domain-name "gdlc.org";
option subnet-mask 255.255.255.0 ;
option domain-name-servers 202.96.128.68 ;
range dynamic-bootp 192.168.1.100 192.168.1.200 ;
filename"/linux-install/pxelinux.0" ;
}
用service dhcpd restart 开启DHCP服务。
3) 配制PEXlinux。要远程启动机器,就必需要有PXElinux这个由syslinux、isolinux派生出来的,支持PXE的bootloader,它能够实现远程经过PEX启动一台机器。把/usr/lib/syslinux/pxelinux.0考到/tftpboot/linux-install目录下,(若是此目录下有此文件就没必要再考了)把RedHat第一张安装光盘上p_w_picpaths/pxeboot目录下的initr.img和vmlinux也考到/tftpboot/linux-install目录下。在/tftpboot/linux-install/pxelinux.cfg目录用于放syslinux的配制文件。Sysconfig的配制文件有现成的可用,在RedHat第一张安装光盘isolinux/下有一个isolinux.cfg文件,把它考成/tftpboot/ linux-install/pxelinux.cfg/default文件,把isolinux/*.msg考到/tftpboot/linux-install下.对default(也就是isolinux.cfg)做一下修改,下面是个人default文件:
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label linux
kernel vmlinuz
append initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label expert
kernel vmlinuz
append expert initrd=initrd.img
label ks
kernel vmlinuz
append ks initrd=initrd.img
label lowres
kernel vmlinuz
append initrd=initrd.img lowres
label autoinstall
kernel vmlinuz
append ks=http://192.168.1.1/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=16384 nofb
label redflag
kernel rfvmlinuz
append initrd=rfinitrd.img
相关说明:
这个Default 文件实际上就是ISOLINUX 的配置文件, 很容易看懂, 就是告诉启动后使用那个内核引导,须要添加什么参数,粗体部分是根据个人须要添加的。
当引导至BOOT: 时键入 autoinstall 内核引导时就会加载
http://192.168.1.1/ks.cfg这个安装配置文件, 而后根据这个配置文件指导LINUX接下来的安装。同时在ks.cfg这个配置文件里指定了安装介质的方式,能够是 HTTP、FTP、NFS 的一种。有关配置文件的片段以下:
#Use Ftp installation
#url --url
ftp://gdlc:123456@192.168.1.1/rhel
若是选择FTP 方式安装就须要再配置 VSFTPD服务.在配置KICKSTART时要指定FTP服务器的地址及其用户名和密码,且FTP目录路径要用绝对路径;
#Use Web installation
url --url
http://192.168.1.1/rhel
#Use Nfs installation
#nfs --server=192.168.1.1 --dir=/rhel
若是选择NFS方式安装须要配置NFS服务 .在这里就再也不哆嗦了。注意NFS目录路径也要用绝对路径;
在以上三中方式安装过程当中用户是感受不到差异的,安装速度均比用本地光驱安装快。当你键入autoinstall 后就能够去喝茶了,等你回来时你的系统已经所有装好。
当引导至BOOT: 时键入 redflag内核引导时就会加载rfvmlinuz和rfinitrd.img ,这两个文件是从RedFlag安装光盘里拷贝过来该名的,用它来引导RedFlag DeskToplinux安装界面, 其余安装过程和上面的都差很少,只是RedFlag 不支持KICKSTART ,且只有在NFS方式安装是能够进行图形化安装,其余方式安装过程都是文本的。因此中仍是交互安装过程。
其余版本的LINUX 若是是以RPM 安装包发行的估计均可以用一样的方法进行安装,因此有兴趣的话你们能够试试。
本文简要地介绍了使用 Red Hat LINUX 的 kickstart 及网络安装功能方便快捷地升级己有 LINUX 系统,文中的例子是从 Red Hat 7.2 远程升级到 Red Hat 9.0。 自从 5.2 版开始, Red Hat LINUX 便 增长了一个称为 kickstart 的功能,其主要是为了减小安装过程当中须要交互式 (interactive)的系统参数输入,提升安装效率。将其运用于自动安装 LINUX,特别是须要在短期迅速安装至成百台 LINUX 工做站这种特殊场合尤其适用,Stanford University 的 Menlo Park 已经有精彩的文章介绍,在此再也不累述[1]。 1.升级前系统检查 在开始升级系统以前,有一些容易忽视的问题容易中断 kickstart 过程,这些问题通常是系统配置达不到安装最低要求,因此最好能在自动升级以前有实验条件先进行充分的测试再实施。 Red Hat LINUX 系统发展至今,已经不是低得 386 均可以跑得很流畅的了(Red Hat 9 已经不能在 586 如下的机器上运行),因此在升级以前有必要对系统进行充分的检查,主要包括如下方面: 存储空间是否足够。Red Hat 9 最少须要 32M 的内存和 472M 的硬盘,内存通常是不会成问题的,可是我未能在一个 500M 硬盘上装好系统,固然如今你们的硬盘通常仍是比较大,均可以进行彻底安装了。LINUX 的系统文件主要集中于 /usr 下,/ 下面也有一部分,通常不安装 X 系统和大型软件的状况下,/usr 使用 1G 空间、/ 使用 500M 空间均可以工做得很好了。个人系统从 7.2 升级到 9.0 系统,/usr 和 / 的使用状况大约较升级前增长了 30% 的样子,因此若是你们的 /usr 和/使用率不是过高的话,磁盘空间 的限制通常是不会有什么问题的。 交换分区空间是否足够。Red Hat 9 与 7.2 的一个不易发现的区别便在此,7.2 系统是可使用少于两倍物理内存容量的交换分区,两倍或者多于两倍物理内存的交换分区只是建议大小;而 Red Hat 9 则必须使用两倍或者多于两倍物理内存大小的交换分区,因此若是你的LINUX系统只有少于两倍的交换分区,那就只有再划分一个交换分区或者增长一个交换文件,或者拨下你的内存让系统交换分区大于两倍物理内存,我建议使用加一个交换分区的办法,增长交换文件还没法在 kickstart 中实现,至于拨下内存,远程升级就根本没有办法拨下内存了。 其余杂项。系统在自动升级过程当中会检测一系列的硬件,若是选择图形界面安装,可是没有鼠标,系统则会提示使用文本方式安装;或者只有 32M 内存则系统也不能进行图形界面安装,这些均可以在自动安装配置文件里进行修改以免其发生,可是记下系统的全部硬件配置制成一个清单会对制做自动配置文件有较大的帮助。 2.如何启动安装程序 首先从 Red Hat LINUX 的启动安装程序开始。从 Red Hat LINUX 的官方安装装手册上咱们能够看到主要的几种启动方式:CDROM、软驱及从 dos 环境运行光碟上的 dosutilsautoboot.bat 文件三种方式,对于咱们来讲这仍是不够的,咱们的 LINUX 工做站是没有软驱和光驱的,固然更加不会有 dos。经过分析各发行版第一张光盘的 /p_w_picpaths目录下的 boot*.img 文件咱们发现,这些启动镜像文件其实只有两个主要的文件:vmlinuz 内核和 initrd.img,initrd.img是一个压缩的最小文件系统[2]。将这两个文件提取到己有的 LINUX 系统 /boot 目录下,在系统的 bootloader(通常是 LILO 或者 GRUB)配置文件中加入相应的配置行便可启动安装程序。以 Red Hat 7.2 和 GRUB 为例(使用 Red Hat 8.0 的网络启动镜像文件): [root@client mnt]# mount -o loop -o ro /mnt/nfs/psyche/cd1/p_w_picpaths/bootnet.img bootnet [root@client mnt]# cd bootnet/ [root@client bootnet]# ls boot.msg initrd.img options.msg rescue.msg splash.lss syslinux.png general.msg ldlinux.sys param.msg snake.msg syslinux.cfg vmlinuz [root@client bootnet]# cp vmlinuz /boot/vmlinuz8 [root@client bootnet]# cp initrd.img /boot/initrd8 [root@client bootnet]# vi /boot/grub/menu.lst 添加以下三行: title Upgrade to Psyche via NFS kernel /boot/vmlinuz8 ro initrd /boot/initrd8 注意:以上是没有 /boot 分区的配置,有 /boot 分区则不须要前面的 /boot,见 GRUB 配置文件中 NOTICE 部分。 从新启动后便可选择网络升级,和用 bootnet 软盘引导系统的效果是同样的。在这里咱们将使用 Red Hat 9 的另一个启动文件,这也是最近才在 Red Hat 发行版中出现的 boot.iso。将 Red Hat 9 发行版第一张光盘的 ISO 镜像文件装载后,咱们发现其下的 p_w_picpaths 目录中较 7 系列发行版多了一个 boot.iso 文件(8.0 第一张光碟根目录下也有相似目录),将其装载后发现其中包含一个比较大的内核和 initrd 文件,该initrd 包含了安装系统时常见硬件的驱动,我使用该文件启动时能自动识别出 PM133 主板的显卡及比较少见的adaptec ANA-6911TX 网卡(starfire.o),因此强烈推荐使用 boot.iso 自动升级,能够省却驱动的麻烦。值得一提的是 Red Hat 9 如今已经不在 boot.img 中自带网卡驱动了,而 Red Hat 8 在 bootnet.img 中带了一些常见网卡的驱动的(intel 55X系列、tulip、8139等),你们有兴趣能够参考[2]中提到的方法解压一下 bootnet.img 中的 initrd.img 文件就能够在lib目录中看到这些驱动模块文件了。 3.从哪里安装 升级系统固然须要新系统的发行版源文件,发行版形式能够多样化,便可以是光碟,也能够是光碟镜像文件(ISO格式),同时也能够是光碟文件的拷贝集。在 Red Hat 9 中,可供选择的安装模式有本地 CDROM、本地硬盘、NFS 镜像、FTP、HTTP。从光碟安装具备最好的兼容性和易操做性,适合我的安装,大批量和远程升级则不适用;本地硬盘是一种比较好的方式,速度快,并且也不须要频繁更换光碟,可是也不适合大批量安装,每台工做站均保存一份发行版镜像拷贝实在是很浪费存储空间,并且要命的是个人那台机器已经没有空间能够放下这么巨大的文件了;NFS 则是一种比较成熟的方式,经过 NFS 方式安装系统只须要将 ISO 格式的光碟镜像文件共享便可,不像 FTP 和 HTTP 方式须要考虑目录树结构[2],并且 NFS 方式能够选择图形界面安装(FTP 和 HTTP 方式仅能使用文本界面),速度相对 FTP 和 HTTP 方式更快,因此网络安装建议使用 NFS 方式。创建 NFS安装镜像服务器的办法很简单,仅需经过 NFS 将发行版光碟镜像文件共享便可。 [root@server root]$ cat /etc/exports /data/shrike 192.168.0.42/31(ro) [root@server shrike]# ls ks.cfg shrike-i386-disc1.iso shrike-i386-disc2.iso shrike-i386-disc3.iso 4.制做 kickstart 接下来天然就是制做 kickstart 文件了,kickstart 技术从最先推出至今已经更新了许屡次,配置的语法也是不尽相同,后来的版本也没有作到彻底兼容旧有版本语法,不能说这也是一个遗憾,在此我强烈建议使用 Red Hat 9 官方文档[3]来进行 kickstart 的配置,这样才能作到万无一失。配置文件主要内容以下: 1)ks.cfg 文件位置。很明显安装程序须要读取到 ks 配置文件才能进行自动安装,ks 配置文件能够有如下几种方式读入:启动软盘、启动光盘、硬盘、网络。 软盘读取 ks 配置文件相对较简单,将 ks.cfg 置于软盘根目录下便可,启动后输入 linux ks=floppy 便可开始 ks 安装; 光盘读取 ks 配置文件须要在制做启动光盘时加入 ks.cfg 配置文件至根目录下,启动后输入 linux ks=cdrom:/ks.cfg 便可开始 ks 安装 ; 硬盘读取 ks 配置文件通常是从光驱引导后,再读硬盘中的 ks 配置文件(此时可能没有软驱和网络支持),启动后输入 linux ks=hd:fd0:/ks.cfg,限制条件是该硬盘分区必须是 VFAT 或者 EXT2; 网络读取 ks 配置文件则用得很是多了,一般用到的是 NFS 方式和 HTTP 方式,格式分别是 ks=nfs:server:/path 和 ks=http://< server> /< path> 。须要注意的是网络方式读取 ks.cfg 文件时,局域网能自动分配 IP,由于在内核未取得 ks.cfg 配置文件以前,系统是不知道如何配置 IP 地址的,这时就要先经过 DHCP 得到一个 IP 地址,经过网络读取 ks.cfg 配置文件。在具有网络条件的环境下,我强烈推荐使用网络方式提供 ks.cfg 配置文件,使用 DHCP 配合 ks 的参数置空功能能够为大量的工做站配置不一样的 kickstart 配置文件[1][3],自动安装功能各异的系统。我是使用 NFS 方式读取 ks.cfg 文件。 [root@server shrike]# ls ks.cfg shrike-i386-disc1.iso shrike-i386-disc2.iso shrike-i386-disc3.iso 在待升级系统 GRUB 配置文件中加入 ks 配置语句: kernel /boot/vmlinuz9 ro ks=nfs:192.168.0.19:/data/shrike/ks.cfg 2)通过测试,升级系统所须要的 ks 配置参数相对较少,具体配置参数就再也不累述了, UNIX 的风格就是 KISS。以个人配置为例: reboot upgrade lang en_US keyboard us mouse none text skipx network --device=eth0 --bootproto=static --ip=192.168.0.42 --netmask=255.255.255.0 --gateway=192.168.0.253 --nameserver=192.168.0.4 --hostname=huter.xtu.edu.cn nfs --server=192.168.0.19 --dir=/data/shrike zerombr yes bootloader --location=mbr %post chkconfig --level 345 sshd on 3)检查一切配置无误就能够开始远程升级系统了!重启系统后,使用 ping 命令一直 ping 该升级系统的 IP,如无心外则大约半小时之后即可以看到该主机不可达,而后又恢复正常,使用 SSH 登录该主机,再作一些系统参数调整(特别是 APACHE 和 PHP 的调整),升级就大功告成了! 4)失败总结。事情总不是一路顺风的,出错在所不免,因此你们在实际操做以前仍是要多加测试,才可一举成功。常见的错误有: 系统内存、硬盘分区、交换机分区空间不够,致使升级没法完成,解决办法是在升级前要留有充分的空间,若是硬盘空间不够,则删除部分不用的软件包,在此我向你们推荐一个小脚本[4],是从水木清华 BBS 上得到,能解决 Red Hat Linux 删除 RPM 软件包时的依赖关系。 鼠标配置。鼠标配置语句通常能够写为 mouse none,也能够不接参数自动检测;另外若是没有鼠标是不能使用图形模式安装的,因此仍是使用 text 配置命令明确指定使用文本方式安装,反正安装过程咱们也不会看着显示器,是吧? 配置语法错误。kickstart 一直在不断发展,若是语法错则会没法完成安装,常见错误有 network 配置语法,之前的版本配置语法是 network --static --ip 198.168.254.253......而最新的 Red Hat 9 配置语法是 network --device=eth0 --bootproto=static --ip=192.168.0.42......,因此对 ks.cfg 配置文件的检查必定要细心。 ks.cfg 配置文件尽量写得精简,能够省却的就省掉,特别是升级时不会对 ks.cfg 中的软件包配置段进行处理,因此写了也无益,反倒有可能让安装程序读取到错误的配置行而中止自动安装。 5.总结 远程自动升级只是对 kickstart 应用的一个自我挑战,实际应用场合可能不会太多,可是在大规模网络安装中,要作到一打开工做站就能彻底自动安装,必定要将 DHCP 和 kickstart 密切结合才能达到事半功倍的效果,试想装两百台工做站的时候每一个 kickstart 文件出错三次,你就得在每台机器上操做三次,而一个完美的 kickstart 文件甚至可让您连显示器都不接就彻底安装好系统,这是一件多少愉快的事情!