原文: http://members.rogers.com/sith.warrior/build.htm
下文為粗略的翻譯.
----------------------------------------*----------------------------------------
好的. 到這兒. 我們假定你有一些成功編譯內核的經驗
盡管這個教程不是很確切復雜的.(以我的標准).有一些地方.
可以算是點經驗. 我將包括建立驅動磁盤和升級內核兩部分,
以 root 根用戶登陸. 打開一個或兩個桌面的控制台.
<輔助資源>
<<"Kernel (compiling) HowTo - Everyone should read this">>
<<"ATA-RAID HowTo - Lots of useful tidbits">>
<<"Linux Migration to Promise RAID-1 HowTo - More good stuff">>
<<"Promise Technologies Inc. - FastTrak source code is in TX2 download">>
<開始>
現在我們按步驟進行, 我們需要內核源代碼和 FastTrak 的源代碼.從 Promise 網站下載 FastTrak 的部分
源代碼.(FastTrak 100 Tx2下載頁面) 保存它到根用戶目錄(root's home)下. 並解壓它:
#tar zxvf 4_ftsrc_b25.tgz
假設我們正工作再 Red Hat 9.0 內核 2.4.20-8 下.(但是我們可以工作在任何 Red Hat 內核)
這時本地目錄:
#/usr/src/linux-2.4.20-8
但是 FastTrak 源代碼, 不知道這個目錄, 所以我們需要創建一個鏈接到這個目錄
#/ln -s /usr/src/linux-2.4.20-8 /usr/src/linux
<主題>
下面分兩部分
建立驅動磁盤
升級內核
[建立驅動磁盤]
從此開始會比較有趣. 多數情況我們在這兒是編譯並重新打包. 但是我們怎麼制作它是更有意思的.
我們需要一張格式化好的軟盤.來放官方的 Promise's FastTrak 驅動程序包
你需要特別標柱的 - 單處理器 (Uniprocessor or SMP). 下載並解壓它到:
/root/FastTrak
這個目錄就像臨時文件夾. 主要用來定制我們的驅動磁盤,
首先,我們需要解壓模塊並且創建我們定制所需要的目錄.
#cd /root/FastTrak
#mkdir modules
#cp modules.cgz modules
#cd modules
#zcat modules.cgz cpio -i -d
#rm -f modules.cgz
#mkdir 2.4.20-8
#mkdir 2.4.20-8BOOT
注意被創建的目錄是服務於每個內核的. 在那有兩個驅動. 一個標准版和一個BOOT版.
這是關鍵的. 當你安裝 Red Hat 時. 安裝程序是建立在 kernel-2.4.20-8BOOT 配置上的.
在進行任何安裝動作之前. 安裝程序搜索磁盤上對應的 FastTrak BOOT 模塊並加載.
假如 BOOT 核心沒有搜索到與之匹配的 BOOT 版的模塊. 加載失敗. 你的FastTrak 設備
將不會被發現.
所以我們還需要編譯BOOT版的模塊. 安裝程序之所以匹配這個內核是必須需要這個配置文件的.
幸運的是 Red Hat 為我們提供了配置文件. 我們不許要編譯這個內核. 僅僅需要配置它:
#cd /usr/src/linux-2.4.20-8
#make clean
#make mrproper
#rm -f .config
#cp configs/kernel-2.4.20-BOOT.config .config
現在.使用你喜歡的文本編輯器來修改 Makefile :
EXTRAVERSION=-8BOOT
...並且你應該這樣去定義變量:
#make dep
到這裡核心配置算完成了. 我們可以繼續去編譯 FastTrak BOOT 版模塊:
#cd /root/ftsrc
#make
#cp FastTrak.o /root/FastTrak/2.4.20-8BOOT
#make clean
下一步的設置是正確的重復上面的步驟來恢復被我們為創建 BOOT 模塊所作的修改,
然後編譯標准核心模塊
#cd /usr/src/linux-2.4.20-8
#make clean
#make mrproper
#rm -f .config
#cp configs/kernel-2.4.20-i386.config .config
#vi Makefile (修改為 EXTRAVERSION=-8)
#make dep
#cd /root/ftsrc
#make
#cp FastTrak.o /root/FastTrak/2.4.20-8
#make clean
至此.我們編譯完成 FastTrak 驅動模塊. 現在我們需要重新打包. modules.cgz 並制作驅動軟盤.
#cd /root/FastTrak/modules
#find . -type f cpio -H crc -o gzip -9 > ../modules.cgz
#cd ..
#rm -fr modules
裝載 DOS 格式的軟盤並復制 FastTrak 目錄下所有的文件到軟盤.
...好了. ..... :-)
完成.
就這樣 ~! 這樣做可以創建你需要的任何版本的 Red Hat 驅動軟盤.
[升級內核]
這個過程已經激怒了不少人. 使用正確的方法配置好的 FastTrak 設備. 啟動並運行你的系統.
你決定這個時候升級內核. 或者編譯一些新功能到你當前內核.
你試著重新啟動, 但是卻得到 'Kernel Panic' . 沒有任何問題. 在這是什麼錯誤.
按照 Red Hat 從 RAID 設備的啟動順序. 它必須首先加載 FastTrak (scsi & sd) 設備驅動
#cd /usr/src/linux-2.4.20-8
#make clean
#make mrproper
#make xconfig
(如果需要請先修改 Makefile 文件中的 EXTRAVERSION = -8custom)
#make dep
#make bzImage
#make modules
#make modules_install
#make install
假如你得到一個錯誤關於 FastTrak.o 當前內核版本沒有被尋找到. 正確的從/etc/modules.conf
裡移除 FastTrak 關聯並重新 'make'
編譯內核.那樣我們可以正確的執行並產生一個內核映象文件和一個initrd(initial ramdisk)
文件為你定制的的內核 (custom kernel). 但是它不考慮 FastTrak (和 scsi & sd) 模塊是需要
按順序的啟動新內核. 為此, 我們需要創建一個新的 initrd 文件. 但是首先需要更新 FastTrak 驅動:
#cd /root/ftsrc
#make
#cp FastTrak.o /lib/modules/kernel-2.4.20-8custom/drivers/scsi
這樣編譯放置是為了更新 FastTrak 驅動, 在那兒內核能找到他們. 我們繼續編譯 initrd 映象:
#cd /usr/src/linux-2.4.20-8
#rm -f /boot/initrd-2.4.20-8custom.img
#mkinitrd --preload scsi --preload sd --with FastTrak /boot/initrd-2.4.20-8custom.img 2.4.20-8custom
OR
#new-kernel-pkg --depmod --mkinitrd --install 2.4.20-8custom
注意.我們如何在加載FastTrak模塊前 'preload' scsi & sd 模塊. 這是認出 FastTrak 驅動前必須的
就像 psuedo-scsi 設備代替一個真實的 RAID 陣列. 創建一個真實的本地 Linux ATA-RAID 設備.請
閱讀 HowTo. 我曾經考慮轉換我的設置到本地的 ATA-RAID 但是又背離了我的本意. 它將僅僅能被GRUB引導.
而LILO不能. 並且由於我害怕硬盤只能被GRUB引導... 並且由於GURB 比較好. 但是我放棄了.
好了. 至此 在訪問RAID陣列前 Initial Ramdisk 加載 FastTrak 驅動模塊 是沒有任何錯誤了.
注意.我們如何在加載FastTrak模塊前 'preload' scsi & sd 模塊. 這是認出 FastTrak 驅動前必須的
就像 psuedo-scsi 設備代替一個真實的 RAID 陣列. 創建一個真實的本地 Linux ATA-RAID 設備.請
閱讀 HowTo. 我曾經考慮轉換我的設置到本地的 ATA-RAID 但是又背離了我的本意. 它將僅僅能被GRUB引導.
而LILO不能. 並且由於我害怕硬盤只能被GRUB引導... 並且由於GURB 比較好. 但是我放棄了.
好了. 至此 在訪問RAID陣列前 Initial Ramdisk 加載 FastTrak 驅動模塊 是沒有任何錯誤了.