PromiseFastTrakRaid驱动的解决办法
原文: 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 驱动模块 是没有任何错误了.