kickstart配置文件详解和system-config-kickstart

kickstart是什么
        许多系统管理员宁愿使用自动化的安装方法来安装红帽企业 Linux.为了满足这种需要,红帽创建了kickstart安装方法.使用kickstart,系统管理员可以创建一个文件,这个文件包含了在典型的安装过程中所遇 到的问题的答案.
        Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择.
        Kickstart给用户提供了一种自动化安装红帽企业Linux的方法.
如何执行kickstart安装
        kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过 NFS,FTP,HTTP 来执行.
        要使用 kickstart,必须:
                1.创建一个kickstart文件.
                2.创建有kickstart文件的引导介质或者使这个文件在网络上可用.
                3.筹备安装树.
                4.开始kickstart安装.
创建kickstart文件
        kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别.可以用「Kickstart 配置」应用程序创建它或是自己从头编写.红帽企业Linux安装程序也根据在安装过程中的选择创建一个简单的kickstart文件,这个文件被写入到/root/anaconda-ks.cfg.可以用任何能够把文件保存为ASCII文本的文本编辑器或字处理器来编辑它.
        首先,在创建kickstart文件时留意下列问题:
                1.每节必须按顺序指定.除非特别申明,每节内的项目则不必按序排列.小节的顺序为:
                        命令部分,这里应该包括必需的选项.
                        %packages部分,这部分选择需要安装的软件包.
                        %pre和%post部分,这两个部分可以按任何顺序排列而且不是必需的.
                2.不必需的项目可以被省略.
                3.如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样.一旦用户进行了选择,安装会以非交互的方式(unattended)继续(除非找到另外一个没有指定的项目).
                4.以井号("#")开头的行被当作注释行并被忽略.
        对于 kickstart 升级,下列项目是必需的:
                1.语言
                2.安装方法
                3.设备规格(如果这个设备是在安装过程中所需要的)
                4.键盘设置
                5.upgrade 关键字
                6.引导装载程序配置
                7.如果任何其他的项目被指定为upgrade,这些项目将被忽略(注意这包括了软件包选择).
kickstart命令选项
        下面的选项可以放入kickstart文件.如果喜欢使用图形化的界面来创建kickstart文件,可以使用"Kickstart 配置"应用程序.(注:如果某选项后面跟随了一个等号(=),它后面就必须指定一个值.在示例命令中,括号([])中的选项是命令的可选参数.)

        autopart(可选)
                自动创建分区,大于1GB的根分区(/),交换分区和适合于不同体系结构的引导分区.一个或多个缺省分区的大小可以用part指令重新定义.

        ignoredisk(可选)
                导致安装程序忽略指定的磁盘.如果使用自动分区并希望忽略某些磁盘的话,这就很有用.
                        例如,没有ignoredisk,如要试图在SAN-cluster系统里部署,kickstart就会失败,因为安装程序检测到SAN不返回分区表的被动路径(passive path).
                如果有磁盘的多个路径时,ignoredisk选项也有用处.
                语法是:
                        ignoredisk --drives=drive1,drive2,...
                        这里driveN是sda,sdb... hda等等中的一个.

        autostep(可选)
                和interactive相似,除了它进入下一屏幕,它通常用于调试.
                --autoscreenshot,安装过程中的每一步都截屏并在安装完成后把图片复制到/root/anaconda-screenshots.这对于制作文档很有用.

        auth或authconfig(必需)
                为系统设置验证选项.这和在安装后运行的authconfig命令相似.在缺省情况下,密码通常被加密但不使用影子文件(shadowed).
                --enablemd5,每个用户口令都使用md5加密.
                --enablenis,启用NIS支持.在缺省情况下,--enablenis使用在网络上找到的域.域应该总是用--nisdomain=选项手工设置.
                --nisdomain=,用在NIS服务的NIS域名.
                --nisserver=,用来提供NIS服务的服务器(默认通过广播).
                --useshadow或--enableshadow,使用屏蔽口令.
                --enableldap,在/etc/nsswitch.conf启用LDAP支持,允许系统从LDAP目录获取用户的信息(UIDs,主目录,shell 等等).要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN(distinguished name).
                --enableldapauth,把LDAP作为一个验证方法使用.这启用了用于验证和更改密码的使用LDAP目录的pam_ldap模块.要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN.
                --ldapserver=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定所使用的LDAP服务器的名字.这个选项在/etc/ldap.conf文件里设定.
                --ldapbasedn=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定用户信息存放的LDAP目录树里的DN.这个选项在/etc/ldap.conf文件里设置.
                --enableldaptls,使用TLS(传输层安全)查寻.该选项允许LDAP在验证前向LDAP服务器发送加密的用户名和口令.
                --enablekrb5,使用Kerberos 5验证用户.Kerberos自己不知道主目录,UID或shell.如果启用了Kerberos,必须启用LDAP,NIS,Hesiod或者使用/usr/sbin/useradd命令来使这个工作站获知用户的帐号.如果使用这个选项,必须安装pam_krb5软件包.
                --krb5realm=,工作站所属的Kerberos 5领域.
                --krb5kdc=,为领域请求提供服务的KDC.如果的领域内有多个KDC,使用逗号(,)来分隔它们.
                --krb5adminserver=,领域内还运行kadmind的KDC.该服务器处理改变口令以及其它管理请求.如果有不止一个KDC,该服务器必须是主KDC.
                --enablehesiod,启用Hesiod支持来查找用户主目录,UID 和 shell.在网络中设置和使用 Hesiod 的更多信息,可以在 glibc 软件包里包括的 /usr/share/doc/glibc-2.x.x/README.hesiod里找到.Hesiod是使用DNS记录来存储用户,组和其他信息的 DNS 的扩展.
                --hesiodlhs,Hesiod LHS("left-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对 base DN的使用.
                --hesiodrhs,Hesiod RHS("right-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对base DN的使用.
                --enablesmbauth,启用对SMB服务器(典型的是Samba或Windows服务器)的用户验证.SMB验证支持不知道主目录,UID 或 shell.如果启用SMB,必须通过启用LDAP,NIS,Hesiod或者用/usr/sbin/useradd命令来使用户帐号为工作站所知.要使用这个选项,必须安装pam_smb软件包.
                --smbservers=,用来做SMB验证的服务器名称.要指定不止一个服务器,用逗号(,)来分隔它们.
                --smbworkgroup=,SMB服务器的工作组名称.
                --enablecache,启用nscd服务.nscd服务缓存用户,组和其他类型的信息.如果选择在网络上用NIS,LDAP或hesiod分发用户和组的信息,缓存就尤其有用.

        bootloader(必需)
                指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的.
                --append=,指定内核参数.要指定多个参数,使用空格分隔它们.
                        例如:bootloader --location=mbr --append="hdd=ide-scsi ide=nodma"
                --driveorder,指定在BIOS引导顺序中居首的驱动器.
                        例如:bootloader --driveorder=sda,hda
                --location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序).
                --password=,如果使用GRUB,把GRUB引导装载程序的密码设置到这个选项指定的位置.这应该被用来限制对可以传入任意内核参数的GRUB shell的访问.
                --md5pass=,如果使用GRUB,这和--password=类似,只是密码已经被加密.
                --upgrade,升级现存的引导装载程序配置,保留其中原有的项目.该选项仅可用于升级.
        clearpart(可选)
                在创建新分区之前,从系统上删除分区.默认不会删除任何分区.
                注:如果使用了clearpart命令,--onpart命令就不能够用在逻辑分区上.
                --all,删除系统上所有分区.
                --drives=,指定从哪个驱动器上清除分区.
                        例如,下面的命令清除了主IDE控制器上的前两个驱动器上所有分区
                        clearpart --drives=hda,hdb --all
                --initlabel,根据不同体系结构把磁盘标签初始化为缺省设置(例如,msdos用于x86而gpt用于Itanium).当安装到一个崭新的硬盘时,这很有用,安装程序不会询问是否应该初始化磁盘标签.
                --linux,删除所有Linux分区.
                --none(缺省),不要删除任何分区.

        cmdline(可选)
                在完全的非交互式的命令行模式下进行安装.任何交互式的提示都会终止安装.这个模式对于有x3270控制台的IBM System z系统很有用.

        device(可选)
                在多数的PCI系统里,安装程序会正确地自动探测以太网卡和SCSI卡.然而,在老的系统和某些PCI系统里,kickstart需要提示来找到正确的设备.device命令用来告诉安装程序安装额外的模块,它有着这样的格式:
                device --opts=
                ,用scsi或eth代替
                ,使用应该被安装的内核模块的名称来替换.
                --opts=,传递给内核模块的选项.注意,如果把选项放在引号里,可以传递多个选项.
                        例如:--opts="aic152x=0x340 io=11"
                                                  
        driverdisk(可选)
                可以在kickstart安装过程中使用驱动软盘.必须把驱动软盘的内容复制到系统的硬盘分区的根目录下.然后必须使用driverdisk 命令来告诉安装程序到哪去寻找驱动磁盘.
                driverdisk [--type=]
                另外,也可以为驱动程序盘指定一个网络位置:
                driverdisk --source=ftp://path/to/dd.img
                driverdisk --source=http://path/to/dd.img
                driverdisk --source=nfs:host:/path/to/img
                        ,包含驱动程序盘的分区.
                        --type=,文件系统类型(如:vfat,ext2,ext3).

        firewall(可选)
                这个选项对应安装程序里的「防火墙配置」屏幕:
                firewall --enabled|--disabled [--trust=] [--port=]
                --enabled或者--enable,拒绝不是答复输出请求如DNS答复或DHCP请求的进入连接.如果需要使用在这个机器上运行的服务,可以选择允许指定的服务穿过防火墙.
                --disabled或--disable,不要配置任何iptables规则.
                --trust=,在此列出设备,如eth0,这允许所有经由这个设备的数据包通过防火墙.如果需要列出多个设备,使用--trust eth0 --trust eth1.不要使用以逗号分隔的格式,如--trust eth0, eth1.
                ,使用以下服务中的一个或多个来替换,从而允许指定的服务穿过防火墙.
                        --ssh
                        --telnet
                        --smtp
                        --http
                        --ftp
                --port=,可以用端口:协议(port:protocal)格式指定允许通过防火墙的端口.
                        例如,如果想允许IMAP通过的防火墙,可以指定imap:tcp.还可以具体指定端口号码,要允许UDP分组在端口1234通过防火墙,输入1234:udp.要指定多个端口,用逗号将它们隔开.

        firstboot(可选)
                决定是否在系统第一次引导时启动"设置代理".如果启用,firstboot软件包必须被安装.如果不指定,这个选项是缺省为禁用的.
                --enable或--enabled,系统第一次引导时,启动"设置代理".
                --disable或--disabled,系统第一次引导时,不启动"设置代理".
                --reconfig,在系统引导时在重配置(reconfiguration)模式下启用"设置代理".这个模式启用了语言,鼠标,键盘,根密码,安全级别,时区和缺省网络配置之外的选项.

        halt(可选)
                在成功地完成安装后关闭系统.这和手工安装相似,手工安装的anaconda会显示一条信息并等待用户按任意键来重启系统.在kickstart安装过程中,如果没有指定完成方法(completion method),将缺省使用reboot选项.
                halt选项基本和shutdown -h命令相同.
                关于其他的完成方法,请参考kickstart的poweroff,reboot和shutdown选项.

        graphical(可选)
                在图形模式下执行kickstart安装.kickstart安装默认在图形模式下安装.

        install(可选)
                告诉系统来安装全新的系统而不是在现有系统上升级.这是缺省的模式.必须指定安装的类型,如cdrom,harddrive,nfs或url(FTP 或HTTP安装).install命令和安装方法命令必须处于不同的行上.

        cdrom
                从系统上的第一个光盘驱动器中安装.

        harddrive
                从本地驱动器的vfat或ext2格式的红帽安装树来安装.
                --biospart=,从BIOS分区来安装(如82).
                --partition=,从分区安装(如sdb2).
                --dir=,包含安装树的variant目录的目录.
                        例如:harddrive --partition=hdb2 --dir=/tmp/install-tree

        nfs
                从指定的NFS服务器安装.
                        --server=,要从中安装的服务器(主机名或IP).
                        --dir=,包含安装树的variant目录的目录.
                        --opts=,用于挂载NFS输出的Mount选项(可选).
                                例如:nfs --server=nfsserver.example.com --dir=/tmp/install-tree

        url
                通过FTP或HTTP从远程服务器上的安装树中安装.
                        例如:url --url http:///


                        或:url --url ftp://:@/

        ignore disk(可选)
                用来指定在分区,格式化和清除时anaconda不应该访问的磁盘.这个命令有一个必需的参数,就是用逗号隔开的需要忽略的驱动器列表.
                例如:ignoredisk --drives=[disk1,disk2,...]

        interactive(可选)
                在安装过程中使用kickstart文件里提供的信息,但允许检查和修改给定的值.将遇到安装程序的每个屏幕以及kickstart文件里给出的值.通过点击"下一步"接受给定的值或是改变值后点击"下一步"继续.请参考autostep命令.

        iscsi(可选)
                issci --ipaddr= [options].
                --target
                --port=
                --user=
                --password=

        iscsiname(可选)

        key(可选)
                指定安装密钥,它在软件包选择和获取支持时设别系统的时候是必需的.这个命令是红帽企业Linux-specific,它对Fedora来说没有意义并且会被忽略.
                --skip,跳过输入密钥.通常,如果没有key命令,anaconda将暂停并提示输入密钥.如果没有密钥或不想提供它,这个选项允许继续自动化安装.

        keyboard(必需)
                设置系统键盘类型.这里是 i386,Itanium,和 Alpha 机器上可用键盘的列表:
                be-latin1, bg, br-abnt2, cf, cz-lat2, cz-us-qwertz, de, de-latin1,
                de-latin1-nodeadkeys, dk, dk-latin1, dvorak, es, et, fi, fi-latin1,
                fr, fr-latin0, fr-latin1, fr-pc, fr_CH, fr_CH-latin1, gr, hu, hu101,
                is-latin1, it, it-ibm, it2, jp106, la-latin1, mk-utf, no, no-latin1,
                pl, pt-latin1, ro_win, ru, ru-cp1251, ru-ms, ru1, ru2,  ru_win, 
                se-latin1, sg, sg-latin1, sk-qwerty, slovene, speakup,  speakup-lt,
                sv-latin1, sg, sg-latin1, sk-querty, slovene, trq, ua,  uk, us, us-acentos
                文件/usr/lib/python2.2/site-packages/rhpl/keyboard_models.py 也包含这个列表而且是 rhpl 软件包的一部分.

        lang(必需)
                设置在安装过程中使用的语言以及系统的缺省语言.例如,要把语言设置为英语,kickstart文件应该包含下面的一行:
                lang en_US
                文件/usr/share/system-config-language/locale-list里每一行的第一个字段提供了一个有效语言代码的列表,它是system-config-language软件包的一部分.
                文本模式的安装过程不支持某些语言(主要是中文,日语,韩文和印度的语言).如果用lang命令指定这些语言中的一种,安装过程仍然会使用英语,但是系统会缺省使用指定的语言.

        langsupport(不赞成)
                langsupport关键字已经被取消而且使用它将导致屏幕出现错误信息及终止安装.作为代替,应该在kickstart文件里的%packages 部分列出所支持的语言的支持软件包组.例如,要支持法语,应该把下面的语句加入到
                %packages:
                @french-support

        logvol(可选)
                使用以下语法来为逻辑卷管理(LVM)创建逻辑卷:
                logvol --vgname= --size= --name=
                这些选项如下所示:
                --noformat,使用一个现存的逻辑卷,不进行格式化.
                --useexisting,使用一个现存的逻辑卷,重新格式化它.
                --fstype=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
                --fsoptions=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
                --bytes-per-inode=,指定在逻辑卷上创建的文件系统的节点的大小.因为并不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.
                --grow=,告诉逻辑卷使用所有可用空间(若有),或使用设置的最大值.
                --maxsize=,当逻辑卷被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.
                --recommended=,自动决定逻辑卷的大小.
                --percent=,用卷组里可用空间的百分比来指定逻辑卷的大小.
                首先创建分区,然后创建逻辑卷组,再创建逻辑卷.
                        例如:
                        part pv.01 --size 3000 
                        volgroup myvg pv.01
                        logvol / --vgname=myvg --size=2000 --name=rootvol

        logging(可选)
                这个命令控制安装过程中anaconda的错误日志.它对安装好的系统没有影响.
                --host=,发送日志信息到给定的远程主机,这个主机必须运行配置为可接受远程日志的syslogd进程.
         --port=,如果远程的syslogd进程没有使用缺省端口,这个选项必须被指定.
                --level=,debug,info,warning,error或critical中的一个.
                指定tty3上显示的信息的最小级别.然而,无论这个级别怎么设置,所有的信息仍将发送到日志文件.

        mediacheck(可选)
                如果指定的话,anaconda将在安装介质上运行mediacheck.这个命令只适用于交互式的安装,所以缺省是禁用的.

        monitor(可选)
                如果monitor命令没有指定,anaconda将使用X来自动检测的显示器设置.请在手工配置显示器之前尝试这个命令.
                --hsync=,指定显示器的水平频率.
                --vsync=,指定显示器的垂直频率.
                --monitor=,使用指定的显示器;显示器的名字应该在hwdata软件包里的/usr/share/hwdata/MonitorsDB列表上.这个显示器的列表也可以在Kickstart Configurator的X配置屏幕上找到.如果提供了--hsync或--vsync,它将被忽略.如果没有提供显示器信息,安装程序将自动探测显示器.
                --noprobe=,不要试图探测显示器.

        mouse(已取消)
                mouse 关键字已经被取消,使用它将导致屏幕出现错误信息并终止安装.

        network(可选)
                为系统配置网络信息.如果 kickstart安装不要求联网(换句话说,不从NFS,HTTP或FTP安装),就不需要为系统配置网络.如果安装要求联网而kickstart文件里没有提供网络信息,安装程序会假定从eth0通过动态IP地址(BOOTP/DHCP)来安装,并配置安装完的系统动态决定IP地址.network选项为通过网络的kickstart安装以及所安装的系统配置联网信息.
                --bootproto=,dhcp,bootp或static中的一种,缺省值是dhcp.bootp和dhcp被认为是相同的.
                        static方法要求在kickstart文件里输入所有的网络信息.顾名思义,这些信息是静态的且在安装过程中和安装后所有.静态网络的设置行更为复杂,因为必须包括所有的网络配置信息.必须指定IP地址,网络,网关和命名服务器.
                        例如("\"表示连续的行):
                        network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 \
                        --gateway=10.0.2.254 --nameserver=10.0.2.1
                        如果使用静态方法,请注意以下两个限制:
                                所有静态联网配置信息都必须在一行上指定,不能使用反斜线来换行.
                                在这里只能够指定一个命名服务器.然而,如果需要的话,可以使用kickstart文件的%post段落来添加更多的命名服务器.
                --device=,用来选择用于安装的特定的以太设备.注意,除非kickstart文件是一个本地文件(如ks=floppy),否则--device=的使用是无效的.这是因为安装程序会配置网络来寻找kickstart文件.
                        例如: network --bootproto=dhcp --device=eth0
                --ip=,要安装的机器的IP地址.
                --gateway=,IP地址格式的默认网关.
                --nameserver=,主名称服务器,IP地址格式.
                --nodns,不要配置任何 DNS 服务器.
                --netmask=,安装的系统的子网掩码.
                --hostname=,安装的系统的主机名.
                --ethtool=,指定传给ethtool程序的网络设备的其他底层设置.
                --essid=,无线网络的网络ID.
                --wepkey=,无线网络的加密密钥.
                --onboot=,是否在引导时启用该设备.
                --class=,DHCP类型.
                --mtu=,该设备的MTU.
                --noipv4=,禁用此设备的IPv4.
                --noipv6=,禁用此设备的IPv6.

        multipath(可选)
                multipath --name= --device= --rule=

        part或partition(对于安装是必需的,升级可忽略).
                在系统上创建分区.
                如果不同分区里有多个红帽企业Linux系统,安装程序会提示用户升级哪个系统.
                警告:作为安装过程的一部分,所有被创建的分区都会被格式化,除非使用了--noformat和--onpart.
                ,是分区的挂载点,它必须是下列形式中的一种:
                        /,例如,/,/usr,/home
                        swap,该分区被用作交换空间,要自动决定交换分区的大小,使用--recommended选项.
                                swap --recommended
                                自动生成的交换分区的最小值大于系统内存的数量,但小于系统内存的两倍.
                        raid.,该分区用于 software RAID(参考 raid).
                        pv.,该分区用于 LVM(参考 logvol).
                --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB.
                --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值.
                --maxsize=,当分区被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.
                --noformat,用--onpart命令来告诉安装程序不要格式化分区.
                --onpart=或--usepart=,把分区放在已存在的设备上.
                        例如:partition /home --onpart=hda1,把/home置于必须已经存在的/dev/hda1上.
                --ondisk=或--ondrive=,强迫分区在指定磁盘上创建.
                        例如:--ondisk=sdb把分区置于系统的第二个SCSI磁盘上.
                --asprimary,强迫把分区分配为主分区,否则提示分区失败.
                --type=(用fstype代替),这个选项不再可用了.应该使用fstype.
                --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat.
                --start=,指定分区的起始柱面,它要求用--ondisk=或ondrive=指定驱动器.它也要求用--end=指定结束柱面或用--size=指定分区大小.
                --end=,指定分区的结束柱面.它要求用--start=指定起始柱面.
                --bytes-per-inode=,指定此分区上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.
                --recommended,自动决定分区的大小.
                --onbiosdisk,强迫在 BIOS 找到的特定磁盘上创建分区.
                注:如果因为某种原因分区失败了,虚拟终端3上会显示诊断信息.

        poweroff(可选)
                在安装成功后关闭系统并断电.通常,在手工安装过程中,anaconda会显示一条信息并等待用户按任意键来重新启动系统.在kickstart的安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.

        raid(可选)
                组成软件RAID设备.该命令的格式是:
                raid --level= --device=
                ,RAID文件系统被挂载的位置.如果是/,除非已经有引导分区存在(/boot),RAID级别必须是1.如果已经有引导分区,/boot分区必须是级别1且根分区(/)可以是任何可用的类型.(这表示可以有多个分区)列出了加入到RAID阵列的RAID标识符.
                --level=,要使用的RAID级别(0,1,或5).
                --device=,要使用的RAID设备的名称(如md0或md1).RAID设备的范围从md0直到md7,每个设备只能被使用一次.
                --bytes-per-inode=,指定RAID设备上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以对于那些文件系统它都会被忽略.
                --spares=,指定RAID阵列应该被指派N个备用驱动器.备用驱动器可以被用来在驱动器失败时重建阵列.
                --fstype=,为RAID阵列设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
                --fsoptions=,指定当挂载文件系统时使用的free form字符串.这个字符串将被复制到系统的/etc/fstab文件里且应该用引号括起来.
                --noformat,使用现存的RAID设备,不要格式化RAID阵列.
                --useexisting,使用现存的RAID设备,重新格式化它.

        reboot(可选)
                在成功完成安装(没有参数)后重新启动.通常,kickstart会显示信息并等待用户按任意键来重新启动系统.

        repo(可选)
                配置用于软件包安装来源的额外的yum库.可以指定多个repo行.
                repo --name= [--baseline=| --mirrorlist=]
                --name=,repo id.这个选项是必需的.
                --baseurl=,库的URL.这里不支持yum repo配置文件里使用的变量.可以使用它或者--mirrorlist,亦或两者都不使用.
                --mirrorlist=,指向库镜像的列表的URL.这里不支持yum repo配置文件里可能使用的变量.可以使用它或者--baseurl,亦或两者都不使用.

        rootpw(必需)
                把系统的根口令设置为参数.
                rootpw [--iscrypted]
                --iscrypted,如果该选项存在,口令就会假定已被加密.

        selinux(可选)
                在系统里设置SELinux状态.在anaconda里,SELinux缺省为enforcing.
                selinux [--disabled|--enforcing|--permissive]
                --enforcing,启用SELinux,实施缺省的targeted policy.
                        注:如果kickstart文件里没有selinux选项,SELinux将被启用并缺省设置为--enforcing.
                --permissive,输出基于SELinux策略的警告,但实际上不执行这个策略.
                --disabled,在系统里完全地禁用 SELinux.

        services(可选)
                修改运行在缺省运行级别下的缺省的服务集.在disabled列表里列出的服务将在enabled列表里的服务启用之前被禁用.
                --disabled,禁用用逗号隔开的列表里的服务.
                --enabled,启用用逗号隔开的列表里的服务.

        shutdown(可选)
                在成功完成安装后关闭系统.在kickstart安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.

        skipx(可选)
                如果存在,安装的系统上就不会配置X.

        text(可选)
                在文本模式下执行kickstart安装. kickstart安装默认在图形模式下安装.

        timezone(可选)
                把系统时区设置为,它可以是timeconfig列出的任何时区.
                timezone [--utc]
                --utc,如果存在,系统就会假定硬件时钟被设置为UTC(格林威治标准)时间.

        upgrade(可选)
                告诉系统升级现有的系统而不是安装一个全新的系统.必须指定 cdrom,harddrive,nfs或url(对于FTP和HTTP而言)中的一个作为安装树的位置.详情请参考 install.

        user(可选)
                在系统上创建新用户.
                user --name= [--groups=] [--homedir=] [--password=] [--iscrypted] [--shell=] [--uid=]
                --name=,提供用户的名字.这个选项是必需的.
                --groups=,除了缺省的组以外,用户应该属于的用逗号隔开的组的列表.
                --homedir=,用户的主目录.如果没有指定,缺省为/home/.
                --password=,新用户的密码.如果没有指定,这个帐号将缺省被锁住.
                --iscrypted=,所提供的密码是否已经加密?
                --shell=,用户的登录shell.如果不提供,缺省为系统的缺省设置.
                --uid=,用户的UID.如果未提供,缺省为下一个可用的非系统 UID.

        vnc(可选)
                允许通过VNC远程地查看图形化的安装.文本模式的安装通常更喜欢使用这个方法,因为在文本模式下有某些大小和语言的限制.如果为no,这个命令将启动不需要密码的VNC服务器并打印出需要用来连接远程机器的命令.
                vnc [--host=] [--port=] [--password=]
                --host=,不启动VNC服务器,而是连接至给定主机上的VNC viewer进程.
                --port=,提供远程VNC viewer进程侦听的端口.如果不提供,anaconda将使用VNC的缺省端口.
                --password=,设置连接VNC会话必需的密码.这是可选的,但却是我们所推荐的选项.

        volgroup(可选)
                用来创建逻辑卷管理(LVM)组,其语法格式为:
                volgroup
                这些选项如下所示:
                --noformat,使用一个现存的卷组,不要格式化它.
                --useexisting,使用一个现存的卷组,重新格式化它.
                --pesize=,设置物理分区(physical extent)的大小.
                首先创建分区,然后创建逻辑卷组,再创建逻辑卷.例如:

        xconfig(可选)
                配置X Window 系统.如果没有指定这个选项且安装了X,用户必须在安装过程中手工配置X;如果最终系统里没有安装X,这个选项不应该被使用.
                --driver,指定用于视频硬件的 X 驱动.
                --videoram=,指定显卡的显存数量.
                --defaultdesktop=,指定GNOME或KDE作为缺省的桌面(假设已经通过%packages安装了GNOME或KDE桌面环境).
                --startxonboot,在安装的系统上使用图形化登录.
                --resolution=,指定安装的系统上X窗口系统的默认分辨率.有效值有:640x480,800x600,1024x768,1152x864, 1280x1024,1400x1050,1600x1200.请确定指定与视频卡和显示器兼容的分辨率.
                --depth=,指定安装的系统上的 X 窗口系统的默认色彩深度.有效值有:8,16,24,和 32.请确定指定与视频卡和显示器兼容的色彩深度.

        zerombr(可选)
                如果指定了zerombr且yes是它的唯一参数,任何磁盘上的无效分区表都将被初始化.这会毁坏有无效分区表的磁盘上的所有内容.这个命令的格式应该如下:
                zerombr yes
                其它格式均无效.

        zfcp(可选)
                zfcp [--devnum=] [--fcplun=] [--scsiid=] [--scsilun=] [--wwpn=]

        %include
                使用 %include/path/to/file命令可以把其他文件的内容包含在kickstart文件里,就好像这些内容出现在kickstart文件的%include命令后一样.


kickstart的软件包选择
        在kickstart文件里使用%packages命令来列出想安装的软件包(仅用于全新安装,升级安装时不支持软件包指令).
        可以指定单独的软件包名或是组,以及使用星号通配符.安装程序可以定义包含相 关软件包的组.关于组的列表,请参考第一张红帽企业 Linux光盘里的 variant/repodata/comps-*.xml. 每个组都有一个编号,用户可见性的值,名字,描述和软件包列表.在软件包列表里,如果这个组被选择的话,组里的标记为"mandatory"的软件包就必须被安装;标记为"default"的软件包缺省被选择;而标记为"optional"的软件包必须被明确地选定才会被安装.
        多数情况下,只需要列出想安装的组而不是单个的软件包.注意Core和Base组总是缺省被选择,所以并不需要在%packages部分指定它们.
        这里是一个 %packages 选择的示例:
        %packages 
        @ X Window System 
        @ GNOME Desktop Environment 
        @ Graphical Internet 
        @ Sound and Video dhcp
        如所看到的,组被指定了,每个占用一行,用@符号开头,后面是comps.xml文件里给出的组全名.组也可以用组的id指定,如gnome-desktop.不需要额外字符就可以指定单独的软件包(上例里的dhcp行就是一个单独的软件包).
        %packages 指令也支持下面的选项:
                --nobase,不要安装@Base 组.如果想创建一个很小的系统,可以使用这个选项.
                --resolvedeps,选项已经被取消了.目前依赖关系可以自动地被解析.
                --ignoredeps,选项已经被取消了.目前依赖关系可以自动地被解析.
                --ignoremissing,忽略缺少的软件包或软件包组,而不是暂停安装来向用户询问是中止还是继续安装.
                        例如:%packages --ignoremissing

kickstart预安装脚本
        可以在 ks.cfg文件被解析后马上加入要运行的命令.这个部分必须处于kickstart文件的最后(在命令部分之后)而且必须用%pre命令开头.可以在%pre部分访问网络;然而,此时命名服务还未被配置,所以只能使用IP地址.
        注:预安装脚本不在改换了的根环境(chroot)中运行.
        --interpreter /usr/bin/python,允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言.


kickstart安装后脚本
        也可以加入在系统安装完毕后运行的命令.这部分内容必须在kickstart的最后而且用%post命令开头.它被用于实现某些功能,如安装其他的软件和配置其他的命名服务器.
        注:如果用静态IP信息和命名服务器配置网络,可以在%post部分访问和解析IP地址.如果使用DHCP配置网络,当安装程序执行到%post部分时,/etc/resolv.conf文件还没有准备好.此时,可以访问网络,但是不能解析IP地址.因此,如果使用DHCP,必须在%post部分指定IP地址.
        注:post-install 脚本是在 chroot 环境里运行的.因此,某些任务如从安装介质复制脚本或RPM将无法执行.
        --nochroot,允许指定想在chroot环境之外运行的命令.
                下例把/etc/resolv.conf文件复制到刚安装的文件系统里.
                %post --nochroot cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf
        --interpreter /usr/bin/python
                允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言.


开始kickstart安装
        要开始kickstart安装,必须从制作的引导介质或红帽企业Linux光盘引导系统,并输入在引导提示下输入特殊的引导命令.如果ks命令行参数被传递给内核,安装程序将寻找kickstart文件.
        第一张光盘和软盘
                如果ks.cfg文件位于软盘的vfat或ext2文件系统里,而且从红帽企业Linux光盘引导的话,也可以使用linux ks=floppy命令.
                另外一个引导方法是,从红帽企业Linux光盘引导并使用软盘上的vfat或ext2文件系统里的kickstart文件.要实现这样的方法,在boot:提示下输入下面的命令:linux ks=hd:fd0:/ks.cfg
        使用驱动程序盘
                如果要使用带有kickstart的驱动盘,需要指定dd选项.
                        例如,从软盘引导并使用驱动盘,可以在boot:提示下输入命令linux ks=floppy dd
        引导光盘
                如果kickstart文件位于引导光盘上,把光盘插入机器,引导系统并在boot:提示下输入命令linux ks=cdrom:/ks.cfg
        其它启动 kickstart 安装的方法如下列举:
                askmethod,如果我们没有在的光驱里检测到红帽企业Linux光盘的话,请不要自动地把光盘作为安装来源.
                autostep,使kickstart成为非交互式的.
                debug,马上启动pdb.
                dd,使用驱动盘.
                dhcpclass=,发送自定义的DHCP vendor class identifier.ISC的dhcpcd可以用"option vendor-class-identifier"来查看这个值.
                dns=,用逗号隔开的用于网络安装的命名服务器列表.
                driverdisk,和'dd'相同.
                expert,启用特殊的功能,允许对可移除介质(removable media)进行分区和提示驱动盘
                gateway=,用于网络安装的网关.
                graphical,强制图形化安装.ftp/http 安装模式时必须使用图形化界面.
                isa,提示用户输入ISA设备配置.
                ip=,用于网络安装的IP地址,对于DHCP使用'dhcp'.
                keymap=,使用的键盘格式.有效值是那些可以用于'keyboard' kickstart命令的值.
                ks=nfs::/,安装程序在NFS服务器上的                 ks=http:///,安装程序在HTTP服务器上的里寻找kickstart文件.安装程序使用DHCP来配置以太网卡.例如,如果的HTTP服务器是server.example.com且kickstart文件是HTTP目录的里/mydir/ks.cfg,正确的引导命令应该是ks=http://server.example.com/mydir/ks.cfg.
                ks=floppy,安装程序在/dev/fd0里的软盘上的vfat或ext2文件系统里寻找ks.cfg文件.
                ks=floppy:/,安装程序在/dev/fd0里的软盘上以寻找kickstart文件.
                ks=hd::/,安装程序把文件系统挂载在(必须是vfat或ext2),而且在该文件系统里以来寻找 kickstart 文件,如ks=hd:sda3:/mydir/ks.cfg.
                ks=file:/,安装程序试图从文件系统里读取;并没有挂载任何文件.如果kickstart文件已经在initrd映像里时我们通常使用这个方法.
                ks=cdrom:/,安装程序以在光盘上寻找kickstart文件.
                ks,如果单独使用ks,安装程序将配置以太网卡使用DHCP.kickstart文件从DHCP应答的"bootServer"里读取,就像是NFS服务器共享kickstart文件一样.在缺省情况下,bootServer与DHCP服务器是同一个.kickstart文件的名字是下列之一:
                        如果指定了DHCP且引导文件以/开头,DHCP提供的引导文件将在NFS服务器上寻找.
                        如果指定了DHCP且引导文件不以/开头,DHCP提供的引导文件将在NFS服务器的/kickstart目录里寻找.
                        如果DHCP没有指定引导文件,安装程序将试图读取/kickstart/1.2.3.4-kickstart,这里的1.2.3.4是被安装的机器的数字化IP地址.
                ksdevice=,安装程序使用这个网络设备来连接网络.如要使用通过eth1设备连接至系统的NFS服务器上的kickstart文件来启动kickstart安装,可以在boot:提示下使用ks=nfs::/                 kssendmac,把HTTP头加到对设置系统有帮助的ks=http://请求里.在CGI环境变量里包括所有网卡的MAC地址,如:"X-RHN-Provisioning-MAC-0: eth0 01:23:45:67:89:ab".
                lang=,安装时使用的语言.这应该是'lang' kickstart命令可以使用的有效语言之一.
                loglevel=,设置记录日志信息的最低级别.的值可以是debug,info,warning,error和critical.缺省值是info.
                lowres,强制图形用户界面安装程序运行在640x480分辨率下.
                mediacheck,激活加载者代码,可以允许用户选择测试安装介质(如果是基于ISO的方法)的完整性.
                method=cdrom,执行基于光盘的安装.
                method=ftp://,使用来进行FTP安装.
                method=hd:///,用上的进行基于硬盘驱动器的安装.
                method=http://,用来进行基于HTTP的安装.
                method=nfs:,用来进行NFS安装.
                netmask=,用于网络安装的掩码.
                nofallback,如果图形化用户界面退出时失败.
                nofb,不要载入某些语言进行文本安装时所需要的 VGA16 帧缓冲.
                nofirewire,不要装载对防火墙设备的支持.
                noipv6,在安装过程中禁用 IPv6 网络.
                nokill,当发生致命错误时,阻止anaconda终止所有运行程序的调试选项.
                nomount,不要在救援模式下自动挂载任何已安装的Linux分区.
                nonet,不要自动探测网络设备.
                noparport,不要试图装载对并行端口的支持.
                nopass,不要把键盘和鼠标信息传递给安装程序的第二阶段.当执行网络安装时,它可以用来在安装的第二阶段测试鼠标和键盘配置屏幕.
                nopcmcia,忽略系统上的任何PCMCIA控制器.
                noprobe,提示用户输入而不要试图检测硬件.
                noshell,安装过程中tty2上不要出现shell.
                nostorage,不要自动探测存储设备(SCSI,IDE,RAID).
                nousb,不要装载USB支持(如果安装过程在早些时候挂起,这会有帮助).
                nousbstorage,不要在安装程序的载入程序中禁止载入usbstorage模块.它对SCSI系统上的设备排序可能有帮助.
                rescue,运行救援环境.
                resolution=,在指定模式下运行安装程序,如'1024x768'模式.
                serial,启用串行控制台支持.
                skipddc,跳过对显示器的DDC探测,如果系统被挂起的这可能有帮助.
                syslog=[:],一旦安装过程被启动并运行,发送日志信息到的可选端口上的syslog进程.这要求远程syslog进程接受连接(-r 选项).
                text,强制文本模式的安装.
                updates,提示包含更新(bug修复)的软盘.
                updates=ftp://,基于FTP的包含更新的映像文件.
                updates=http://,基于HTTP的包含更新的映像文件.
                upgradeany,不需要符合升级所期望的语法的/etc/redhat-release.
                vnc,启用基于vnc的安装.将需要连接到使用vnc客户端程序的机器.
                vncconnect=[:],一旦安装过程开始启动并运行,连接到上的vnc客户端,也可以使用可选端口.也要求'vnc' 选项被指定.
                vncpassword=,启用vnc连接的密码.这将阻止其他人无意地连接到基于vnc的安装上.也要求'vnc'选项被指定.
一个简单完整的实例
        install
        cdrom
        key 2515dd4e215225dd
        lang en_US.UTF-8
        keyboard us
        xconfig --startxonboot
        network --device eth0 --bootproto static --ip 192.168.100.8 --netmask 255.255.255.0 --gateway 192.168.100.2 --nameserver 122.70.138.10 --hostname test.huabo.org
        rootpw --iscrypted $1$BPHqwNav$CjjfBezv5OuecU3rNkdDb/
        firewall --enabled --port=22:tcp
        authconfig --enableshadow --enablemd5
        selinux --enforcing
        timezone Asia/Chongqing
        bootloader --location=mbr --driveorder=sda --append="rhgb quiet"

        clearpart --drives=sda,sdb,sdc,sdd --initlabel
        part    /boot    --fstype ext3    --size=100    --ondrive=sda
        part    /        --fstype ext3    --size=4000   --ondrive=sda
        part    swap     --size=512       --ondrive=sda
        part    raid.11  --size=1  --grow  --asprimary  --ondrive=sdb
        part    raid.21  --size=1  --grow  --asprimary  --ondrive=sdc
        part    raid.31  --size=1  --grow  --asprimary  --ondrive=sdd
        raid    pv.01  --device=md0 --level=RAID5 raid.11 raid.21 raid.31
        volgroup  vgname  pv.01
        logvol  /home  --fstype=ext3 --vgname=vgname  --size=4000  --name=home
        %packages
        @gnome-desktop
        @core
        @base-x
        @chinese-support
        xorg-x11-utils

        xorg-x11-server-Xnest

其中:

可以修改系统光盘中的/isolinux/isolinux.cfg配置文件,实现光盘启动后自动安装。

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.1.8/ks.cfg //ks.cfg是kickstart安装配置文件,系统是按照ks.cfg来安装

若没有配置安装的软件包,则可以查找已经安装完成的系统中记录的安装信息,#cat /root/anaconda-ks.cfg
...前面省略
%packages
@office
@editors
@text-internet
@gnome-desktop
@dialup
...后面省略 //%pachages 后的部分记录系统安装时的软件包的安装情况,复制下来全部复制到ks.cfg文件后面。
# vim ks.cfg
...前面省略
# Partition clearing information
clearpart --none
key --skip //跳过输入序列号环节
... 中间省略

安装配置DHCP服务:
1、安装DHCP服务:
------------------------------------------------
[root@rhce ~]# yum list dhcp*
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Installed Packages
dhcpv6-client.i386 1.0.10-16.el5  installed
Available Packages
dhcp.i386 12:3.0.5-18.el5         cdrom
dhcp-devel.i386 12:3.0.5-18.el5   cdrom
dhcpv6.i386 1.0.10-16.el5         cdrom
[root@rhce ~]# yum install dhcp.i386 dhcp-devel.i386 -y
--------------------------------------------------
2、生成主配置文件dhcpd.conf:
--------------------------------------------------
[root@rhce ~]# rpm -ql dhcp | more
......前面省略
/usr/share/doc/dhcp-3.0.5/api+protocol
/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
......后面省略
[root@rhce ~]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
cp:是否覆盖“/etc/dhcpd.conf”? y
--------------------------------------------------
3、修改主配置文件dhcpd.conf
--------------------------------------------------
[root@rhce ~]# vim /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 { //所属网段及掩码。
# --- default gateway
option routers 192.168.1.8; //路由器IP,可以写网关IP
option subnet-mask 255.255.255.0;
filename "pxelinux.0"; //PXE得到IP以后的引导文件
next-server 192.168.1.8; //服务器IP地址。
# option nis-domain "domain.org";    //注销
# option domain-name "domain.org";   //注销
option domain-name-servers 192.168.1.8; //DNS服务器IP
option time-offset -18000; # Eastern Standard Time
# option netbios-node-type 2;
range dynamic-bootp 192.168.1.100 192.168.1.200; //IP地址池范围。
default-lease-time 21600;
......后面省略 //写配置文件的时候注意每句后面的分号(;)不要丢了。
---------------------------------------------------
4、启动DHCP服务:如果启动错误检查/var/log/message
---------------------------------------------------
[root@rhce ~]# service dhcpd restart
启动 dhcpd: [确定]
---------------------------------------------------

参考:

fedora的官方网站-Kickstart安装:https://fedoraproject.org/wiki/Anaconda/Kickstart/zh-cn

博客:http://bbs.51cto.com/thread-621450-1.html

 

内容概要: 

1.  系统安装基本流程图示
2.  Anaconda简介
3.  Kickstart简介
4.  引导并指定安装方式
5.  kickstart文件中的主要项目及参数介绍
6.  kickstart配置文件示例
7.  RedHat 安装光盘安装树介绍
8.  Anaconda/Kickstart系统安装过程简图
9.  安装树中boot.img及stage.img解构图析
10. 使用Kickstart进行安装的方式列举概述

   本文仍为课程学习的总结笔记,书写过程参看了大量官方文档及网络上相关资料,在此谢过各位无私奉献的Linuxer们,也贴上自己的笔记供大家参考,本文重点关注原理性层面的东西,对试验实际操作过程不过多赘述;

  水平有限,难免出现理解不透彻或是错误之处,望多指教;

  实验环境: RedHat5.5

一.  系统安装一般流程

  首先了解系统安装一般流程:

 

二.  Anaconda简介


简介:
     Anaconda是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序是把位于光盘或其他源上的数据包,根据设置安装到主机上的一个程序;为实现该定制安装,其提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息);

Anaconda支持的管理模式:
    Kickstart提供的自动化安装
    对一个RedHat实施upgrade
    Rescuse模式对不能启动的系统进行故障排除;
    
    要进入安装步骤,需要先有一个引导程序引导启动一个特殊的Linux安装环境系统;引导有多种方式:
    1.  基于网络方式的小型引导镜像,需要提供小型的引导镜像;
    2.  U盘引导,通过可引导存储介质中的小型引导镜像启动安装过程;
    3.  基于PXE的网络安装方式,要提供PXE的完整安装环境;
    4.  其他bootloder引导(如GRUB)

可用的安装方式:
    本地CDROM
    磁盘驱动器
    NFS映像
    FTP
    HTTP

    通过网络方式安装时:
    不论通过FTP、HTTP还是NFS方式共享安装,可以将安装光盘先拷贝到网络服务器上保存为iso镜像,然后loop挂载到共享目录或网页目录(当然,拷贝镜像中的所有文件到指定位置或直接挂载到共享目录也可),而通过NFS方式时,可以直接将光盘的iso文件放到共享目录即可,安装程序挂载共享目录后可以自动识别镜像;
   注:复制安装光盘,并保存为一个 iso 映像文件的方法:
   对于 DVD/CD:
   # dd if=/dev/cdrom  of=/location/of/disk/space/RHEL.iso  bs=32k
        注意拷贝时bs块大小设置为32k,我实验时设为1M,虽然减小了文件体积,但是安装读镜像时会报错。

 

三、 Kickstart简介:

简介
     kickstart是一个利用Anconda工具实现服务器自动化安装的方法;通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置;
ks.cfg是一个简单的文本文件,文件包含Anconda在安装系统及安装后配置服务时所需要获取的一些必要配置信息(如键盘设置,语言设置,分区设置等);Anconda直接从该文件中读取必要的配置,只要该文件信息配置正确无误且满足所有系统需求,就不再需要同用户进行交互获取信息,从而实现安装的自动化;但是配置中如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样。一旦用户进行了选择,安装会以非交互的方式(unattended)继续。

使用kickstart优势:
    1.  流线化自动化的安装;
    2.  快速大量的裸机部署;
    3.  强制建立的一致性(软件包,分区,配置,监控,安全性)
    4.  减少人为的部署失误

使用Kickstart方法安装的过程:
    1.  创建一个kickstart文件
    2.  创建有kickstart文件的引导介质或者使这个文件在网络上可用;
    3.  筹备一个安装树
    4.  开始ks安装:anconda自身启动 -->选取ks安装模式--> 从ks文件读取配置 --> 最后安装

创建kickstart配置文件的方式:
   1.  文本编辑器编辑生成:vim
   2. 用图形化界面配置:system-config-kickstat(需要安装system-config-kickstart.noarch包)
    
注:图形化界面配置时,磁盘选项无法创建配置LVM(逻辑卷);
      文件生成后,推荐使用ksvalidator命令检查配置文件语法及完整性错误;
       [root@bogon ~]# ksvalidator ks.cfg 
        not enough arguments for format string

system-config-kickstart 可以帮助我们创建ks脚本

首先需要配置yum源,将光盘挂到/mnt下,创建一个名为base 的yum仓库(这里必须是base,不然ks会禁用软件包选择,解决办法见结尾)

#vim /etc/yum.repo/base.repo

 

[base]

name = base

baseurl=file:///mnt

enabled=1

gpgcheck=0

 

图形化界面配置示例:

注意:选择Clear Master Boot Record和Remove all existing partitions才能实现全自动化安装,否则会弹出提示对话框。

四.  引导并指定安装方式:

  系统引导界面:

  系统引导后,会显示boot:命令提示符;如上,界面上会有各种模式操作提示;
  注:用户交互的文本安装方式中不能进行LVM的自定义配置,只能查看、接受默认设置;


  在boot:命令行里有用的几个项:
  lowres
    :强制GUI安装时分辨率调低为640*480
  noipv6
     :安装过程不支持ipv6网络
  noprobe
    :不去自动检测硬件,而是提示用户;
  dd=
    :通过网络加载设备驱动
  ks=
     :指定kickstart文件的放置位置;
另外还有ip、netmask、gateway、dns、vnc等选项;

   用ks选项被指定时kickstart文件位置时,Anaconda进入Kickstart安装模式;
安装时获取kickstart文件的方式:

(1) boot:linux ks

    ks命令单独使用时,系统会尝试通过dhcp服务器配置网卡,并且从DHCP会话中获取kickstart配置文件的位置;
    在dhcp服务器dhcp配置文件中有kickstart文件位置说明,next-server关键字指向共享文件的NFS主机,用filename关键字指向主机上的文件路径;如果没有filename关键字,则尝试在next-server关键字指向主机的/kickstart文件夹中找kickstart文件;
    下面是dhcp.conf文件中kickstart配置字段示例:

 
  1. # The following lines are examples of kickstart directives. 
  2.         filename "/data/ks/ks.cfg"; 
  3.         next-server 192.168.1.10; 
  4. # 注:上面部分需要写在subnet子段中;
  5.  

(2) boot:linux ks=url
     基于网络的文件服务器(网络服务器),获取配置文件,支持HTTP、FTP、NFS方式获取文件;例:
    ks=ftp://192.168.0.254/pub/kistart/ks.cfg
    ks=http:// 192.168.0.254/pub/kistart/ks.cfg
    ks=nfs:ip_addr:/path/to/ks.cfg

(3) boot:linux ks=hd:device/path/to/your/kickstart_file
     基于本地的安装方式,需要依次指定设备名,路径,文件名等;例如:    
   文件在光盘中:ks=cdrom:/ks.cfg
   文件在软盘中:    ks=floppy:/filedirectory/ks.cfg
   文件在硬盘中:ks=hd:/sdb1/myfile/ks.cfg
   文件也可被打包进initrd根文件系统中:ks=file:/ks.cfg

kickstart文件结构介绍:
  1.  命令部分:配置系统的属性及安装中的各种必要设置信息
  2.  %packages部分:设定需要安装的软件包及包组,Anaconda会自动解决依赖关系
  3.  脚本部分:用于定制系统,分为%pre部分在安装前运行,%post在安装后运行
    %pre 部分脚本作为一个bash shell脚本执行,在Kickstart文件解析后执行;
    %post 解析器默认为bash,可以自定义,缺省为chroot状态,也可指定非chroot状态;

五.  Kickstart文件中的主要项目及参数介绍:


    每个项目都由关键字来识别;关键字可跟一个或多个参数;如果某选项后面跟随了一个等号(=),它后面就必须指定一个值。

install   (可选)
    明确指定系统次次进行的是全新安装系统;是默认项;

cdrom  (可选)
    以本地CD-ROM为源安装系统;

harddrive  (可选)
    以硬盘分区中包含的镜像为源(安装树)安装新系统;当以该种方式安装系统时,即使指定clearpart --all项,源所在分区也不会被重新抹去;
    --partition=    指定分区
    --dir=        指定包含镜像的目录
    例:
    harddrive  --partition=/dev/sdb2  --dir=/data/iso

nfs   (可选)
    指定从NFS服务器上获取安装树;
    --server=    指定NFS服务器,主机名称或IP
    --dir=        包含安装树的目录
    --opts=        可以指定挂载NFS的目录时的挂载选项
    例:
    nfs  --server=192.168.1.254  --dir=/data/iso

url   (可选)
    指定通过FTP或HTTP从网络获取安装树;
    --url    指定资源位置
    例:
    url  --url  ftp://:@install.example.com/iso
    url  --url  http://install.example.com/iso

bootloader (必需)
    设定boot loader安装选项;
    --append=        可以指定内核参数
    --driveorder=    设定设备BIOS中的开机设备启动顺序
    --location=        设定引导记录的位置; mbr:默认值;partition:将boot loader安装于包含kernel的分区超级快中;none:不安装boot loder。
    示例:
    bootloader  --location=mbr  --append=“rhgb quiet” --driveorder=sda,sdb
    
clearpart (可选)
    在建立新分区前清空系统上原有的分区表,默认不删除分区;
    --all      擦除系统上原有所有分区;
    --drives    删除指定驱动器上的分区
    --initlabel    初始化磁盘卷标为系统架构的默认卷标
    --linux        擦除所有的linux分区
    --none(default)不移除任何分区
   例:
   clearpart  --drives=hda,hdb --all  --initlabel

zerombr  (可选)
    清除mbr信息,会同时清空系统用原有分区表

drivedisk (可选)
    如果使用特殊存储方式时,需要指定驱动程序盘位置以便加载存储驱动;
   1.  将驱动盘拷贝到本地硬盘某分区根目录:
     drivedisk [ --type= ]
   2.  也可以指定一个网络位置加载驱动程序盘
     drivedisk  --source=ftp://path/to/drive.img
     drivedisk  --source=http://path/to/drive.img
     drivedisk  --source=nfs:host://path/to/drive.img

firewall (可选)
    配置系统防火墙选项;
    firewall –enable|--disable  [ --trust ] [ --port= ]
    --enable        拒绝外部发起的任何主动连接;
    --disable        不配置任何iptables防御规则;
    --trust        指定完全信任网卡设备;
    --port        使用port:protocol格式指定可以通过防火墙的服务;
    示例:
    firewall --enable --trust eth0  --trust eth1  --port=80:tcp

selinux (可选)
    设置系统selinux状态;默认为启用并处于enforcing模式;
    selinux [ --disabled|–enforcing|--premissive ]

reboot (可选)
    在系统成功安装完成后默认自动重启系统(kickstart方法时);在收到你敢装系统完成后,会提示按任意键进行重启;
    在本文件中没有明确指明其他方法时就默认完成方式为reboot;
    使用 reboot 选项可能会导致安装的死循环,这依赖于安装介质和方法。需要特别注意;

halt  (可选)
    在系统成功安装完成后关机;默认为reboot;
    其他选项还有shutdown、poweroff,需要使用请自行参考官方文档。

graphical (可选)
    默认值,在图形模式下进行kickstart方式安装;

text (可选)
    以文本方式进行kickstart安装;默认为图形界面

key  (可选)
    设置一个安装码(installration number),用于获取redhat官方的支持服务;
    --skip    跳过key设置,不进行设置;如果不设置可能跳转到交互模式让用户选取动作;

keyboard (必需)
    设置键盘类型;一般设置为us;

lang (必需)
    设置安装过程使用的语言及系统的缺省语言;文本模式安装时可能不支持某些语言(中、韩...),所以可能仍以默认的英文方式安装;默认en_us,装中文时,需要后期%packages部分装上中文支持组件;
    例:
    lang en_US
 
timezone (可选)
    设置系统的时区;
    timezone  [ --utc ] 
    例:
    timezone  --utc  Asia/Shanghai

auth/authconfig  (必需)
    设置系统的认证方式;默认为加密但不隐藏(shadow);
    --enablemd5    使用MD5加密方式
    --useshadow或—enableshadow    使用隐藏密码;
    --enablenis=     使用NIS认证方式
    --nisdomain=    NIS域
    --nisserver=       NIS服务器
    还可以设置LDAP、SMB及Kerberos 5认证方式,详细请参考官方文档;
    例:
    authconfig  --useshadow  --enablemd5

rootpw (必需)
    设置系统root账号的密码;
    rootpw [ --iscrypted ] 
    --iscrypted    表示设置的密码为加密过的串;
    例:
    rootpw  pa4word
    rootpw --iscrypted  $1$RPYyxobb$/LtxMNLJC7euEARg2Vu2s1

network (可选)
    配置网络信息;在网络安装(NFS/HTTP/FTP)时必须指定;
    --bootproto=dhcp|bootp|static    指定ip获取方式,默认为dhcp/bootp;
    --device=    设置安装时激活来进行系统安装的网卡设备;该参数只在kickstart文件为本地文件时有效;若kickstart配置文件在网络上,安装程序会先初始化网卡然后去寻找kickstart文件;
    --ip=    ip设置
    --gateway=   网关
    --nameserver=  DNS设置
    --nodns         不设置DNS
    --netmask=   掩码
    --hostname= 设置安装后主机名称
    --onboot=    设置是否在系统启动时激活网卡
    --class=        设置DHCP的class值
    --noipv4        禁用该设备的ipv4功能
    --noipv6        禁用该设备的ipv6功能
    如将网络模式设置为静态模式,则必须在一行内写上ip,netmask、dns、gateway等信息;
    例:
    network –bootproto=static –ip=1.1.1.1 --metmask=255.0.0.0 --gateway=1.1.1.254 --nameserver=1.1.1.2
    netmask --bootproto=dhcp  --device=eth0

skipx (可选)
    如果该项存在,就不对系统的X进行设置;

xconfig (可选)
    配置X window ;如果不给出选项,在安装过程中需要手动调整设置;当然不安装X时不应该添加该项;
   --driver            为显卡设置X驱动
   --videoram=    设置显卡的RAM大小
   --defaultdesktop=    设置GNOME/KDE作为默认桌面;假定这两个桌面环境在%packages例已经安装
   --startxonboot   使用图形界面登录系统
   --resolution=     设置图形界面的分辨率;可用值有640*480、800*600、1024*768等;确保设置指适合于显示卡及显示器;
   --depth=           设置显示色深;可用值有8/16/24/32;确保设置值适合于显示设备;
    例:
    xconfig    --startxonboot  --resolution=800*600 --depth=16

services (可选)
    设置禁用或允许列出的服务;
    --disabled 设置服务为禁用
    --enabled  启动服务
    例:
    services --disabled autid,cups,smartd,nfslock  服务之间用逗号隔开,不能有空格
    
iscsi(可选)
    指定额外的ISCSI设备;
    issci --ipaddr= ipaddr  [options].
      --target 
      --port= 
      --user= 
      --password= 

part/partition  (install模式必须)
    建立新分区;
    part  |swap|pv.id|rdid.id  options
    mntpoint:挂载点,是在创建普通分区时指定新分区挂载位置的项;挂载点需要格式正确
    swap: 创建swap分区;
    raid.id:  表示创建的分区类型为raid型;必须用id号进行唯一区别;
    pv.id:  表示所创建的分区类型为LVM型;必须用唯一id号进行区别;
    --size=  设置分区的最小值,默认单位为M,但是不能写单位;
    --grow  让分区自动增长利用可用的磁盘空间,或是增长到设置的maxsize值;
    --maxsize 设置分区自动增长(grow)时的最大容量值,以M为单位,但不能写单位;
    --onpart=/--usepart=     设置使用原有的分区;
    --noformat    设置不格式化指定的分区,在跟—onpart一同使用时,可以避免删除原有分区上的数据,在新安装的系统中保留使用数据;
    --asprimary    强制制定该分区为主分区;若指定失败,分区会失败,导致安装停止;
    --fstype=    新增普通分区时指定分区的类型,可以为ext2、ext3、ext4、swap、vfat及hfs;
    --ondisk=/--ondrive=     设定该分区创建在一个具体的磁盘上;
    --start   指定分区以磁盘上那个磁道开始;需要跟--ondisk参数一块使用;
    --end    指定分区以磁盘上那个磁道结束;需要跟上述两个参数一起使用;
    --recommended:让系统自行决定分区的大小;在创建swap分区时,若RAM<2G,则分区大小为2*RAM;若RAM>=2G时,分区大小为RAM+2G;
    --bytes-pre-inode=    指定分区格式化时inode的大小;默认值为4096
    --fsoptions=    指定创建fstab文件时该分区挂载参数项;
    例:
    part  /boot  --fstype=“ext3” --size=100
    part  swap  --fstype=“swap” –size=512  
    part  /  --bytes-pre-inode=4096  --fstype=“ext4”--size=10000
    part  /data    --onpart=/dev/sdb1  --noformat
    part  raid.100  --size=2000
    part  pv.100     --size=1000

raid  (可选)
    设置RAID。
    raid 挂载点  --level=  --device= 
    挂载点:    选取根/时,注意尽量避免/boot在RAID内,除非为RAID1;
    --level=     设置RAID级别
    --device=  RAID设备名称,如md0,md1...
    --byte-pre-inode=    设置该RAID分区上inode大小;若分区文件系统类型不支持该参数,会静默忽略参数;
    --spares=  设置RAID的热备盘
    --fstype=  设置文件系统类型
    --fsoptions=  设置挂载该文件系统时自定义的一些参数,参数写入fstab文件;
    --useexisting  使用现有的RAID设备并且重新格式化原设备
    --noformat     在使用现有的RAID设备时不格式化原有RAID设备
    例:完整创建一个RAID1设备示例;
    part  raid.10  --size=1000  --ondisk=/dev/sdb
    part  raid.11  --size=1000  --ondisk=/dev/sdc
    raid  /data  --level=1  --device=md0  raid.10  raid.11 

volgroup  (可选)
    创建一个LVM卷组VG;
    volgroup  vg_name  partition  [options]
    --useexiting   使用现有的VG并且重新格式化
    --noformat    使用现有的VG时不做格式化
    --pesize          设置PE(physical extents)块大小
    例:
    part pv.11  --size=2000
    volgroup  myvg  pv.11

logvol  (可选)
    创建一个LVM逻辑卷LV;
    logvel  mnt_point  --vgname=vg_name  --size=lv_size  --name=lv_name  [options]
    --useexiting  使用现有的LV并且重新格式化
    --noformat   使用现有的LV时不做格式化
    --fstype=      指定RAID分区类型
    --fsoptions=  设置挂载该文件系统时自定义的一些参数,参数写入fstab文件;
    --byte-pre-inode=    设置该RAID分区上inode大小;
    --precent=    设定LV大小为VG可用空间的比例;
    例:
    part pv.20  --size=5000
    volgroup  mvvg  pv.20
    logvol    /data  --vgname=myvg  --size=3000  --name=mydata

六.  kickstart配置文件示例

 
  1. ########################################################################## 
  2. # kickstart install script  
  3. # RHEL version 5 
  4. # Platform=x86, AMD64, or Intel EM64T 
  5. ########################################################################## 
  6.  
  7. # Install OS instead of upgrade 
  8. install 
  9.  
  10. # Use text mode install 
  11. text 
  12. # Installation Number configuration 
  13. key --skip 
  14. # Local installation Use CDROM installation media  
  15. cdrom 
  16. # Network installation via FTP of HTTP 
  17. #url --url ftp://:@install.example.com/pub/RH 
  18. #url --url http://install.example.com/pub/RH 
  19. # Network installation via NFS 
  20. #nfs --server=nfsserver.example.com  --dir=/pub/install-tree 
  21. # Local installation Use HD source 
  22. #harddrive --partition /dev/sda2 --dir=/data/iso 
  23. # If you use harddrive, you must use ISO images, not a tree 
  24. # Note that even if though we clearpart --all, the install 
  25. # partition will remain, which can be quite useful. 
  26.  
  27.  
  28. # System authorization information 
  29. auth  --useshadow  --enablemd5 
  30. #Root password 
  31. rootpw --iscrypted $1$1P72E10M$b47abC13/yUSzV9uvCoML0 
  32. #rootpw  redhat 
  33.  
  34. # System bootloader configuration 
  35. bootloader --append="rhgb quiet" --location=mbr 
  36. # Clear the Master Boot Record 
  37. zerombr 
  38. # Partition clearing information 
  39. clearpart --all --initlabel 
  40.  
  41. # Run the Setup Agent on first boot 
  42. firstboot --disable 
  43. # System keyboard 
  44. keyboard us 
  45. # System language 
  46. lang en_US 
  47. # System timezone 
  48. timezone --isUtc Asia/Shanghai 
  49.  
  50. # Installation logging level 
  51. logging --level=info 
  52.  
  53. # Network information 
  54. network --bootproto=dhcp --device=eth0 --onboot=on 
  55.  
  56.  
  57. # Firewall configuration 
  58. firewall --enabled --ssh  --trust=eth0 
  59. # SELinux configuration 
  60. selinux --enforcing 
  61.  
  62. # X Window System configuration information 
  63. xconfig  --defaultdesktop=GNOME --depth=16 --resolution=800x600 --startxonboot 
  64. # Do not configure X 
  65. #skipx 
  66. # Reboot after installation 
  67. reboot 
  68.  
  69. # Disk partitioning information 
  70. part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100 
  71. part / --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=10240 
  72. part pv.100 --size=4096  --grow 
  73. volgroup myvg --pesize=32768 pv.100 
  74. logvol /data --fstype="ext3" --name=mydata --vgname=myvg --size=1024 --grow --maxsize=2048 
  75.  
  76. # This packages is for RedHat5.5 
  77. %packages 
  78. @base 
  79. @gnome-desktop 
  80. @development-libs 
  81. @admin-tools 
  82. @base-x 
  83. @development-tools 
  84. @sound-and-video 
  85. @chinese-support 
  86. @gnome-software-development 
  87. @x-software-development 
  88. @openfabrics-enterprise-distribution 
  89. @printing 
  90. @server-cfg 
  91. @legacy-software-support 
  92. @mail-server 
  93. @system-tools 
  94. @graphical-internet 
  95. @editors 
  96. @text-internet 
  97. @graphics 
  98. @dialup 
  99. @java 
  100. @office 
  101.  
  102. %post --interpreter=/bin/bash 
  103. # Let's log post-install 
  104. # Create two user 
  105. /usr/sbin/useradd florian 
  106. /usr/sbin/useradd douglas 
  107. /bin/echo "florian" | /usr/bin/passwd --stdin florian 
  108. /bin/echo "douglas" | /usr/bin/passwd --stdin douglas 
  109. # Print message onboot: We are the fighter... 
  110. /bin/echo "We are the fighter......Mr.Li" > /etc/issue 
  111.  
  112. ) 2>&1 >> /root/post-install.log 
  113.  

 

七.  RedHat 安装光盘安装树介绍:


    光盘中包含文件夹isolinux、images、Cluster、ClusterStorage、Server、VT六个文件夹;包含隐藏文件.discinfo及.treeinfo和一些普通文件如TRANS.TBL等;
   isolinux文件夹中有开机引导系统的安装内核(vmlinuz)及RAM 镜像(initrd.img),在引导力系统时会加载入内存,给系统的安装提供一个Linux安装引导平台;文件夹中还有在不同模式下显示信息的.msg文件;splash.lss是特殊格式的引导过程背景图片(640*320,16位色,ppm格式);
   images文件夹中包含有各种引导镜像;有用于制作微型启动光盘的boot.iso;有可放置于USB或其他大容量可引导介质的VFAT分区上,制作引导工具的镜像diskboot.img;
也有用于制作PXE安装方式引导介质的pxeboot文件夹;及XEN所需的xen文件夹;
    Server、VT、Cluster、ClusterStorage四个文件夹包含安装所需的所有RPM包;Server文件夹中包含基础软件包,VT包含xen相关的软件包;Cluster、ClusterStorage是集群及集群存储相关的软件包;根据这四个包可以配置本地的yum源;
    TRANS.TBL文件记录当前目录的列表,用mkisofs的-T参数重新生成,主要是为了长文件名称
    .discinfo 是安装介质的识别信息;
    .treeinfo 文件记录不同安装方式安装程序所在的目录结构,如:PXE方式时,内核kernel=images/pxeboot/vmlinuz;根文件系统initrd=images/pxeboot/initrd.img
   stage2.img、minstg2.img是引导后第二阶段安装需要用到的镜像文件(这两个镜像文件功能及结构在后面描述),若定制LiveCD,则需要修改;
    repodata 是精确描述一个RPM包的详细信息,如依赖关系,包含文件,校验码信息等;
   comps.xml是一个xml格式的数据文件,将各个RPM包按照一定的原则组织成若干组,安装时可以按照信息直接安装一组软件包;
    (stage2.img映像文件中的主要部分是安装程序anaconda,它的主执行体是/usr/bin下的anaconda,由其调用的大量例程分布在/usr/lib/anaconda下,而安装过程中要用到的资源文件分布在/usr/share/anaconda下。
    当boot.img所代表的启动介质被系统引导之后,在内存中就建立了一个完整的Linux系统(包括Linux内核和一个内存虚拟文件系统),之后便执行文件系统中存在的loader命令,从适当的介质中执行安装程序(例:安装介质是CD-ROM,就解析CD-ROM上的stage2.img,并从中执行安装程序),即执行anaconda,完成Linux系统的安装任务
    详细可参看:(Linux发行版制作指南)http://leozhao.livejournal.com/3128.html

八.  Anaconda/Kickstart系统安装过程图示:

 

九.  boot.img、stage2.img结构示意:

 注:现在新版本的两个镜像略有出入,依实际为准(图后附查看img方法);

loop方式挂载特殊格式的img镜像方法:

 
  1. [root@bogon images]# ls 
  2. boot.iso  diskboot.img  minstg2.img  pxeboot  README  stage2.img  TRANS.TBL  xen 
  3. [root@bogon images]# file stage2.img  
  4. stage2.img: Squashfs filesystem, little endian, version 3.0, 0 bytes, 8969 inodes, blocksize: 65536 bytes, created: Mon Mar 22 19:56:50 2010 
  5. #从上面看出img文件格式为squashfs,所以在下面挂载时明确指定该格式,否则会报错;
  6. [root@bogon images]# mkdir ../img 
  7. [root@bogon images]# mount -o loop -t squashfs stage2.img ../img/ 
  8. [root@bogon images]# ls ../img 
  9. etc  lib  modules  proc  usr  var 
  10. [root@bogon images]# 
  11.  

十.  使用Kickstart进行安装的多种方式列举

(过程不再赘述,对于一些重要的实验在后期会附上HOW-TO):

  1.   kickstart放置于镜像中,重新制作ISO并刻盘,从光盘实现引导,自动配置并提供安装树安装;
  2.   kickstart可放置于网络上,用FTP/HTTP/NFS提供出来;用光盘引导及提供安装树;
  3.   用FTP/HTTP/NFS提供kickstart及安装树,用光盘或其他可引导的大象存储设备引导;
  4.   搭建PXE纯网络的架构,实现引导,kickstart,及安装树的提供完全自动化; 

你可能感兴趣的:(kickstart配置文件详解和system-config-kickstart)