天天看點

定制CentOS 5.1(Redhat AS 5.1)安裝盤

定制CentOS 5.1(Redhat AS 5.1)安裝盤 

CentOS(Redhat)提供了一套完整的自動化安裝機制,利用該機制,我們可以自己定制無人值守的自動安裝CD光牒,也可以進行系統裁減,甚至可以以CentOS為基礎制作自己軟體系統的系統安裝盤。

以下全部内容以CentOS 5.1版本為準

自定制安裝盤主要有以下幾個步驟

1、選取必要服務,去除不必要的RPM包

2、定制自動安裝過程

3、定制安裝界面(可選)

4、生成新安裝盤

1 建立源盤

首先我們需要從CentOS 5.1的完整dvd版本建立源盤,假設我們已經有一個完整的CentOS5.1的dvd放在光驅中,源盤的位置為/disk,則執行以下操作

1.       mount dvd

#mkdir /cdrom

#mount –o loop /dev/cdrom /cdrom

2.複制CD光牒内容

#mkdir /disk

#cp –R /cdrom/. /disk

3.清除非必須的RPM

注意,此時/disk目錄下實際上是一個DVD的備份景象,我們需要根據第5節的内容選取自定義安裝盤所需的RPM包,然後在/disk/CentOS目錄裡删除所有不必要的RPM,以減小安裝盤容量。

上述步驟完成後,我們已經有了一個與原版DVD基本相同,但是完全去除了無用RPM包的源盤,後續的定制工作将在該路徑中進行。

典型的CentOS安裝盤中,與CD光牒定制有關的主要有以下幾個目錄和檔案:

/CentOS

/isolinux

/repodata

.discinfo

ks.cfg(此時尚未建立)

CentOS目錄存放所有在安裝過程中需要使用的RPM包

isolinux目錄存放CD光牒啟動時的安裝界面資訊

repodata目錄是與RPM包安裝相關的依賴資訊

.discinfo是CentOS的識别資訊,直接從CentOS DVD版本中擷取,如果該檔案丢失,會導緻安裝過程中,系統提示找不到CentOSCD光牒

ks.cfg是自動安裝過程的主要配置檔案

CentOS的自動安裝過程如下:

1、CD光牒自動引導,調用isolinux中的資訊生成啟動界面

2、根據使用者輸入,選擇ks.cfg作為安裝控制檔案

3、進入自動安裝過程,根據ks.cfg安裝RPM包、配置網絡、進行硬碟分區等等

4、系統安裝完成後,根據ks.cfg進行使用者自定義的安裝過程

5、安裝完成,系統重起

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

  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檔案具體配置可以參看:

<a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Installation_Guide/ch-kickstart2.html">http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Installation_Guide/ch-kickstart2.html</a>

進行配置前,需要建立目标ks檔案

#cd /disk

#vi ks.cfg

ks檔案主要分為三個部分

1、系統安裝及配置

2、自定義安裝準備(%post --nochroot)

3、使用者自定義安裝(%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

#使用CD光牒作為安裝媒體

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文法,通常在這一段腳本中将使用者自己的安裝包從安裝CD光牒複制到已經安裝好的系統上。

這一階段的腳本編寫需要注意兩個問題

1、此時要通路磁盤路徑,則要在目标路徑前增加“/mnt/sysimage”,例如要将某個檔案複制硬碟的/var/log,則腳本應為#cp somefile /mnt/sysimage/var/log。

2、如果要從CD光牒複制檔案到硬碟,需要先将光驅mount到系統,但是根據主機闆不同,此時的CD光牒裝置名不一定是/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 生成安裝盤

現在我們已經完成了自定義安裝CD光牒的全部調整,就可以制作CD光牒鏡像了。生成安裝盤ISO鏡像,需要先在系統安裝好createrepo和mkisofs兩個軟體包。

首先,必須同步CD光牒中RPM包的查詢資訊,否則安裝過程中會提示找不到RPM包

# createrepo -g /disk/repodata/comps.xml /disk/

comps.xml是CentOS自帶的RPM所屬功能組以及依賴關系的資訊,createrepo需要根據該檔案來同步資訊,最好不要手動修改該檔案。

同步成功之後,就可以進行iso的建立了,我們假定CD光牒标簽為sample,輸出iso檔案名為/sample.iso

#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-multidot -udf -R -r -T -boot-info-table -J /disk/

該指令執行成功之後就會在生成sample.iso的鏡像,刻錄到CD光牒上就可以作為自制CentOS安裝盤使用了。

5 裁減RPM包

CentOS 5.1完整版本容量接近4G,其中大部分功能包都不是必要的,完整安裝不僅耗費磁盤空間,增加安裝時間,還會因為運作無用服務影響系統性能,是以必須要對RPM包裁減。

RPM裁減,即是選出需要的包,去掉其他無用包。但是Linux下安裝RPM時,常常還需要依賴其他包,否則安裝會失敗,而被依賴的RPM包也常常需要依賴其他包,經常導緻多層依賴,手動檢查起來非常麻煩。還好CentOS提供了RPM包安裝工具yum,我們可以通過這個工具自動擷取所有的關聯包。

5.1準備工作:

1、  安裝yum

2、  準備CentOS 5.1完整版的DVD

yum查找RPM依賴包,首先需要提供全部可用RPM,yum會自動檢查RPM包并檢查關聯資訊,以确定所依賴的RPM包,是以首先我們要準備好全部RPM。

5.2加載CD光牒的RPM

#cd /mnt

#mkdir cdrom

#mount –o loop /dev/cdrom cdrom

加載完成後,/mnt/cdrom/CentOS就是RPM包的存放位置

5.3設定yum的RPM搜尋資訊

#cd /etc/yum.repos.d/

# ls

CentOS-Base.repo  CentOS-Media.repo

該目錄有兩個檔案,第一個檔案是從網絡讀取RPM資訊的配置檔案,第二個是從本地媒體讀取RPM資訊的配置檔案,因為yum優先從網絡讀取資訊,是以我們必須修改第一個檔案的名字,強制yum從本地媒體搜尋檔案。

#mv CentOS-Base.repo CentOS-Base.repo.bak

然後修改CentOS-Media.repo,把搜尋位置指向/mnt/cdrom/,那麼yum會自動在/mnt/cdrom/repodata的repomd.xml去尋找資訊

#vi CentOS-Media.repo

修改内容如下:

baseurl=file:///mnt/cdrom/

gpgcheck=1

enabled=1

#rpm --import /mnt/cdrom/RPM-GPG-KEY-beta

5.4 擷取依賴包資訊

按照上面步驟配置完成之後,就可以自動擷取依賴包了。以下以擷取selinux-policy相關依賴包為例

進入RPM存放目錄

#cd /mnt/cdrom/CentOS

使用指令嘗試安裝目标RPM包

#yum install selinux-policy

則yum輸出類似如下資訊:

Dependencies Resolved

=============================================================================

 Package                 Arch       Version          Repository        Size

Installing:

 selinux-policy          noarch     2.4.6-104.el5    c5-media          365 k

Installing for dependencies:

 libsemanage             i386       1.9.1-3.el5      c5-media          135 k

Transaction Summary

Install      2 Package(s)

Update       0 Package(s)

Remove       0 Package(s)

Total download size: 500 k

Is this ok [y/N]:

顯然,根據檢索結果libsemanage是安裝selinux-policy所依賴的RPM包。此時可以選擇N則傳回指令行,選擇y則會自動安裝selinux-policy及其所有依賴包。

我們可以通過這種方式擷取,我們所需RPM包的全部依賴包,然後将其他無關包全部裁減掉。

繼續閱讀