LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1738|回复: 14

U盘启动 linux 需要特殊设置?

[复制链接]
发表于 2008-7-9 15:48:12 | 显示全部楼层 |阅读模式
把我的笔记本 LFS 的系统(完善且正常使用的系统)直接复制到 USB KEY,用GRUB 引导,结果出现 kernel 启动界面后 马上 kernel panic!手工进入 GRUB 后,发现只要是用U盘上的 GRUB 引导,系统就不能识别 U 盘设备(本来应当是/dev/sda),而用硬盘上的 GRUB 引导,系统正常识别出 U 盘设备 /dev/sdb !

各位专家给个意见?

对了参照本网站上的帖子用过了  rootdelay=10, 无效果。
 楼主| 发表于 2008-7-11 17:18:10 | 显示全部楼层
还真是麻烦啊。已经获得的线索如下:

1、kernel 的 usb mass storage 设置必须是 Y,不能是 M;否则 kernel 在引导根文件系统时并不能正常挂载 U 盘上的系统;

2、用 grub 引导 kernel 时,必须加 rootdelay 参数,否则还是不能正常挂载 U 盘上的根文件系统;

3、在 BIOS 和 GRUB 中,盘的顺序是固定的,比如在我的笔记本上,可以在BIOS中设置启动顺序为:
   1 -- USB KEY
   2 -- 系统固定硬盘
   3 -- USB 移动硬盘
这样当我用 USB KEY 上的 GRUB 启动系统时,三个盘的顺序为:
   1 -- USB KEY   --hd0
   2 -- 系统固定硬盘 --hd1
   3 -- USB 移动硬盘 --hd2
这说明 grub 是按BIOS启动顺序来安排盘顺序的;而且当用机器的启动选项选择不同的盘启动时, grub 会自动调整启动盘的顺序为 hd0。

但是!!当 kernel 启动后,在我的机器上并不认这个顺序,它总是把系统硬盘安排为 /dev/sda,而其它两个盘的顺序不清楚是怎么确定的,所以造成了我前面总是启动不成功!

对于这个问题不知道是否有什么资料?
回复 支持 反对

使用道具 举报

发表于 2008-7-11 21:02:49 | 显示全部楼层
Post by linux001;1873513
还真是麻烦啊。已经获得的线索如下:

1、kernel 的 usb mass storage 设置必须是 Y,不能是 M;否则 kernel 在引导根文件系统时并不能正常挂载 U 盘上的系统;

2、用 grub 引导 kernel 时,必须加 rootdelay 参数,否则还是不能正常挂载 U 盘上的根文件系统;

3、在 BIOS 和 GRUB 中,盘的顺序是固定的,比如在我的笔记本上,可以在BIOS中设置启动顺序为:
   1 -- USB KEY
   2 -- 系统固定硬盘
   3 -- USB 移动硬盘
这样当我用 USB KEY 上的 GRUB 启动系统时,三个盘的顺序为:
   1 -- USB KEY   --hd0
   2 -- 系统固定硬盘 --hd1
   3 -- USB 移动硬盘 --hd2
这说明 grub 是按BIOS启动顺序来安排盘顺序的;而且当用机器的启动选项选择不同的盘启动时, grub 会自动调整启动盘的顺序为 hd0。

但是!!当 kernel 启动后,在我的机器上并不认这个顺序,它总是把系统硬盘安排为 /dev/sda,而其它两个盘的顺序不清楚是怎么确定的,所以造成了我前面总是启动不成功!

对于这个问题不知道是否有什么资料?


关于启动顺序的问题,你可以使用分区UUID而不是设备名来进行mount等操作。
比如,grub中启动的行可以写为
kernel          /my-kernel-image root=UUID=48e89736-2980-4dd6-9cbd-28ff29243bc0 ro single

至于uuid,只要在一个能启动的系统上运行如下命令:
ls -l /dev/disk/by-uuid/
就能得到uuid和设备名的对应表。
回复 支持 反对

使用道具 举报

发表于 2008-7-12 01:11:26 | 显示全部楼层
Post by linux001;1873513
还真是麻烦啊。已经获得的线索如下:

1、kernel 的 usb mass storage 设置必须是 Y,不能是 M;否则 kernel 在引导根文件系统时并不能正常挂载 U 盘上的系统;

2、用 grub 引导 kernel 时,必须加 rootdelay 参数,否则还是不能正常挂载 U 盘上的根文件系统;

3、在 BIOS 和 GRUB 中,盘的顺序是固定的,比如在我的笔记本上,可以在BIOS中设置启动顺序为:
   1 -- USB KEY
   2 -- 系统固定硬盘
   3 -- USB 移动硬盘
这样当我用 USB KEY 上的 GRUB 启动系统时,三个盘的顺序为:
   1 -- USB KEY   --hd0
   2 -- 系统固定硬盘 --hd1
   3 -- USB 移动硬盘 --hd2
这说明 grub 是按BIOS启动顺序来安排盘顺序的;而且当用机器的启动选项选择不同的盘启动时, grub 会自动调整启动盘的顺序为 hd0。

但是!!当 kernel 启动后,在我的机器上并不认这个顺序,它总是把系统硬盘安排为 /dev/sda,而其它两个盘的顺序不清楚是怎么确定的,所以造成了我前面总是启动不成功!

对于这个问题不知道是否有什么资料?
Read this:

http://www.linuxsir.cn/bbs/showthread.php?t=309148
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-12 16:42:29 | 显示全部楼层
Post by 地球发动机;1873571
关于启动顺序的问题,你可以使用分区UUID而不是设备名来进行mount等操作。
比如,grub中启动的行可以写为
kernel          /my-kernel-image root=UUID=48e89736-2980-4dd6-9cbd-28ff29243bc0 ro single

至于uuid,只要在一个能启动的系统上运行如下命令:
ls -l /dev/disk/by-uuid/
就能得到uuid和设备名的对应表。


这样虽然kernel引导了,但是由于 fstab 中根分区的定义不对,所以系统还是没法用。
回复 支持 反对

使用道具 举报

发表于 2008-7-12 16:47:40 | 显示全部楼层
Post by linux001;1873793
这样虽然kernel引导了,但是由于 fstab 中根分区的定义不对,所以系统还是没法用。

晕死。你就不会把fstab也换成用UUID呀?给你个参考:
# /dev/sda6
UUID=a13f2e31-d00e-43c4-b3ce-359c544faa8f     /boot           ext3    relatime        0       2
这是我机器上的fstab里面的一行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-12 16:58:14 | 显示全部楼层
Post by d00m3d;1873636
Read this:

http://www.linuxsir.cn/bbs/showthread.php?t=309148


关键问题是在U盘中预先写 fstab 时无法确定根分区的位置,这个才是本质的困难!比如你做好的U盘,想在我的机器上用一下:你假设为了U盘先于硬盘启动,我的机器上必然在BIOS中将启动顺序设为 USB KEY先,就是 hd0,于是你把自己U盘的相关设置写为
menu.lst:
    root (hd0,0)
    kernel /boot/lfskernel-2.6.24.7 rootdelay=10 root=/dev/sda1

fstab:
    /dev/sda1       /            ext3  defaults        1     1


这样,你这块U盘铁定在我的笔记本上是不能使用的!因为如果系统里面只有这个 USB KEY 和硬盘,USB KEY铁定会变成 /dev/sdb!虽然你可以通过采用手式输入命令的方式来修改grub的启动项使它正确,但是 fstab 你确无能为力!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-12 17:04:20 | 显示全部楼层
地球发动机:

能根据我的描述写一个完整的 menu.lst 和 fstab 项吗(假设U盘上系统在分区1)?如果都能用 UUID 来识别分区,那么就可以使USB KEY启动成为可能。因为既然我的机器这样怪,非常可能还有其它的机器会有类似问题。只有找到通用的识别方法才能让USB KEY 真的能用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-12 17:11:21 | 显示全部楼层
找到了相关说明,看来对于 USB KEY,必须采用UUID来标识相关启动分区才能正常使用。
回复 支持 反对

使用道具 举报

发表于 2008-7-12 17:15:54 | 显示全部楼层
Post by linux001;1873803
地球发动机:

能根据我的描述写一个完整的 menu.lst 和 fstab 项吗(假设U盘上系统在分区1)?如果都能用 UUID 来识别分区,那么就可以使USB KEY启动成为可能。因为既然我的机器这样怪,非常可能还有其它的机器会有类似问题。只有找到通用的识别方法才能让USB KEY 真的能用。


其实没什么难的呀,就是把所有的/dev/sdx都改成UUID=xxx得了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表