運用RedHat的Kickstart升級Linux系統方法

本文簡要地介紹了使用 Red Hat Linux的 Kickstart 及網路安裝功能方便快捷地升級己有 Linux 系統,文中的例子是從 Red Hat 7.2 遠端升級到 Red Hat 9.0。

運用RedHat的Kickstart升級Linux系統方法

自從 5.2 版開始, Red Hat Linux 便 增加了一個稱為 Kickstart 的功能,其主要是為了減少安裝過程中需要jiao互式 (interactive)的系統引數輸入,提高安裝效率。將其運用於自動安裝 Linux,特別是需要在短時間迅速安裝至成百臺 Linux 工作站這種特殊場合尤為適用,Stanford University 的 Menlo Park 已經有精彩的文章介紹。

1.升級前系統檢查

在開始升級系統之前,有一些容易忽視的問題容易中斷 Kickstart 過程,這些問題一般是系統配置達不到安裝最低要求,所以最好能在自動升級之前有實驗條件先進行充分的測試再實施。 Red Hat Linux 系統發展至今,已經不是低得386都可以跑得很流暢的了(Red Hat 9 已經不能在 586 以下的機器上執行),所以在升級之前有必要對系統進行充分的檢查,主要包括以下方面:

儲存空間是否足夠。Red Hat 9 最少需要32MB的記憶體和472MB的硬碟,記憶體一般是不會成問題的,但是我未能在一個500MB硬碟上裝好系統,當然現在大家的硬碟一般還是比較大,都可以進行完全安裝了。Linux 的系統檔案主要集中於 /usr 下,/ 下面也有一部分,一般不安裝 X 系統和大型軟體的情況下,/usr 使用1GB空間、/ 使用500MB空間都可以工作得很好了。我的系統從 7.2 升級到 9.0 系統,/usr 和 / 的使用情況大約較升級前增加了30% 的樣子,所以如果大家的 /usr 和/使用率不是太高的話,磁碟空間 的限制一般是不會有什麼問題的。

jiao換分割槽空間是否足夠。Red Hat 9 與 7.2 的一個不易發現的區別便在此,7.2 系統是可以使用少於兩倍實體記憶體容量的jiao換分割槽,兩倍或者多於兩倍實體記憶體的jiao換分割槽只是建議大小;而 Red Hat 9 則必須使用兩倍或者多於兩倍實體記憶體大小的jiao換分割槽,所以如果你的Linux系統只有少於兩倍的jiao換分割槽,那就只有再劃分一個jiao換分割槽或者增加一個jiao換檔案,或者撥下你的記憶體讓系統jiao換分割槽大於兩倍實體記憶體,我建議使用加一個jiao換分割槽的辦法,增加jiao換檔案還無法在 Kickstart 中實現,至於撥下記憶體,遠端升級就根本沒有辦法撥下記憶體了。

其他雜項,系統在自動升級過程中會檢測一系列的硬體,如果選擇圖形介面安裝,但是沒有滑鼠,系統則會提示使用文字方式安裝;或者只有 32MB記憶體則系統也不能進行圖形介面安裝,這些都可以在自動安裝配置檔案裡進行修改以避免其發生,但是記下系統的所有硬體配置製成一個清單會對製作自動配置檔案有較大的幫助。

2.如何啟動安裝程式

首先從 Red Hat Linux 的啟動安裝程式開始。從 Red Hat Linux 的官方安裝裝手冊上我們可以看到主要的幾種啟動方式:CDROM、軟碟機及從 dos 環境執行光碟上的 檔案三種方式,對於我們來說這還是不夠的,我們的 Linux 工作站是沒有軟碟機和光碟機的,當然更加不會有 dos。通過分析各發行版第一張光碟的 /images目錄下的 boot* 檔案我們發現,這些啟動映象檔案其實只有兩個主要的檔案:vmlinuz 核心和 ,是一個壓縮的最小檔案系統。將這兩個檔案提取到己有的 Linux 系統 /boot 目錄下,在系統的 bootloader(一般是 LILO 或者 GRUB)配置檔案中加入相應的配置行即可啟動安裝程式。以 Red Hat 7.2 和 GRUB 為例(使用 Red Hat 8.0 的網路啟動映象檔案):

[root@client mnt]# mount -o loop -o ro

/mnt/nfs/psyche/cd1/images/ bootnet

[root@client mnt]# cd bootnet/

[root@client bootnet]# ls

options.msgrescue.msgsplash.lsssysLinux.png

mlinuz

[root@client bootnet]# cp vmlinuz /boot/vmlinuz8

[root@client bootnet]# cp /boot/initrd8

[root@client bootnet]# vi /boot/grub/

新增如下三行:

title Upgrade to Psyche via NFS

kernel /boot/vmlinuz8 ro

initrd /boot/initrd8

注意:以上是沒有 /boot 分割槽的配置,有 /boot 分割槽則不需要前面的 /boot,見 GRUB 配置檔案中 NOTICE 部分。

重新啟動後即可選擇網路升級,和用 bootnet 軟盤引導系統的效果是一樣的。在這裡我們將使用 Red Hat 9 的另外一個啟動檔案,這也是最近才在 Red Hat 發行版中出現的 。將 Red Hat 9 發行版第一張光碟的 ISO 映象檔案裝載後,我們發現其下的 images 目錄中較 7 系列發行版多了一個 檔案(8.0 第一張光碟根目錄下也有類似目錄),將其裝載後發現其中包含一個比較大的核心和 initrd 檔案,該initrd 包含了安裝系統時常見硬體的驅動,我使用該檔案啟動時能自動識別出 PM133 主機板的顯示卡及比較少見的adaptec ANA-6911TX 網絡卡(starfire.o),所以強烈推薦使用 自動升級,可以省卻驅動的麻煩。值得一提的是 Red Hat 9 現在已經不在 中自帶網絡卡驅動了,而 Red Hat 8 在 中帶了一些常見網絡卡的驅動的(intel 55X系列、tulip、8139等),解壓一下 中的 檔案就可以在lib目錄中看到這些驅動模組檔案了。

3.從哪裡安裝

升級系統當然需要新系統的發行版原始檔,發行版形式可以多樣化,即可以是光碟,也可以是光碟映象檔案(ISO格式),同時也可以是光碟檔案的拷貝集。在 Red Hat 9 中,可供選擇的安裝模式有本地 CDROM、本地硬碟、NFS 映象、FTP、HTTP。從光碟安裝具有最好的相容性和易操作性,適合個人安裝,大批量和遠端升級則不適用;本地硬碟是一種比較好的'方式,速度快,而且也不需要頻繁更換光碟,但是也不適合大批量安裝,每臺工作站均儲存一份發行版映象拷貝實在是很浪費儲存空間,而且要命的是我的那臺機器已經沒有空間可以放下這麼巨大的檔案了;NFS 則是一種比較成熟的方式,通過 NFS 方式安裝系統只需要將 ISO 格式的光碟映象檔案共享即可,不像 FTP 和 HTTP 方式需要考慮目錄樹結構,而且 NFS 方式可以選擇圖形介面安裝(FTP 和 HTTP 方式僅能使用文字介面),速度相對 FTP 和 HTTP 方式更快,所以網路安裝建議使用 NFS 方式。建立 NFS安裝映象伺服器的辦法很簡單,僅需通過 NFS 將發行版光碟映象檔案共享即可。

[root@server root]$ cat /etc/exports /data/shrike (ro)

[root@server shrike]# ls

4.製作 Kickstart

接下來自然就是製作 Kickstart 檔案了,Kickstart 技術從最早推出至今已經更新了許多次,配置的語法也是不盡相同,後來的版本也沒有做到完全相容舊有版本語法,不能說這也是一個遺憾,在此我強烈建議使用 Red Hat 9 官方文件來進行 Kickstart 的配置,這樣才能做到萬無一失。配置檔案主要內容如下:

1) 檔案位置。很明顯安裝程式需要讀取到 ks 配置檔案才能進行自動安裝,ks 配置檔案可以有以下幾種方式讀入:啟動軟盤、啟動光碟、硬碟、網路。

軟盤讀取 ks 配置檔案相對較簡單,將 置於軟盤根目錄下即可,啟動後輸入 Linux ks=floppy 即可開始 ks 安裝。

光碟讀取 ks 配置檔案需要在製作啟動光碟時加入 配置檔案至根目錄下,啟動後輸入 Linux ks=cdrom:/ 即可開始 ks 安裝。

硬碟讀取 ks 配置檔案一般是從光碟機引導後,再讀硬碟中的 ks 配置檔案(此時可能沒有軟碟機和網路支援),啟動後輸入 Linux ks=hd:fd0:/,限制條件是該硬碟分割槽必須是 VFAT 或者 EXT2。

網路讀取 ks 配置檔案則用得非常多了,通常用到的是 NFS 方式和 HTTP 方式,格式分別是 ks=nfs:server:/path 和 ks=http://< server> /< path> 。需要注意的是網路方式讀取 檔案時,區域網能自動分配 IP,因為在核心未取得 配置檔案之前,系統是不知道如何配置 IP 地址的,這時就要先通過 DHCP 獲得一個 IP 地址,通過網路讀取 配置檔案。在具備網路條件的環境下,我強烈推薦使用網路方式提供 配置檔案,使用 DHCP 配合 ks 的引數置空功能可以為大量的工作站配置不同的 Kickstart 配置檔案,自動安裝功能各異的系統。我是使用 NFS 方式讀取 檔案。

[root@server shrike]# ls

在待升級系統 GRUB 配置檔案中加入 ks 配置語句:

kernel /boot/vmlinuz9 ro ks=nfs::/data/shrike/

2)經過測試,升級系統所需要的 ks 配置引數相對較少,具體配置引數就不再累述了, UNIX 的風格就是 KISS。以我的配置為例:

reboot

upgrade

lang en_US

keyboard us

mouse none

text

skipx

network --device=eth0 --bootproto=static --ip=

--netmask=--gateway=

--nameserver= --hostname=

nfs --server= --dir=/data/shrike

zerombr yes

bootloader --location=mbr

%post

chkconfig --level 345 sshd on

檢查一切配置無誤就可以開始遠端升級系統了!