实验环境:RHEL5.8 32Bit
RHEL5.8系统安装及Kickstart详解
·anaconda
在系统的安装过程当中,有一个重要的程序给我们提供了系统安装过程的配置界面,这个程序叫做anaconda,anaconda主要分为两个配置阶段,第二个配置阶段的配置文件叫做stage2.img,这个文件是一个完整的文件系统,在这个文件系统当中主要配置了anaconda程序,和它所依赖的所有的运行环境和文件,该文件位于images目录当中,anaconda提供的配置界面也有两种方式:
1,纯文本界面
2,GUI界面
·Kickstart
anaconda需要我们去配置很多的信息,为了完成自动化安装操作系统,anaconda给我们提供了一个能够自动读取的配置文件叫做kickstart,kickstart当中保存了我们在使用anaconda配置过程当中所有可以实现的配置过程,因此anaconda在启动安装过程的时候,如果能够读取到kickstart文件,就能够实现完全的自动化安装我们的操作系统,事实上我们每一次安装完成一个操作系统的时候,在每一个系统的管理员用户的家目录下就会生成一个叫做anaconda-ks.cfg的文件:
该文件中保存了我们在安装系统的过程当中所选择的配置信息,该文件可以作为我们自定义kickstart文件的样板文件,kickstart文件主要分成了三个部分:
1,命令段(命令部分)
该段中所定义的内容就是我们所配置的选项,比如键盘类型、管理员密码等等,这些所有配置的内容都需要使用一个命令来指定,因此我们称这部分内容为命令段,比如:
->install命令
表示安装操作系统而不是升级操作系统
->cdrom命令
表示通过光盘安装操作系统,而不是硬盘
->key --skip命令
表示我们在安装操作系统的过程当中跳过输入序列号的步骤
->lang命令
表示我们选择的语言类型
->keyboard命令
表示我们选择的键盘类型
以上的这些内容我们统称为命令段的组成部分。
kickstart的文件中的命令段的命令有两种类型:
1,必备的命令
->keyboard指定键盘类型
keyboard us表示使用美式键盘
->lang指定语言
使用locale -a命令可以显示我们系统上所支持的所有的语言类型:
->timezone指定时区
用法:timezone [--utc(表示使用utc时间)] <时区>
使用timeconfig命令可以查看本机所支持的所有时区:
->rootpw指定管理员密码
用法:rootpw [--iscrypted(表示对密码进行加密)] <password>
->auth/authconfig指定认证方式
我们系统上默认的认证方式是通过/etc/passwd和/etc/shadow两个文件来认证的,这种方式的命令用法是:
auth --useshadow/--enableshadow
->bootloader表示装载引导加载器
指定bootloader如何进行安装,安装在哪块磁盘上,安装在什么位置当中,--location选项就是用来指定安装位置的,如果不指定--location选项,那么默认就是安装在MBR当中的,如果我们使用的bootloader是grub的时候,要加密码的话就得使用--password选项,bootloader命令通常不需要跟选项,要跟也是跟--location选项。
2,可选命令
->autopart表示自动分区
->ignoredisk --drives=...表示忽略掉某块磁盘
--only use选项表示白名单,表示仅去使用某块硬盘
->autostep表示对大多数选项都可以自动跳过,而选择一个默认的可选项
->clearpart用来指定分区的清除方式以及是否初始化标记
标记指的是分区表的类型
--all选项表示移除所有分区
--linux选项清除所有的linux分区,该选项是最保险的做法,如果我们的计算机上此前安装过linux系统,那么使用该选项就可以将此前linux所在的分区清除
--none选项表示不清除任何分区,即使用空闲空间来安装我们的linux系统
--initlabel
该选项表示如果我们的系统此前没有分区表,那么就使用该选项为我们的系统初始化一个分区表,对于一个完全全新的系统来讲,我们就应该使用该选项,该命令的默认选项是--none
->driverdisk该命令用于驱动磁盘
我们也可以在ks文件中指定驱动磁盘,如果想要在ks文件中指定驱动程序,那么得使用driverdisk --source=...命令,这样做有一个好处,那就是我们驱动磁盘的镜像文件可以直接放到网络上的服务器当中,如果磁盘文件是在硬盘的某个分区上,那么就直接指定硬盘的分区即可,用法:
driverdisk <partition> [--type=<fstype>]
->firewall表示是否启用防火墙
--enabled选项表示启用防火墙
--trust=--ssh...等等表示哪些服务可以通过防火墙
--disabled选项表示禁用防火墙
->firstboot表示我们安装系统时第一次启动的配置界面
--enabled选项表示启动该界面
--disabled选项表示禁用该界面
->halt表示系统安装完成之后关机
->graphical表示安装系统的界面是图形化的
->text表示安装系统的界面是文本形式的
如果不指定以上两个命令的话,默认是图形化安装的。
->install表示安装系统
install cdrom表示通过光盘安装系统
install harddrive表示通过硬盘安装系统,需要指定硬盘所在的分区,用法:
harddrive --partition=hdb2
install url --url=...表示通过网络安装,我们的安装文件在网络上的服务器当中
->interactive表示交互模式
->iscsi表示我们的安装内容需要配置在iscsi设备上面
->key表示系统的安装过程需要我们提供密钥
--skip选项表示无需提供密钥
->logvol(logical volume)表示指定逻辑卷
我们可以指定如何划分分区以及如何指定逻辑卷
用法:logvol 挂载点 --fstype ext3 -name(逻辑卷名)=... --vgname(卷组名)=... --size(逻辑卷的大小)=...
逻辑卷也得指定挂载点
->part/partition表示创建分区
用法:part 挂载点 --fstype ext3 --size=...
创建方法:指定分区、指定挂载点以及指定创建的设备
part pv.<id> --size=...表示创建物理卷
pv的id号可以自定义,只要两个pv的id号不同即可,pv的id只是为了让ks文件去区分不同的pv
part raid.<id>表示创建raid设备
--size选项表示指定大小
--grow选项表示自动扩展到所有可用空间
--maxsize选项表示最大空间是多少
--ondisk选项表示在哪个磁盘上创建
--fstype选项表示文件系统的类型
--start选项表示从哪个柱面开始创建分区
--end选项表示从哪个柱面结束
--label选项表示分区的卷标
->volgroup表示创建卷组
用法:volgroup 卷组名
--pesize选项表示PE的大小,卷组名后面再跟上将哪些物理卷创建为卷组的信息
命令格式:volgroup vol0 --pesize=... pv.100000
PE的单位是K而不是M。
->mediacheck
该命令用于检查光盘介质,光盘介质一般没有必要检查
->network表示配置网络属性
该命令也可以在系统安装界面的boot提示符下去配置
--bootproto=...选项用来确定我们的引导协议
--device表示地址配置到哪一块网卡上
->poweroff表示系统安装完成之后关机
->raid表示用来配置raid设备
->reboot表示系统安装完成之后重启计算机
->repo表示定义yum仓库
->selinux
--disabled选项表示直接禁用selinux,如果使用该选项,那么在我们想启用selinux的时候,就得重新启动操作系统
--permissive建议使用该选项来禁用selinux,因为使用该选项来禁用seliniux,如果我们将来将启用selinux的时候,可以很容易的启用起来
->skipx表示是否跳过图形界面配置
如果跳过就无法使用图形功能
->upgrate
安装system-config-kicckstart工具之后,我们就可以使用ksvalidator命令,该命令可以帮助我们来检查ks文件中是否有语法错误:
安装完成该工具之后我们还可以使用该工具来打开一个图形界面,来配置我们的kickstart文件,配置完成后一保存就是我们的kickstart文件:
2,软件包选择段
%packages使用该字符引导的信息我们就称它为软件包选择段,这一部分的信息中保存了,我们的系统在安装的过程当中所选择安装的每一个软件包的包组或软件包的名字。
3,脚本段
脚本段没有生成任何信息,一般来说就算我们定义了脚本段的内容,也不会显示出来,因为脚本段都是一些事关系统配置的信息,系统在安装完成之后还可以执行一些脚本,这些执行的脚本我们称之为脚本段,脚本段的内容是可选的,就算没有任何脚本信息也没有关系,如果有的话脚本段可以被分为两部分:
->预安装脚本段%pre
在系统安装之前就要执行的脚本
->后安装脚本段%post
系统安装完成之后所要执行的脚本,对我们而言最常用的是后安装脚本段,因为在系统真正被安装完成之前,很多命令都是不可用的,那个时候所使用的环境,就是stage2当中的文件系统,很多命令都不存在,所以这个时候在我们的系统当中可以正常执行的脚本,在系统安装之前未必可以执行,所以系统安装之前的脚本写起来是很困难的,是受限制的。
一旦我们将我们所应该使用的指令,要安装的额外的软件包,以及要执行的脚本写入了kickstart文件,那么我们在系统的安装过程启动界面当中,就可以让我们的系统去装载kickstart文件了,kickstart文件在我们安装系统的过程中放在哪个路径下,我们应该事先规划好,而后在安装系统的过程当中直接使用ks=...,来告诉我们的安装过程到什么地方去装载kickstart文件即可。
系统再启动安装的时候,我们可以在系统的安装启动界面下输入linux askmethod命令,这个命令可以使得系统向我们询问操作系统的安装方法,是通过本地光盘安装还是通过网络安装等等,在系统的安装界面的boot提示符下输入linux dd命令,就可以实现装载额外的驱动程序,输入之后系统会提示我们去装载对应设备上的驱动程序,以上的这些命令在我们的每一个安装提示符下都具备。
在系统的安装界面下,linux这个命令后面可以跟上许多的命令,这些命令都是anaconda可以接收的选项或者命令,也就意味着,我们可以将这些命令写入anaconda的配置文件当中,如果不想写入anaconda的配置文件中,也可以直接跟在linux命令后面,大多数都可以跟在linux命令的后面,askmethod是一个命令行的选项,askmethod一般而言是不会写入kickstart文件当中去的,因为它们两个并不完全等同,在kickstart文件当中它叫做kickstart命令,它们两个不过彼此之间有重叠的部分而已。
系统在安装的过程当中,安装界面的boot提示符可以使用的命令有:
1,askmethod
2,dd=...(设备)
表示用来加载额外的驱动盘
3,ip
该命令用来指定ip地址,如果想让系统自己获取动态ip地址的话,就是用ip=‘dhcp‘即可
4,netmask
该命令用来指定子网掩码
用法:netmask=...
5,gateway
该命令用来指定网关
用法:gateway=...
6,dns
该命令用于指定dns的服务器地址,可以指定多个地址,不同的地址使用逗号隔开
7,ks
该命令用来指定获取kickstart文件的位置
ks=http://<server>/<path>表示到web服务器上获取kickstart文件
ks=nfs:<server>:/<path>表示到nfs服务器上获取kickstart文件
ks=floppy:/<path>表示到软盘上获取kickstart文件
ks=hd:<device>:/<file>表示到硬盘上的某个分区上获取kickstart文件
例如ks=hd:sda3:/mydir/ks.cfg,后面的文件路径和我们的文件系统没有关系,因为此时我们的文件系统还没有被挂载,我们是直接访问硬盘上的目录,如果硬盘上没有该目录,那就表示该文件在我们的根分区下,相对于硬盘而言该目录就是根。
ks=file:/<file>表示到我们的initrd文件当中获取kickstart文件,我们可以将kickstart文件打包至我们的initrd文件当中
ks=cdrom:/<path>表示从光盘上获取我们的kickstart文件
ksdevice=<device>:
我们在获取kickstart文件的时候,有时候会通过网络获取,ksdevice表示我们是通过哪个网卡来获取设备来获取ks文件的,例如ksdevice=eth1表示我们是通过eth1这个网卡来获取ks文件的,如果我们的计算机上有多快网卡的话。
8,mediacheck
该命令表示进行光盘检查,这个过程我们可以跳过
mediacheck=no表示不做光盘检查
9,method
该命令表示安装系统的过程当中使用什么方式
10,nonet
该命令表示不启用网络功能
11,noprobe
该命令表示不探测硬件信息,不装载特殊的硬件设备,有时候我们在安装操作系统的时候,如果我们的计算机上有一些比较特殊的硬件存在,我们的系统可能会和这些特殊硬件不兼容,这样有可能会导致我们的安装过程崩溃,因此为了避免这种情况的出现,我们可以使用该命令,使得我们的系统不装载其他额外的特殊的硬件设备的驱动程序。
12,nousb
该命令不使用usb设备
13,rescue
该命令表示进入紧急救援模式
以上这些所有的命令都得跟在linux命令后面
我们可以在系统安装界面的boot提示符下配置ip地址,也可以在kickstart文件当中配置ip地址,事实上在装载ks文件之前,boot提示符下的命令都是生效的,一旦ks文件装载完成之后,ks文件中的配置就会生效,所以boot提示符后的命令和ks文件中的命令的生效阶段是不一样的。