本文簡要地介紹了使用 Red Hat LINUX 的 kickstart 及網路安裝功能方便快捷地升級己有 LINUX 系統,文中的例子是從 Red Hat 7.2 遠程升級到 Red Hat 9.0。
自從 5.2 版開始, Red Hat LINUX 便 增加了一個稱為 kickstart 的功能,其主要是為了減少安裝過程中需要互動式 (interactive)的系統參數輸入,提高安裝效率。將其運用於自動安裝 LINUX,特別是需要在短時間迅速安裝至成百台 LINUX 工作站這種特殊場合尤為適用,Stanford University 的 Menlo Park 已經有精彩的文章介紹,在此不再累述[1]。
1.升級前系統檢查
在開始升級系統之前,有一些容易忽視的問題容易中斷 kickstart 過程,這些問題一般是系統配置達不到安裝最低要求,所以最好能在自動升級之前有實驗條件先進行充分的測試再實施。 Red Hat LINUX 系統發展至今,已經不是低得 386 都可以跑得很流暢的了(Red Hat 9 已經不能在 586 以下的機器上運行),所以在升級之前有必要對系統進行充分的檢查,主要包括以下方面:
儲存空間是否足夠。Red Hat 9 最少需要 32M 的記憶體和 472M 的硬碟,記憶體一般是不會成問題的,但是我未能在一個 500M 硬碟上裝好系統,當然現在大家的硬碟一般還是比較大,都可以進行完整安裝了。LINUX 的系統檔案主要集中於 /usr 下,/ 下面也有一部分,一般不安裝 X 系統和大型軟體的情況下,/usr 使用 1G 空間、/ 使用 500M 空間都可以工作得很好了。我的系統從 7.2 升級到 9.0 系統,/usr 和 / 的使用方式大約較升級前增加了 30% 的樣子,所以如果大家的 /usr 和/使用率不是太高的話,磁碟空間 的限制一般是不會有什麼問題的。
交換分區空間是否足夠。Red Hat 9 與 7.2 的一個不易發現的區別便在此,7.2 系統是可以使用少於兩倍實體記憶體容量的交換分區,兩倍或者多於兩倍實體記憶體的交換分區只是建議大小;而 Red Hat 9 則必須使用兩倍或者多於兩倍實體記憶體大小的交換分區,所以如果你的LINUX系統只有少於兩倍的交換分區,那就只有再劃分一個交換分區或者增加一個分頁檔,或者撥下你的記憶體讓系統交換分區大於兩倍實體記憶體,我建議使用加一個交換分區的辦法,增加分頁檔還無法在 kickstart 中實現,至於撥下記憶體,遠程升級就根本沒有辦法撥下記憶體了。
其他雜項。系統在自動升級過程中會檢測一系列的硬體,如果選擇圖形介面安裝,但是沒有滑鼠,系統則會提示使用文本方式安裝;或者只有 32M 記憶體則系統也不能進行圖形介面安裝,這些都可以在自動安裝設定檔裡進行修改以避免其發生,但是記下系統的所有硬體設定製成一個清單會對製作自動設定檔案有較大的協助。
2.如何啟動安裝程式
首先從 Red Hat LINUX 的啟動安裝程式開始。從 Red Hat LINUX 的官方安裝裝手冊上我們可以看到主要的幾種啟動方式:CDROM、軟碟機及從 dos 環境運行光碟上的 dosutils\\autoboot.bat 檔案三種方式,對於我們來說這還是不夠的,我們的 LINUX 工作站是沒有軟碟機和光碟機的,當然更加不會有 dos。通過分析各發行版第一張光碟片的 /images目錄下的 boot*.img 檔案我們發現,這些啟動鏡像檔案其實只有兩個主要的檔案:vmlinuz 核心和 initrd.img,initrd.img是一個壓縮的最小檔案系統[2]。將這兩個檔案提取到己有的 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.img bootnet
[root@client mnt]# cd bootnet/
[root@client bootnet]# ls
boot.msg initrd.img options.msg rescue.msg splash.lss syslinux.png
general.msg ldlinux.sys param.msg snake.msg syslinux.cfg vmlinuz
[root@client bootnet]# cp vmlinuz /boot/vmlinuz8
[root@client bootnet]# cp initrd.img /boot/initrd8
[root@client bootnet]# vi /boot/grub/menu.lst
添加如下三行:
title Upgrade to Psyche via NFS
kernel /boot/vmlinuz8 ro
initrd /boot/initrd8
注意:以上是沒有 /boot 分區的配置,有 /boot 分區則不需要前面的 /boot,見 GRUB 設定檔中 NOTICE 部分。
重新啟動後即可選擇網路升級,和用 bootnet 磁碟片引導系統的效果是一樣的。在這裡我們將使用 Red Hat 9 的另外一個開機檔案,這也是最近才在 Red Hat 發行版中出現的 boot.iso。將 Red Hat 9 發行版第一張光碟片的 ISO 鏡像檔案裝載後,我們發現其下的 images 目錄中較 7 系列發行版多了一個 boot.iso 檔案(8.0 第一張光碟根目錄下也有類似目錄),將其裝載後發現其中包含一個比較大的核心和 initrd 檔案,該initrd 包含了安裝系統時常見硬體的驅動,我使用該檔案啟動時能自動識別出 PM133 主板的顯卡及比較少見的adaptec ANA-6911TX 網卡(starfire.o),所以強烈推薦使用 boot.iso 自動升級,可以省卻驅動的麻煩。值得一提的是 Red Hat 9 現在已經不在 boot.img 中內建網卡驅動了,而 Red Hat 8 在 bootnet.img 中帶了一些常見網卡的驅動的(intel 55X系列、tulip、8139等),大家有興趣可以參考[2]中提到的方法解壓一下 bootnet.img 中的 initrd.img 檔案就可以在lib目錄中看到這些驅動模組檔案了。