查看單個文章
舊 2004-07-26, 10:44 AM   #7 (permalink)
mancool 帥哥
長老會員
 
mancool 的頭像
榮譽勳章
UID - 2396
在線等級: 級別:11 | 在線時長:167小時 | 升級還需:25小時級別:11 | 在線時長:167小時 | 升級還需:25小時級別:11 | 在線時長:167小時 | 升級還需:25小時級別:11 | 在線時長:167小時 | 升級還需:25小時級別:11 | 在線時長:167小時 | 升級還需:25小時級別:11 | 在線時長:167小時 | 升級還需:25小時
註冊日期: 2002-12-06
住址: 姆大陸
文章: 1356
現金: 776 金幣
資產: 39984 金幣
預設 遠端昇級Linux系統

本文簡要地介紹了使用 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目錄中看到這些驅動模組
文件了。

3.從哪裡安裝

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

  [root@server root]$ cat /etc/exports /data/shrike 192.168.0.42/31(ro)
  [root@server shrike]# ls
  ks.cfg shrike-i386-disc1.iso shrike-i386-disc2.iso shrike-i386-disc3.iso

  4.製作 kickstart

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

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

  軟碟讀取 ks 配置文件相對較簡單,將 ks.cfg 置於軟碟根目錄下即可,啟動後輸入 linux ks=floppy
即可開始 ks 安裝;

  光碟讀取 ks 配置文件需要在製作啟動光碟時加入 ks.cfg 配置文件至根目錄下,啟動後輸入 linux
ks=cdrom:/ks.cfg 即可開始 ks 安裝 ;

  硬碟讀取 ks 配置文件一般是從光碟引導後,再讀硬碟中的 ks 配置文件(此時可能沒有軟式磁碟
機和網路支持),啟動後輸入 linux ks=hd:fd0:/ks.cfg,限制條件是該硬碟分區必須是 VFAT 或者
EXT2;

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

  [root@server shrike]# ls
  ks.cfg shrike-i386-disc1.iso shrike-i386-disc2.iso shrike-i386-disc3.iso

  在待昇級系統 GRUB 配置文件中加入 ks 配置語句:

  kernel /boot/vmlinuz9 ro ks=nfs:192.168.0.19:/data/shrike/ks.cfg

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

  reboot
  upgrade
  lang en_US
  keyboard us
  mouse none
  text
  skipx
  network --device=eth0 --bootproto=static --ip=192.168.0.42 --netmask=255.255.255.0 --gateway=
192.168.0.253 --nameserver=192.168.0.4 --hostname=huter.xtu.edu.cn
  nfs --server=192.168.0.19 --dir=/data/shrike
  zerombr yes
  bootloader --location=mbr

  %post
  chkconfig --level 345 sshd on

  3)檢查一切配置無誤就可以開始遠端昇級系統了!重啟系統後,使用 ping 指令一直 ping 該昇級系
統的 IP,如無意外則大約半小時以後便可以看到該主機不可達,然後又恢復正常,使用 SSH 登入該主
機,再做一些系統參數調整(特別是 APACHE 和 PHP 的調整),昇級就大功告成了!


  4)失敗總結。事情總不是一帆風順的,出錯在所難免,所以大家在實際操作之前還是要多加測
試,才可一舉成功。一般的錯誤有:

  系統記憶體、硬碟分區、交換機分區空間不夠,導致昇級無法完成,解決辦法是在昇級前要留有
充分的空間,如果硬碟空間不夠,則刪除部分不用的軟體包,在此我向大家推薦一個小指令碼[4],是
從水木清華 BBS 上獲得,能解決 Red Hat Linux 刪除 RPM 軟體包時的依賴關係。

  滑鼠配置。滑鼠配置語句一般可以寫為 mouse none,也可以不接參數自動檢測;另外如果沒有滑
鼠是不能使用圖形模式安裝的,所以還是使用 text 配置指令明確指定使用文本方式安裝,反正安裝程
序我們也不會看著顯示器,是吧?

  配置語法錯誤。kickstart 一直在不斷發展,如果語法錯則會無法完成安裝,一般錯誤有 network 配
置語法,以前的版本配置語法是 network --static --ip 198.168.254.253......而最新的 Red Hat 9 配置語法是
network --device=eth0 --bootproto=static --ip=192.168.0.42......,所以對 ks.cfg 配置文件的檢查一定要細
心。

  ks.cfg 配置文件盡可能寫得精簡,可以省卻的就省掉,特別是昇級時不會對 ks.cfg 中的軟體包配置
段進行處理,所以寫了也無益,反倒有可能讓安裝程序讀取到錯誤的配置行而停止自動安裝。

  5.總結

  遠端自動昇級只是對 kickstart 套用的一個自我挑戰,實際套用場合可能不會太多,但是在大規模
網路安裝中,要做到一開啟工作站就能完全自動安裝,一定要將 DHCP 和 kickstart 密切結合才能達到
事半功倍的效果,試想裝兩百台工作站的時候每個 kickstart 文件出錯三次,你就得在每台電腦上操作
三次,而一個完美的 kickstart 文件甚至可以讓您連顯示器都不接就完全安裝好系統,這是一件多少愉
快的事情!
__________________
提供下載之附件為測試及學術用途! 必須24小時內刪除,不能轉讓或出售!
http://img.photobucket.com/albums/v478/mancool/Photo/normal_100_0095.jpg
請支持購買正版,尊重智識產權!
mancool 目前離線  
送花文章: 1, 收花文章: 69 篇, 收花: 155 次
回覆時引用此帖