CentOS(Redhat)提供了一套完整的自動化安裝機制,利用該機制,咱們能夠本身定製無人值守的自動安裝光盤,也能夠進行系統裁減,甚至能夠以CentOS爲基礎製做本身軟件系統的系統安裝盤。
如下所有內容以CentOS 5.1版本爲準
自定製安裝盤主要有如下幾個步驟
一、選取必要服務,去除沒必要要的RPM包
二、定製自動安裝過程
三、定製安裝界面(可選)
四、生成新安裝盤
1 建立源盤
首先咱們須要從CentOS 5.1的完整dvd版本建立源盤,假設咱們已經有一個完整的CentOS5.1的dvd放在光驅中,源盤的位置爲/disk,則執行如下操做
1. mount dvd
#mkdir /cdrom
#mount –o loop /dev/cdrom /cdrom
2.複製光盤內容
#mkdir /disk
#cp –R /cdrom/. /disk
3.清除非必須的RPM
注意,此時/disk目錄下其實是一個DVD的備份景象,咱們須要根據第5節的內容選取自定義安裝盤所需的RPM包,而後在/disk/CentOS目錄裏刪除全部沒必要要的RPM,以減少安裝盤容量。
上述步驟完成後,咱們已經有了一個與原版DVD基本相同,可是徹底去除了無用RPM包的源盤,後續的定製工做將在該路徑中進行。
典型的CentOS安裝盤中,與光盤定製有關的主要有如下幾個目錄和文件:
/CentOS
/isolinux
/repodata
.discinfo
ks.cfg(此時還沒有建立)
CentOS目錄存放全部在安裝過程當中須要使用的RPM包
isolinux目錄存放光盤啓動時的安裝界面信息
repodata目錄是與RPM包安裝相關的依賴信息
.discinfo是CentOS的識別信息,直接從CentOS DVD版本中獲取,若是該文件丟失,會致使安裝過程當中,系統提示找不到CentOS光盤
ks.cfg是自動安裝過程的主控配置文件
CentOS的自動安裝過程以下:
一、光盤自動引導,調用isolinux中的信息生成啓動界面
二、根據用戶輸入,選擇ks.cfg做爲安裝控制文件
三、進入自動安裝過程,根據ks.cfg安裝RPM包、配置網絡、進行硬盤分區等等
四、系統安裝完成後,根據ks.cfg進行用戶自定義的安裝過程
五、安裝完成,系統重起
2 自定義啓動界面
在isolinux裏面有三個文件和自定義安裝界面有關
boot.msg是定義啓動界面如何顯示
isolinux.cfg決定如何處理用戶的輸入,並執行對應的安裝過程
splash.lss是啓動界面的背景圖片
2.1 boot.msg
boot.msg內容大體以下:
^L
^Xsplash.lss
- XXXX auto-instiall, press the ^O0f<ENTER>^O07 key to begin.
文檔中的^X用ctrl+X輸入
^Xsplash.lss表示使用splash.lss做爲啓動界面的背景圖片
後面就是啓動時界面下的提示信息^O0f和^O07之間的內容做爲高亮顯示
2.2 isolinux.cfg
isolinux.cfg設置進入啓動頁面後,系統如何處理用戶輸入。
主要內容以下:
default auto
默認執行auto段的安裝進程
prompt 1
timeout 6000
設置用戶輸入的超時時間,單位:秒。超時未輸入則執行默認的安裝進程
display boot.msg
將boot.msg做爲顯示的啓動界面
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label auto
kernel vmlinuz
append ks=cdrom:/ks.cfg initrd=initrd.img ramdisk_size=8192 acpi=off noapic skipddc
標記auto段,使用光驅根目錄下的ks.cfg文件做爲kickstart的配置文件
label manual
kernel vmlinuz
append ks=cdrom:/ks_manual.cfg initrd=initrd.img ramdisk_size=8192 acpi=off noapic skipddc
標記manual段,使用光驅根目錄下的ks_manual.cfg文件做爲kickstart的配置文件。若是用戶在啓動界面輸入manual,則執行該段
2.3 splash.lss
splash.lss是啓動界面的背景圖片,該圖形文件比較特殊,只能使用14色(標準16色除去黑白兩色)的原始圖片來生成。
首先建立一個16色(包含黑白兩色)的gif文檔,名爲splash.gif
將該文件轉換爲lss格式
#giftopnm < splash.gif | ppmtolss16 > splash.lss
3 自定義安裝過程
CentOS的安裝主要是由anaconda來實現的,它經過kickstart配置文件來控制整個安裝進程,以到達無人值守安裝的效果。
kickstart文件具體配置能夠參看:
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Installation_Guide/ch-kickstart2.html
進行配置前,須要建立目標ks文件
#cd /disk
#vi ks.cfg
ks文件主要分爲三個部分
一、系統安裝及配置
二、自定義安裝準備(%post --nochroot)
三、用戶自定義安裝(%post)
3.1 系統安裝及配置
kickstart文件首先進行系統的設置,好比機器語言、時區、鍵盤等參數的設置,而後檢查安裝所需RPM是否都完整,而後根據分區信息進行格式化。
這部分配置信息寫在ks文件的最前面,以「%post --nochroot」爲結束,典型的配置信息以下:
#System language
#系統語言 簡體中文
lang zh_CN
#Language modules to install
#要安裝的語言模塊以及默認語言
langsupport zh_CN --default=zh_CN
#System keyboard
#系統鍵盤類型
keyboard us
#System mouse
mouse
#Sytem timezone
#系統時區
timezone Asia/Shanghai
#Root password
#管理員密碼,值爲已加密字符串
rootpw --iscrypted $1$MGv8U4W0$BS7JLb3MZT70Z30mutWwO1
#Reboot after installation
#安裝完成後是否自動重起
reboot
#Use text mode install
#使用文本安裝界面
text
#Install OS instead of upgrade
install
#Use CDROM installation media
#使用光盤做爲安裝媒體
cdrom
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
#清除原有分區信息
clearpart --all --initlabel
#Disk partitioning information
#創建一個200-500M的引導區,一個300-500M的交換區,剩餘磁盤空間劃分給根路徑/
part /boot --fstype ext3 --size 200 --grow --maxsize 500
part swap --size 300 --grow --maxsize 500
part / --fstype ext3 --size 1 --grow
#System authorization information
#設置系統驗證方式
auth --useshadow --enablemd5
#Network information
#使用dhcp獲取ip
network --bootproto=dhcp --device=eth0
#Firewall configuration
#關閉防火牆
firewall --disabled
selinux --disabled
#Do not configure XWindows
#不設置xwindows
skipx
#Package install information
%packages –resolvedeps
#如下所有是系統須要安裝的rpm包,咱們假設此時已經知道全部須要的包,而且所有放在/CentOS路徑下
kernel
#autoconf
#e2fsprogs
#fonts-chinese
#...
請注意必須保證要安裝的RPM包以及被依賴的RPM都存放在/CentOS目錄下,在ks配置文件裏只須要寫要安裝的RPM包名便可,anaconda會解析依賴關係並自動安裝關聯的包,若是沒有須要的包,則會報錯並終止安裝。
3.2 自定義安裝準備
自定義安裝準備部分以「%post --nochroot」做爲開始,以「%post」做爲結束。該部分腳本使用bash語法,一般在這一段腳本中將用戶本身的安裝包從安裝光盤複製到已經安裝好的系統上。
這一階段的腳本編寫須要注意兩個問題
一、此時要訪問磁盤路徑,則要在目標路徑前增長「/mnt/sysimage」,例如要將某個文件複製硬盤的/var/log,則腳本應爲#cp somefile /mnt/sysimage/var/log。
二、若是要從光盤複製文件到硬盤,須要先將光驅mount到系統,可是根據主板不一樣,此時的光盤設備名不必定是/dev/cdrom,因此可能須要根據本身的狀況建立一個link,以便進行mount,如:
#mkdir /mnt/cdrom/
光驅爲usb外接光驅,創建連接
#ln -s /dev/scd0 /dev/cdrom
mount設備爲只讀
#mount /dev/cdrom /mnt/cdrom/ -o ro
3.3 自定義安裝
自定義安裝部分以「%post」做爲開始,在前一部分將自定義安裝包複製到硬盤以後,就能夠在這裏使用bash腳本進行軟件的安裝控制了。惟一須要注意的是,此時訪問磁盤路徑已經不須要添加「/mnt/sysimage」,直接訪問便可,如
#cp somefile /var/log
此外,由於此時尚未設置用戶的環境路徑,因此調用系統命令時最好儘可能帶上完整地路徑名,如:
/usr/sbin/groupadd xxxx
/usr/sbin/adduser xxxx -g xxxx
4 生成安裝盤
如今咱們已經完成了自定義安裝光盤的所有調整,就能夠製做光盤鏡像了。生成安裝盤ISO鏡像,須要先在系統安裝好createrepo和mkisofs兩個軟件包。
首先,必須同步光盤中RPM包的查詢信息,不然安裝過程當中會提示找不到RPM包
# createrepo -g /disk/repodata/comps.xml /disk/
comps.xml是CentOS自帶的RPM所屬功能組以及依賴關係的信息,createrepo須要根據該文件來同步信息,最好不要手動修改該文件。
同步成功以後,就能夠進行iso的建立了,咱們假定光盤標籤爲sample,輸出iso文件名爲/sample.iso
#cd /disk
#mkisofs -o /sample.iso -A ‘sample’ -V ‘sample’ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -allow-leading-dots -allow-m html