Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5760610
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: LINUX

2006-07-29 14:57:52

在前一段时间我们在做嵌入式的时候,要把系统作到U盘上去。遇到了一个问题就是系统如何从U盘启动,因为如果按照正常的流程来的话,那么U盘还未初始化完毕就要进行加载,这样将导致系统引导失败。

可以有几个方法来解决这个问题:

1)先生成initrd文件,系统启动的时候是先在内存中启动一个小型系统,再把控制权交给U盘上的根系统。
修改initrd.img中linuxrc文件中的sleep,将时间改得长一点。
将USB的驱动编译到内核里面。

2)向内核打补丁


3)2.6.11以后的内核不用对USB设备启动打补丁了,因为内核里已经包含了该功能,
只要在引导内核时给内核传递一个参数rootdelay即可,如下(Grub实例),rootdelay=5 表示等待5秒,我经过测试,OK!

root (hd0,1) #我从U盘启动时Grub把U盘认成hd0,所以(hd0,1)就是sda2
kernel /boot/vmlinuz-2.6.13.4 ro root=/dev/sda2 rootdelay=5 vga=791
boot

其支持代码在 init/do_mounts.c

第三条我是最近才看到的,要是当时看到的话,就可以省掉很多时间。
阅读(1814) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~