基于网络的 Red Hat 无人值守安装.docx
《基于网络的 Red Hat 无人值守安装.docx》由会员分享,可在线阅读,更多相关《基于网络的 Red Hat 无人值守安装.docx(14页珍藏版)》请在冰豆网上搜索。
基于网络的RedHat无人值守安装
基于网络的RedHat无人值守安装
1.引言
从降低商业成本和提高安装系统效率的角度出发,本文向大家介绍一种方案--基于网络的RedHat无人值守安装。
该方案将很多安装准备工作在服务器上一次性完成,这样在客户机上安装时就不需要为每个客户机重复这些工作,节省了时间和成本,提高了效率。
在一次性的环境配置工作完毕后,该套方案能达到非常高的自动化程度:
用户只需要执行很少的手工步骤即可完成安装。
安装过程中的手工步骤和自动步骤如下:
1)手工步骤:
开机,选择从网络启动。
如果你的方案配置得比较负责复杂灵活,也许还需要你选择安装何种系统。
总之,手工步骤非常少。
2)自动化步骤:
剩余步骤,包括系统配置,硬盘分区,和程序包安装,将全部自动完成。
2.方案介绍
这种方案需要首先设置一个启动服务器和一个安装服务器(可以配置在同一台物理机上),然后通过网络启动存放在启动服务器上的安装程序。
安装程序会自动访问存放在安装服务器上的安装配置文件和安装介质来完成安装。
涉及到的技术
该方案主要应用了三种技术:
1)在PC上从网络启动RedHatLinux安装程序的PXE协议
2)RedHatLinux安装程序提供的网络安装功能(即指通过网络访问安装介质)
3)RedHatLinux安装程序提供的无人值守安装功能(RedHat称为kickstart)
技术1)和2)在参考资料1和2里已有部分介绍。
本文将重点描述参考资料中未涉及部分和无人值守安装功能。
软硬件需求
要按本文介绍的方法完成自动化安装,你需要如下软硬件资源:
∙一台PC机器作为启动和安装服务器(其它架构机器也可以)
∙一台待安装的PC机器,它的网卡必须带有PXE支持
∙一个建好的局域网,上述两台机器已经连接入同一子网
∙待安装的RedHatLinux安装介质
方案原理示意图
图1是网络安装环境的一个原理示意图。
整个安装环境由一个局域网,和连接到该局域网的三台机器组成:
启动服务器(BootServer),安装服务器(InstallationServer),和待安装机器(Client)。
其中启动服务器和安装服务器可以部署在同一台物理机上。
表1列出了对这些机器的软硬件要求,和其上负载的服务与数据。
图1网络安装原理示意图
表1网络安装环境里各机器上的软硬件配置
该方案的实现步骤
1)配置启动服务器
2)配置安装服务器
3)从网络启动机器以完成安装
步骤1)和2)只需做一次即可。
对每一台需安装RedHatLinux的机器,都需要在启动服务器和安装服务器中部署相应的数据,并执行一次步骤3)。
下面将带领您逐一执行这些步骤。
为了简单,我将用示例来说明如何在一台安装了RedHatEnterpriseLinuxAS3Update5的PC机上设置启动服务器和安装服务器,并在一台PC上安装RedHatEnterpriseLinuxAS4Update2。
3.步骤1:
配置启动服务器
启动服务器的目的是帮助在待安装机器上启动RedHatLinux安装程序。
启动服务器上需要搭建一个DHCP服务器和一个TFTP服务器。
前者是为了给待安装机器分配IP地址,后者则是提供了一个让待安装机器下载启动镜像的途径。
配置DHCP服务器
1)安装DHCP服务器包(RPM包名:
dhcpd)。
2)编辑DHCP服务器配置文件/etc/dhcp.conf;如果是rehl6,则配置文件在/etc/dhcp/dhcpd.conf,这里是一个示例:
optiondomain-name"mydomain";
ddns-update-stylenone;
max-lease-time7200;
server-name"bootserver";
default-lease-time600;
allowbooting;
allowbootp;
subnet192.168.138.0netmask255.255.255.0{
range192.168.138.1192.168.138.254;
denyunknown-clients;
}
grouppxe{
filename"pxelinux.0";
hosttestserver{hardwareethernet00:
0C:
29:
70:
24:
5B;fixed-address
192.168.138.30;}
}
在这个例子中,定义的子网是192.168.138.0/255.255.255.0。
主机定义项testserver指出IP地址192.168.138.30将分配给以太网卡00:
0C:
29:
70:
24:
5B(待安装机器),文件pxelinux.0(在TFTP服务器的根目录中)将作为启动映像被网卡ROM里的PXE客户端载入内存并运行。
每增加一台需安装的机器,我们需在dhcpd.conf中增加一条host条目。
3)给启动服务器配置一个IP,这个IP必须在DHCP服务器定义的子网内。
这里我们使用192.168.138.1。
关于如何为RedHatLinux系统配置IP地址,请查阅参考资料3。
4)启动DHCP服务。
[root@bsvr]#servicedhcpdrestart
配置TFTP服务器
1)安装TFTP服务器包(RPM包名:
tftpd),如果是rhel6,还需要安装xinetd包。
2)编辑TFTP服务器的配置文件/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
}
这里选定了/tftpboot为TFTP服务器的根目录位置。
3)将Linux安装程序的内核/根文件系统文件复制到TFTP服务器的根目录。
对于每一个要被安装的RedHatLinux版本,都需要执行一次该操作。
RedHatLinux第一张安装光盘/isolinux目录下会包含Linux安装程序的内核/根文件系统文件。
下面一段命令将这些文件复制到TFTP服务器的根目录下,并按照版本重新命名。
[root@bsvr]#mkdir/mnt/iso
[root@bsvr]#mount-oloop,roRHEL4-U2-i386-AS-disc1.iso/mnt/iso
[root@bsvr]#cp/mnt/iso/isolinux/initrd.img/tftpboot
[root@bsvr]#cp/mnt/iso/isolinux/vmlinuz/tftpboot
[root@bsvr]#mv/tftpboot/initrd.img/tftpboot/initrd-rhel4u2-i386.img
[root@bsvr]#mv/tftpboot/vmlinuz/tftpboot/vmlinuz-rhel4u2-i386
4)将启动镜像文件pxelinux.0复制到TFTP服务器根目录。
启动镜像pxelinux.0可以在syslinux安装包里获得。
安装好syslinux安装包后,将pxelinux.0复制到TFTP服务器根目录。
[root@bsvr]#cp/usr/lib/syslinux/pxelinux.0/tftpboot/
如果是rhel6,则使用[root@bsvr]#cp/usr/share/syslinux/pxelinux.0/tftpboot/
5)编辑pxelinux.0的配置文件,以使pxelinux可以正确载入RedHatLinux安装程序。
对于每一个要被安装的RedHatLinux版本,都需要执行一次该操作。
启动镜像pxelinux.0文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。
所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下。
pxelinux.0根据一定的规则来搜索合适的配置文件名。
举例来说,对于前面为待安装机器分配的IP地址192.168.138.30(十六进制表示为C0A88A1E),pxelinux.0会按如下次序搜索配置文件:
C0A88A1E>C0A88A1>…>C0>C>default
就是说,如果C0A88A1E文件存在,它就是pxelinux.0将载入的配置文件。
否则,继续往下找。
如果C0A88A1文件存在,它就是pxelinux.0将载入的配置文件。
如果前面的以C开头的文件都不存在,那么pxelinux.0将试图从文件default中读取配置。
对于一台需要支持很多安装机器的安装服务器来说,将配置写在与IP地址对应的文件里很不灵活。
把所有配置都集中在default文件中是个不错的主意,可以减轻配置文件维护负担。
可以将能想到的RedHatLinux版本的配置都写在default文件里,以便同时支持多种RedHatLinux版本,如下所示(对于具体某个RedHatLinux版本,对应的行该如何写,可以参考它安装盘里的配置文件/isolinux/isolinux.cfg):
DEFAULTrhel4u2-i386
DISPLAYpxelinux.cfg/list
PROMPT1
LABELrhel3u6-i386
KERNELvmlinuz-rhel3u6-i386
APPENDinitrd=initrd-rhel3u6-i386.img
LABELrhel3u6-x86_64
KERNELvmlinuz-rhel3u6-x86_64
APPENDinitrd=initrd-rhel3u6-x86_64.imgdevfs=nomountramdisk_size=9216
LABELrhel4u2-i386
KERNELvmlinuz-rhel4u2-i386
APPENDinitrd=initrd-rhel4u2-i386.imgramdisk_size=8192
这样用户可以通过输入某种版本的LABEL(例如,rhel4u2-i386)来选择具体的安装版本。
为了能在安装时知道有哪些备选,可以让pxelinux.0提示要户选择之前显示一个列表。
这通过在default里指定DISPLAY选项来实现。
在上面的样例中,我们将所有备选RedHatLinux版本列在文件pxelinux.cfg/list中,它的内容会被pxelinux.0显示出来。
在我们的例子中,/tftpboot/pxelinux.cfg/list文件内容如下:
ChooseoneofthefollowingLinuxdistributionsforyourinstallation:
NameDistributionArch.Installationmedia
-------------------------------------------------------------------------
rhel3u6-i386RHEL3ASU6i386192.168.138.1:
/instsvr/i386/rhel3u6
rhel3u6-x86_64RHEL3ASU6x86_64192.168.138.1:
/instsvr/x86_64/rhel3u6
rhel4u2-i386RHEL4ASU2i386192.168.138.1:
/instsvr/i386/rhel4u2
6)启动TFTP服务。
[root@bsvr]#servicexinetdrestart
4.步骤2:
配置安装服务器
安装服务器在安装期间提供对Linux安装介质和无人值守安装配置文件的访问。
安装介质存储在服务器上的一个目录中,可以使用各种网络协议访问它,比如HTTP,FTP,和NFS。
使用NFS协议,RedHatLinux安装程序可以支持多种安装介质目录结构,尤其是支持ISO光盘镜像文件。
这里我们选择使用NFS协议来访问安装介质。
配置NFS服务器
1)准备ISO安装介质。
将RedHatLinux安装介质的ISO文件都放置到/instsvr目录下。
注意不要改变文件名。
[root@bsvr]#mkdir/instsvr
[root@bsvr]#mvRHEL4-U2-i386-AS-disc1.iso/instsvr/i386/rhel4u2
[root@bsvr]#mvRHEL4-U2-i386-AS-disc2.iso/instsvr/i386/rhel4u2
[root@bsvr]#mvRHEL4-U2-i386-AS-disc3.iso/instsrv/i386/rhel4u2
[root@bsvr]#mvRHEL4-U2-i386-AS-disc4.iso/instsrv/i386/rhel4u2
2)编辑NFS服务器配置文件/etc/exports,以允许其它机器通过NFS访问目录/instsrv。
/etc/exports文件内容如下:
/instsvr*(ro,no_root_squash,sync)
其中:
∙*表示任何IP地址都可以访问该目录。
为了安全的考虑,也可以指定具体的IP地址。
∙ro表示远程机器对该目录只有读权限。
∙其它选项请参考NFS手册。
3)重新启动NFS服务以使新配置生效
[root@bsvr]#servicenfsrestart
4)检测目录/instsrv是否已被正确共享
[root@bsvr]#showmount-elocalhost
Exportlistforlocalhost:
/instsrv*
这样,我们就设置好了一个安装服务器。
很简单吧!
配置kickstart安装
自从5.2版开始,RedHatLinux开始支持一个称为kickstart的功能,其主要目的是为了减少安装过程中的人机交互,提高安装效率。
使用这种方法,只需事先定义好一个配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。
要使用kickstart,你必须:
1)创建kickstart配置文件。
2)部署kickstart配置文件,即将kickstart配置文件放置到安装服务器上,并在安装程序的kernel参数中指定kickstart配置文件的位置。
创建kickstart配置文件
kickstart配置文件是一个简单的文本文件,包含一个安装项目列表。
每个项目对应于一个安装选择,都用关键字标明。
有如下几种方法生成kickstart配置文件:
∙RedHat提供了一个样例文件。
在RedHatLinux文档光盘中RH-DOCS目录里的sample.ks文件。
你可以基于该样例来创建你自己的配置kickstart文件。
∙每当你安装好一台RedHatLinux机器,RedHatLinux安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。
如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。
∙RedHatLinux提供了一个图形化的kickstart配置工具。
在任何一个安装好的RedHatLinux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。
kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4)
∙阅读kickstart配置文件的手册。
用任何一个文本编辑器都可以创建你自己的kickstart配置文件。
这里有一个kickstart配置文件样例:
01#Kickstartfileautomaticallygeneratedbyanaconda.
02
03install
04nfs--server=192.168.138.1--dir=/instsvr/i386/rhel4u2
05langen_US.UTF-8
06langsupport--default=en_US.UTF-8en_US.UTF-8
07keyboardus
08xconfig--card"VMWare"--videoram16384--hsync31.5-37.9--vsync50-70
--resolution800x600--depth16
09network--deviceeth0--bootprotoDHCP
10rootpw-iscrypted
11firewall--disabled
12selinux--enforcing
13authconfig--enableshadow--enablemd5
14timezoneAsia/Shanghai
15bootloader--location=mbr
16#Thefollowingisthepartitioninformationyourequested
17#Notethatanypartitionsyoudeletedarenotexpressed
18#heresounlessyouclearallpartitionsfirst,thisis
19#notguaranteedtowork
20clearpart--all
21part/--fstypeext2--size=8000
22partswap--size=1000
23
24%packages
25@admin-tools
26@editors
27@emacs
28@text-internet
29@legacy-network-server
30@dialup
31@ftp-server
32@compat-arch-support
33@legacy-software-development
34@smb-server
35@base-x
36@kde-desktop
37@server-cfg
38@development-tools
39kernel-smp
40system-config-samba
41rsh-server
42grub
43kernel-devel
44kernel-smp-devel
45e2fsprogs
所有以"#"号开头的都是注释。
文件中的nfs--server=192.168.138.1--dir=/instsvr/i386/rhel4u2选项告诉安装程序:
到服务器192.168.138.1的NFS共享目录/instsvr/i386/rhel4u2下寻找安装介质。
RedHatLinux安装程序足够聪明,可以识别该目录下应该被读取的ISO光盘镜像文件名,所有这里你不需要指定ISO文件名。
关于kickstart配置文件支持的所有选项及其相信说明,请查阅参考资料3。
部署kickstart配置文件
首先我们需要把kickstart配置文件放在安装服务器上。
我们把它放到/instsvr/ks目录下。
即该文件的NFS访问路径为:
nfs:
192.168.138.1:
/instsvr/ks/ks.cfg
其次,我们需要让安装程序知道我们希望它用kickstart方式安装,并告知它可以从哪里获得kickstart配置文件。
这可以通过给内核添加一个参数"ks=kickstart配置文件路径"来实现。
我们只需对启动服务器上的default文件做一些小修改就可以做到这点:
LABELrhel4u2-i386
KERNELvmlinuz-rhel4u2-i386
APPENDks=nfs:
192.168.138.1:
/instsvr/ks/ks.cfginitrd=initrd-rhel4u2-i386.img
ramdisk_size=8192
这样在启动安装程序的时候,参数ks=nfs:
192.168.138.1:
/instsvr/ks/ks.cfg会被传递给它,告诉它使用这个文件作为kickstart配置文件来进行kickstart安装。
5.步骤3:
从网络启动机器以完成安装
前面的配置工作完成后,下面我们就在待安装机器上通过网络以无人值守的方式来安装RedHatEnterpriseLinuxAS4Update2。
1.启动待安装机器,选择从网卡启动。
具体方法因BIOS版本不同而异。
图2是从VMWare虚拟机上得到的选择网络启动的屏幕截图。
图2从BIOS选择网络启动
2.网卡中的PXE代码会联系DHCP服务器来获取IP地址以及启动镜像,然后启动镜像被载入并运行,你可以看到你自己定义的一个Linux列表如图3,选择你需要安装的系统版本。
图3网络启动后pxelinux.0的提示界面
3.安装程序内核被启动(图4)。
图4安装程序anaconda开始运行
4.安装程序会读取kickstart配置文件开始无人值守安装。
安装过程中它会根据kickstart配置文件中指定的安装介质地址,安装指定的软件包(图5)。
图5安装程序在安装软件包
5.直到安装结束(图6),你都不需要做任何工作。
图6安装成功完成
6.安装完成后,安装程序会提示你重新启动机器。
重新启动机器时切记要在BIOS里改成从硬盘启动。
如果仍然从光盘启动机器,又会重复前面的自动安装步骤。
6.总结
本文介绍了一种基于网络(网络启动+网络安装)的无人值守RedHatLinux安装方法。
在需要安装大量机器的情况下,以及在需要提供自助安装服务的情况下,该方法可以节约大量人力。
本文中的示例只涉及了PC平台上的一种RedHatLinux版本--RHELAS4。
事实上,本文中的方法可以非常容易地推广到其它RedHatLinux版本和其它硬件平台,如:
∙1.其它RedHatLinux版本
oRedHatEnterpriseLinux3,4的所有edition(AS,ES,WS,Desktop)
oRedHatLinux9
oFedoraCore5
∙2.其它硬件平台
o64位Intel架构及兼容架构服务器(使用AMD64和EMT64处理器)
对其它Linux厂家的产品,只要利用上它们的无人值守安装功能,也可以制造出类似的全