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 <type><moduleName> --opts=<options>
<type>,用scsi或eth代替
<moduleName>,使用應該被安裝的內核模塊的名稱來替換.
--opts=,傳遞給內核模塊的選項.注意,如果把選項放在引號里,可以傳遞多個選項.
例如:--opts="aic152x=0x340 io=11"
driverdisk(可選)
可以在kickstart安裝過程中使用驅動軟盤.必須把驅動軟盤的內容復制到系統的硬盤分區的根目錄下.然后必須使用driverdisk 命令來告訴安裝程序到哪去尋找驅動磁盤.
driverdisk <partition> [--type=<fstype>]
另外,也可以為驅動程序盤指定一個網絡位置:
driverdisk --source=ftp://path/to/dd.img
driverdisk --source=http://path/to/dd.img
driverdisk --source=nfs:host:/path/to/img
<partition>,包含驅動程序盤的分區.
--type=,文件系統類型(如:vfat,ext2,ext3).
firewall(可選)
這個選項對應安裝程序里的「防火牆配置」屏幕:
firewall --enabled|--disabled [--trust=] <device> [--port=]
--enabled或者--enable,拒絕不是答復輸出請求如DNS答復或DHCP請求的進入連接.如果需要使用在這個機器上運行的服務,可以選擇允許指定的服務穿過防火牆.
--disabled或--disable,不要配置任何iptables規則.
--trust=,在此列出設備,如eth0,這允許所有經由這個設備的數據包通過防火牆.如果需要列出多個設備,使用--trust eth0 --trust eth1.不要使用以逗號分隔的格式,如--trust eth0, eth1.
<incoming>,使用以下服務中的一個或多個來替換,從而允許指定的服務穿過防火牆.
--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://<server>/<dir>
或:url --url ftp://<username>:<password>@<server>/<dir>
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 <mntpoint> --vgname=<name> --size=<size> --name=<name><options>
這些選項如下所示:
--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.
<mntpoint>,<mntpoint>是分區的掛載點,它必須是下列形式中的一種:
/<path>,例如,/,/usr,/home
swap,該分區被用作交換空間,要自動決定交換分區的大小,使用--recommended選項.
swap --recommended
自動生成的交換分區的最小值大於系統內存的數量,但小於系統內存的兩倍.
raid.<id>,該分區用於 software RAID(參考 raid).
pv.<id>,該分區用於 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 <mntpoint> --level=<level> --device=<mddevice><partitions*>
<mntpoint>,RAID文件系統被掛載的位置.如果是/,除非已經有引導分區存在(/boot),RAID級別必須是1.如果已經有引導分區,/boot分區必須是級別1且根分區(/)可以是任何可用的類型.<partitions*>(這表示可以有多個分區)列出了加入到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=<repoid> [--baseline=<url>| --mirrorlist=<url>]
--name=,repo id.這個選項是必需的.
--baseurl=,庫的URL.這里不支持yum repo配置文件里使用的變量.可以使用它或者--mirrorlist,亦或兩者都不使用.
--mirrorlist=,指向庫鏡像的列表的URL.這里不支持yum repo配置文件里可能使用的變量.可以使用它或者--baseurl,亦或兩者都不使用.
rootpw(必需)
把系統的根口令設置為<password>參數.
rootpw [--iscrypted] <password>
--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(可選)
把系統時區設置為<timezone>,它可以是timeconfig列出的任何時區.
timezone [--utc] <timezone>
--utc,如果存在,系統就會假定硬件時鍾被設置為UTC(格林威治標准)時間.
upgrade(可選)
告訴系統升級現有的系統而不是安裝一個全新的系統.必須指定 cdrom,harddrive,nfs或url(對於FTP和HTTP而言)中的一個作為安裝樹的位置.詳情請參考 install.
user(可選)
在系統上創建新用戶.
user --name=<username> [--groups=<list>] [--homedir=<homedir>] [--password=<password>] [--iscrypted] [--shell=<shell>] [--uid=<uid>]
--name=,提供用戶的名字.這個選項是必需的.
--groups=,除了缺省的組以外,用戶應該屬於的用逗號隔開的組的列表.
--homedir=,用戶的主目錄.如果沒有指定,缺省為/home/<username>.
--password=,新用戶的密碼.如果沒有指定,這個帳號將缺省被鎖住.
--iscrypted=,所提供的密碼是否已經加密?
--shell=,用戶的登錄shell.如果不提供,缺省為系統的缺省設置.
--uid=,用戶的UID.如果未提供,缺省為下一個可用的非系統 UID.
vnc(可選)
允許通過VNC遠程地查看圖形化的安裝.文本模式的安裝通常更喜歡使用這個方法,因為在文本模式下有某些大小和語言的限制.如果為no,這個命令將啟動不需要密碼的VNC服務器並打印出需要用來連接遠程機器的命令.
vnc [--host=<hostname>] [--port=<port>] [--password=<password>]
--host=,不啟動VNC服務器,而是連接至給定主機上的VNC viewer進程.
--port=,提供遠程VNC viewer進程偵聽的端口.如果不提供,anaconda將使用VNC的缺省端口.
--password=,設置連接VNC會話必需的密碼.這是可選的,但卻是我們所推薦的選項.
volgroup(可選)
用來創建邏輯卷管理(LVM)組,其語法格式為:
volgroup <name><partition><options>
這些選項如下所示:
--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=<devnum>] [--fcplun=<fcplun>] [--scsiid=<scsiid>] [--scsilun=<scsilun>] [--wwpn=<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=<class>,發送自定義的DHCP vendor class identifier.ISC的dhcpcd可以用"option vendor-class-identifier"來查看這個值.
dns=<dns>,用逗號隔開的用於網絡安裝的命名服務器列表.
driverdisk,和'dd'相同.
expert,啟用特殊的功能,允許對可移除介質(removable media)進行分區和提示驅動盤
gateway=<gw>,用於網絡安裝的網關.
graphical,強制圖形化安裝.ftp/http 安裝模式時必須使用圖形化界面.
isa,提示用戶輸入ISA設備配置.
ip=<ip>,用於網絡安裝的IP地址,對於DHCP使用'dhcp'.
keymap=<keymap>,使用的鍵盤格式.有效值是那些可以用於'keyboard' kickstart命令的值.
ks=nfs:<server>:/<path>,安裝程序在NFS服務器<server>上的<path>里尋找kickstart文件.安裝程序使用DHCP來配置以太網卡.例如,如果的NFS服務器是server.example.com且kickstart文件是NFS共享目錄的里/mydir/ks.cfg,正確的引導命令應該是ks=nfs:server.example.com:/mydir/ks.cfg.
ks=http://<server>/<path>,安裝程序在HTTP服務器<server>上的<path>里尋找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:/<path>,安裝程序在/dev/fd0里的軟盤上以<path>尋找kickstart文件.
ks=hd:<device>:/<file>,安裝程序把文件系統掛載在<device>(必須是vfat或ext2),而且在該文件系統里以<file>來尋找 kickstart 文件,如ks=hd:sda3:/mydir/ks.cfg.
ks=file:/<file>,安裝程序試圖從文件系統里讀取<file>;並沒有掛載任何文件.如果kickstart文件已經在initrd映像里時我們通常使用這個方法.
ks=cdrom:/<path>,安裝程序以<path>在光盤上尋找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=<device>,安裝程序使用這個網絡設備來連接網絡.如要使用通過eth1設備連接至系統的NFS服務器上的kickstart文件來啟動kickstart安裝,可以在boot:提示下使用ks=nfs:<server>:/<path> ksdevice=eth1命令.
kssendmac,把HTTP頭加到對設置系統有幫助的ks=http://請求里.在CGI環境變量里包括所有網卡的MAC地址,如:"X-RHN-Provisioning-MAC-0: eth0 01:23:45:67:89:ab".
lang=<lang>,安裝時使用的語言.這應該是'lang' kickstart命令可以使用的有效語言之一.
loglevel=<level>,設置記錄日志信息的最低級別.<level>的值可以是debug,info,warning,error和critical.缺省值是info.
lowres,強制圖形用戶界面安裝程序運行在640x480分辨率下.
mediacheck,激活加載者代碼,可以允許用戶選擇測試安裝介質(如果是基於ISO的方法)的完整性.
method=cdrom,執行基於光盤的安裝.
method=ftp://<path>,使用<path>來進行FTP安裝.
method=hd://<dev>/<path>,用<dev>上的<path>進行基於硬盤驅動器的安裝.
method=http://<path>,用<path>來進行基於HTTP的安裝.
method=nfs:<path>,用<path>來進行NFS安裝.
netmask=<nm>,用於網絡安裝的掩碼.
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=<mode>,在指定模式下運行安裝程序,如'1024x768'模式.
serial,啟用串行控制台支持.
skipddc,跳過對顯示器的DDC探測,如果系統被掛起的這可能有幫助.
syslog=<host>[:<port>],一旦安裝過程被啟動並運行,發送日志信息到<host>的可選端口<port>上的syslog進程.這要求遠程syslog進程接受連接(-r 選項).
text,強制文本模式的安裝.
updates,提示包含更新(bug修復)的軟盤.
updates=ftp://<path>,基於FTP的包含更新的映像文件.
updates=http://<path>,基於HTTP的包含更新的映像文件.
upgradeany,不需要符合升級所期望的語法的/etc/redhat-release.
vnc,啟用基於vnc的安裝.將需要連接到使用vnc客戶端程序的機器.
vncconnect=<host>[:<port>],一旦安裝過程開始啟動並運行,連接到<host>上的vnc客戶端,也可以使用可選端口<port>.也要求'vnc' 選項被指定.
vncpassword=<password>,啟用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配置字段示例:
- # The following lines are examples of kickstart directives.
- filename "/data/ks/ks.cfg";
- next-server 192.168.1.10;
- # 注:上面部分需要寫在subnet子段中;
(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://<username>:<password>@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 <partition> [ --type=<fstype> ]
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 ] <device> [ --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>
例:
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 ] <passwd>
--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 <mntpoint>|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=<level> --device=<mddevices_name> <raid組成分區>
掛載點: 選取根/時,注意盡量避免/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配置文件示例
- ##########################################################################
- #
- # kickstart install script
- # RHEL version 5
- # Platform=x86, AMD64, or Intel EM64T
- #
- ##########################################################################
- # Install OS instead of upgrade
- install
- # Use text mode install
- text
- # Installation Number configuration
- key --skip
- # Local installation Use CDROM installation media
- cdrom
- # Network installation via FTP of HTTP
- #url --url ftp://<username>:<password>@install.example.com/pub/RH
- #url --url http://install.example.com/pub/RH
- # Network installation via NFS
- #nfs --server=nfsserver.example.com --dir=/pub/install-tree
- # Local installation Use HD source
- #harddrive --partition /dev/sda2 --dir=/data/iso
- # If you use harddrive, you must use ISO images, not a tree
- # Note that even if though we clearpart --all, the install
- # partition will remain, which can be quite useful.
- # System authorization information
- auth --useshadow --enablemd5
- #Root password
- rootpw --iscrypted $1$1P72E10M$b47abC13/yUSzV9uvCoML0
- #rootpw redhat
- # System bootloader configuration
- bootloader --append="rhgb quiet" --location=mbr
- # Clear the Master Boot Record
- zerombr
- # Partition clearing information
- clearpart --all --initlabel
- # Run the Setup Agent on first boot
- firstboot --disable
- # System keyboard
- keyboard us
- # System language
- lang en_US
- # System timezone
- timezone --isUtc Asia/Shanghai
- # Installation logging level
- logging --level=info
- # Network information
- network --bootproto=dhcp --device=eth0 --onboot=on
- # Firewall configuration
- firewall --enabled --ssh --trust=eth0
- # SELinux configuration
- selinux --enforcing
- # X Window System configuration information
- xconfig --defaultdesktop=GNOME --depth=16 --resolution=800x600 --startxonboot
- # Do not configure X
- #skipx
- # Reboot after installation
- reboot
- # Disk partitioning information
- part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100
- part / --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=10240
- part pv.100 --size=4096 --grow
- volgroup myvg --pesize=32768 pv.100
- logvol /data --fstype="ext3" --name=mydata --vgname=myvg --size=1024 --grow --maxsize=2048
- # This packages is for RedHat5.5
- %packages
- @base
- @gnome-desktop
- @development-libs
- @admin-tools
- @base-x
- @development-tools
- @sound-and-video
- @chinese-support
- @gnome-software-development
- @x-software-development
- @openfabrics-enterprise-distribution
- @printing
- @server-cfg
- @legacy-software-support
- @mail-server
- @system-tools
- @graphical-internet
- @editors
- @text-internet
- @graphics
- @dialup
- @java
- @office
- %post --interpreter=/bin/bash
- # Let's log post-install
- (
- # Create two user
- /usr/sbin/useradd florian
- /usr/sbin/useradd douglas
- /bin/echo "florian" | /usr/bin/passwd --stdin florian
- /bin/echo "douglas" | /usr/bin/passwd --stdin douglas
- # Print message onboot: We are the fighter...
- /bin/echo "We are the fighter......Mr.Li" > /etc/issue
- ) 2>&1 >> /root/post-install.log
七. 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鏡像方法:
- [root@bogon images]# ls
- boot.iso diskboot.img minstg2.img pxeboot README stage2.img TRANS.TBL xen
- [root@bogon images]# file stage2.img
- stage2.img: Squashfs filesystem, little endian, version 3.0, 0 bytes, 8969 inodes, blocksize: 65536 bytes, created: Mon Mar 22 19:56:50 2010
- #從上面看出img文件格式為squashfs,所以在下面掛載時明確指定該格式,否則會報錯;
- [root@bogon images]# mkdir ../img
- [root@bogon images]# mount -o loop -t squashfs stage2.img ../img/
- [root@bogon images]# ls ../img
- etc lib modules proc usr var
- [root@bogon images]#
十. 使用Kickstart進行安裝的多種方式列舉
(過程不再贅述,對於一些重要的實驗在后期會附上HOW-TO):
1. kickstart放置於鏡像中,重新制作ISO並刻盤,從光盤實現引導,自動配置並提供安裝樹安裝;
2. kickstart可放置於網絡上,用FTP/HTTP/NFS提供出來;用光盤引導及提供安裝樹;
3. 用FTP/HTTP/NFS提供kickstart及安裝樹,用光盤或其他可引導的大象存儲設備引導;
4. 搭建PXE純網絡的架構,實現引導,kickstart,及安裝樹的提供完全自動化;
參考:
Red_Hat_Enterprise_Linux-5-Installation_Guide-en-US