[问题]关于不支持从usb存储设备启动的机器

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

#106

帖子 ptptptptptpt » 2008-06-06 18:48

无语。。。

对了,billbear 试试用我给你的 initrd 通过 kexec 能不能启动内置硬盘上的 ubuntu ??
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#107

帖子 billbear » 2008-06-08 17:04

bean:
今天我到少妇街下载了官方的elilo, 并根据您在100楼的提示做了
少妇街上有3个efi,结果分别是
Error: Unsupported while loading elilo-3.8-ia64.efi
Error: Unsupported while loading elilo-3.8-x86_64.efi
Error:Load Error returned from elilo-3.8-ia32.efi
我想elilo主要是给ia64,ia32开发的,在macbook上可能要重新编译
而上一次我用的e.efi,我想是从mactel-linux.org上下载的,为mac重新编译过
所以,也许我需要自己编译,过一阵子再说,呵呵
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#108

帖子 billbear » 2008-06-08 17:12

ptptptptptpt 写了:无语。。。

对了,billbear 试试用我给你的 initrd 通过 kexec 能不能启动内置硬盘上的 ubuntu ??
可以的,100%
我这内置硬盘又是另一种诡异,进内置硬盘recovery mode再手动运行kexec,上次试是说设备忙,今天试了几次是在loading new kernel 之后死掉。而你的initrd加kexeccfg却很好。内置硬盘分区是GPT/MBR hybrid 来着。
另,今天用你给我的咚咚引导u盘成功率高了不少,今天人品好,呼呼
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

#109

帖子 ptptptptptpt » 2008-06-08 19:28

哈哈,近来看x档案,那真叫一个诡异集中营
bean
帖子: 238
注册时间: 2008-06-03 12:25

#110

帖子 bean » 2008-06-08 19:55

billbear 写了:bean:
今天我到少妇街下载了官方的elilo, 并根据您在100楼的提示做了
少妇街上有3个efi,结果分别是
Error: Unsupported while loading elilo-3.8-ia64.efi
Error: Unsupported while loading elilo-3.8-x86_64.efi
Error:Load Error returned from elilo-3.8-ia32.efi
我想elilo主要是给ia64,ia32开发的,在macbook上可能要重新编译
而上一次我用的e.efi,我想是从mactel-linux.org上下载的,为mac重新编译过
所以,也许我需要自己编译,过一阵子再说,呵呵
呵呵,看来elilo的兼容性还没有grub好噢~~~

另外,framebuff的问题基本上已经解决了,不过有些参数是需要手动获得的。我现在研究有没有自动获得的方法。
bean
帖子: 238
注册时间: 2008-06-03 12:25

#111

帖子 bean » 2008-06-09 1:43

ok,新版本出来了,试一下 grub.efi.1

启动参数要加上 video=vesafb 或者 video=efifb,以选择合适的framebuff。

启动后,屏幕可能再次花掉。这应该是agppart引起的。解决的话需要在/etc/rcS.d里把启动udev的项目去掉。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#112

帖子 billbear » 2008-06-09 13:29

i sent you a private message bean
klose911
帖子: 106
注册时间: 2008-02-01 17:18

#113

帖子 klose911 » 2008-07-24 7:29

请问个位大侠,研究有结果了吗?
我也希望通过外置硬盘来启动我的macbook, 希望各位能指点一下!
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#114

帖子 billbear » 2008-07-24 12:52

由于讨论过程里都是调试信息,后来我们就用站内短信联系而不在这里占用版面了。
我总结一下目前的进展:

1. 如果从 efi 引导:
ubuntu 的话要等 8.10 的内核,如果你愿意当小白鼠的话可以现在就装。
fedora 的内核已经可以了。

2. 可以用 pt 的方法做一张带 kexec 的预引导的 linux 启动光盘,他的 linux 内核起来以后认到 usb 设备,然后 kexec 换 usb 设备上的内核,但是有时会掉进 busybox,原因不明。

3. 可以做一张带 usb 驱动的dos 启动光盘,在 dos 命令行下用 linld 引导 usb 设备上的linux,但是你的usb存储设备上要保留一个fat分区并且在这里保存 /boot 的一份拷贝,并且 dos 的 usb 驱动可靠性值得怀疑。

4. 可以考虑68楼提到的PLoP的未来版本。

(2,3,4提到的启动光盘我是打算量产在装 linux 的 u 盘里的,如果是移动硬盘,就需要一张真正的光盘,我想你也不会考虑;由于量产以后我的 u 盘剩下的部分不是 usb-hdd 格式,本身失去了从 usb-hdd 引导的可能性,就需要从量产光盘引导的绝对可靠性,由于2,3,4都没有绝对可靠性,不能保证每一台 PC 和 MAC 都能引导,所以已经放弃量产。)

5. 如果你不介意在内置硬盘里保留 /boot 的一份拷贝,启动外置硬盘上的 linux 本来是很简单的,只是这严格说来不算是纯粹从外置硬盘启动,并且升级了内核以后要更新内置硬盘里 /boot 的拷贝。

所以,如果是针对 macbook,1的方法应该已经可以实现,至少 bean 大侠已经实现,我还没有空测试,但我想是没有问题的,过几天测试一下;如果针对其它不能从移动硬盘启动的pc bios,只好用5的方法,或者把内核直接刻在引导光盘里,但是光盘要随着内核而更换,不能像 2,3,4的愿望那样用一张不变的光盘--其实还可以有一个想法:

(6). 做一张 grub2 (MBR分支而非EFI的) 启动光盘。这个将来要请教 bean 大侠的。
bean
帖子: 238
注册时间: 2008-06-03 12:25

#115

帖子 bean » 2008-07-24 18:27

从efi启动需要留意的问题,可以参考我在grub2 wiki上写的文章:

http://grub.enbug.org/TestingOnMacbook

最新的efi处理代码已经在grub2 svn上了,可以下载来编译。怕麻烦的话,也可以使用我预先编译的版本:

http://grub4dos.sourceforge.net/grub2/grub.efi.1

使用时改名为grub.efi就行了。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#116

帖子 billbear » 2008-07-24 20:32

刚刚在移动硬盘装了 fedora 9 测试了一下 efi grub2 从 usb 引导,成功了。
过程是,首先在移动硬盘装好 fedora,然后下载楼上 bean 的 grub.efi,放在移动硬盘的一个 fat 分区根目录,然后在这个 fat 分区写一个 grub.cfg,基本是按照 fedora 的 /boot/grub/grub.conf (就相当于 ubuntu 的 menu.lst) 以 grub2 的语法改写一下,另外加上video=efifb agp=off :

menuentry "Fedora (2.6.25-14.fc9.i686)"
{
set root=(hd1,3)
linux /boot/vmlinuz-2.6.25-14.fc9.i686 ro video=efifb agp=off root=UUID=c5d84243-ee39-41ad-9416-d0bab75dffe0 rhgb quiet
initrd /boot/initrd-2.6.25-14.fc9.i686.img
}
在 set root= 这里注意 grub2和 grub legacy的不同,分区是从1算起的。

然后,在/etc/modprobe.d/blacklist里加入
blacklist agpgart
blacklist intel_agp

然后,在/etc/X11/xorg.conf,Device一段里,加入driver:
Section "Device"
Identifier "Configured Video Device"
Driver "fbdev"
EndSection

就可以了。
在这期间 bean 做了大量的程序调试工作,我是他遥控的远程小白鼠。修成正果了。
klose911
帖子: 106
注册时间: 2008-02-01 17:18

#117

帖子 klose911 » 2008-07-25 9:08

照各位的方法测试了一下, 可惜还是不成功, 内核和initrd以及usb驱动都成功加载,但是还是没有办法mount分区, 出错信息如下:
...........................................................
Tring to resume from /dev/sdb3
Unable to access resume device /dev/sdb3
Creating root device
Mounting root file system
mount: could not find filesystem '/dev/root'
Setting up new root fs
setup root: moving /dev/failed : No such file or directory
no fstab , sys , mounting internal defaults
setup root : error mounting /proc : No such file or directory
error mounting /sys : No such file or directory
Mount failed for selinuxfs on /selinux : No such file or directory
Switchroot to new root and running init
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed : No such file or directory
Boot has failed


这是我移动硬盘的分区情况, 用的是MBR格式

Device Boot Start End Blocks Id System
/dev/sdb1 1 131 1048576 b W95 FAT32
/dev/sdb2 * 132 156 200812+ 83 Linux
/dev/sdb3 157 287 1052257+ 82 Linux swap / Solaris
/dev/sdb4 288 19457 153983025 5 Extended
/dev/sdb5 288 4111 30716248+ 83 Linux

/dev/sdb1是放grub.efi的fat分区, /dev/sdb2是/boot(mount point), /dev/sdb3是swap分区, /dev/sdb5是/(mount point)

grub.cfg的文件内容如下

menuentry "Linux" {
# Set the root device for Linux.
root=(hd1,2)
# Load the loader.
linux /vmlinuz-2.6.25-14.fc9.i686 ro video=vesafb agp=off root=/dev/sdb5 rhgb
initrd /initrd-2.6.25-14.fc9.i686.img
}

/etc/X11/xorg.conf和/etc/modprobe.d/blacklist也修改过了
我的macbook是intel core2duo 2.0GHZ, refit版本是0.11, EFI固件的版本是 1.10
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#118

帖子 billbear » 2008-07-25 9:59

首先,确认一下你的 fc9 可以在其它的 PC 启动。当然,要重新配一下 x,启动进入命令行,先备份一下 xorg.conf -- (当然,如果你原来是在 mac 上直接光盘启动装在移动硬盘,这个 xorg.conf 才有备份的价值)然后运行 setup,选择重配 x, 然后重新启动。
root=(hd1,2) 确认一下对不对,不过内核可以加载的话应该是对的,但还是确认一下。在 grub 菜单按c 进入 grub 命令行,ls 列出你的硬盘和分区。这里有个小 bug,我列出来3个硬盘,

(hd0) (hd0,1) (hd0,5)
(hd1) (hd1,1) (hd1,3) (hd1,5) (hd1,6)
(hd2) ....

其中,(hd2) 是我的内置硬盘,(hd1)是我的移动硬盘,(hd0)并不存在,从 uuid 看出来,(hd0,1) 就是 (hd1,5) ,(hd0,5) 好像是(hd1,6)。
移动硬盘是 MBR 的,(hd1,1)是个 fat主分区,(hd1,2) 是扩展分区,(hd1,3)是装fedora的主分区,(hd1,5)是ubuntu逻辑分区,(hd1,6)是swap逻辑分区
好像是,它把整个扩展分区当作一块硬盘,叫做(hd0)。所以我就只好写(hd1,3)。如果是 gpt 的磁盘好像没有这个问题,移动硬盘会是(hd0),内置反而是(hd1)。

你可以 ls (hd1, 按 tab 看所有分区,进一步 ls (hd1,x)/ 按tab看文件系统,然后可以这样一层一层看文件

然后,
linux /vmlinuz-2.6.25-14.fc9.i686 ro video=vesafb agp=off root=/dev/sdb5 rhgb
最好写uuid,不会错。照着/boot/grub/grub.conf 抄

先试试。
klose911
帖子: 106
注册时间: 2008-02-01 17:18

#119

帖子 klose911 » 2008-07-25 10:09

我在grub的命令行下, 手动设定kernel和initrd,没有出错,但是boot的时候就不行
uuid我刚才也试过了,也是同样的问题
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#120

帖子 billbear » 2008-07-25 10:38

其它 PC 可以启动吗?你可以不重配X,能启动到命令行就行。
另外,你用 ls 是不是也看到 3 块硬盘?担心这样会对找到根分区不利。
我昨天就是担心 efi 的 grub2 不认逻辑分区,特地弄了个主分区来装,差点想用 gpt 磁盘了,不过不想干掉里面的 ubuntu。我怀疑就是 / 在逻辑分区的缘故。还有,为什么都喜欢分 /boot 呢?我实在没有看出单独的/boot有什么意思。把 / 放在 sdb2 多好
回复