woolzey 发表于 2006-4-20 23:15:53

如果用ML 2.0的预编译内核,并且在initrd里提供usb相关模块,rootdelay参数是没有用的。我不知道用自己编译出来的内核是否rootdelay就有效了。


可以这样做

先在硬盘上编译包含必要驱动的内核,包括usb和scsi的驱动及其它必要的驱动等,而不是把这些驱动编译成模块,其它驱动可以编译为模块

把编译好的内核复制到U盘或移动硬盘上,修改引导配置文件,给内核加上延迟参数rootdelay=,如grub:
kernel /boot/vmlinuz-2.6.13.4 ro root=/dev/sda3 rootdelay=5 vga=791 splash=slient

Grub可以安装在U盘或移动硬盘的MBR

tyfrlj 发表于 2006-4-20 23:31:56

rootdelay参数是内核自身支持的,其支持代码在 init/do_mounts.c
在initrd里提供usb相关模块是不行的,因为在访问initrd映像文件之前,必须加载USB和SCSI的驱动,内核才能访问在移动硬盘或U盘上的分区、文件。

woolzey 发表于 2006-4-20 23:36:37

读initrd的过程是由grub通过BIOS进行的,并不通过linux内核,所以是不需要linux中关于usb的模块的。

至于rootdelay,我不清楚它在哪儿产生延迟,如果是在mount initrd之前产生延迟,那么把模块编译进内核加rootdelay应该就可以了,因为这样可以保证从加载驱动模块到initrd上的init脚本mount真正的根文件系统之间有足够的时间。而把模块放在initrd上这个参数就没有用。这个跟实验结果似乎比较符合。

不过一劳永逸的方法还是完善initrd里面的启动脚本,现在这个太简陋了。我看Debian里面乱七八糟的脚本一大堆,能判断设备是否就绪,似乎还能把nfs做为根文件系统。

rootdelay参数是内核自身支持的,其支持代码在 init/do_mounts.c
在initrd里提供usb相关模块是不行的,因为在访问initrd映像文件之前,必须加载USB和SCSI的驱动,内核才能访问在移动硬盘或U盘上的分区、文件。

tyfrlj 发表于 2006-4-20 23:52:40

所以我不喜欢用initrd映像二级启动,我都是一个内核启动的

woolzey 发表于 2006-4-21 00:00:32

如果要做通用的系统的话搞成一个核有点太大,所以debian把几乎所有都编译成模块,然后全部放到initrd里面,这个方法似乎还不错。

不过对Magic Linux来说,从USB启动需要的模块除了一个ehci-hcd以外已经全都编译进去了,所以再多加一个也无所谓。这样也简单多了,以后需要USB启动只要加一个rootdelay参数。

所以我不喜欢用initrd映像二级启动,我都是一个内核启动的

tyfrlj 发表于 2006-4-21 00:07:59

我说的一个内核并不是把所有驱动都加进去,只要启动时需要的驱动编译进就OK了
页: 1 [2]
查看完整版本: 请问怎么把linuxmagic2.0安装到USB移动硬盘上阿