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

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
bean
帖子: 238
注册时间: 2008-06-03 12:25

#46

帖子 bean » 2008-06-03 23:33

奇怪了,内存都不见了。试试grub.efi.2。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

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

#47

帖子 billbear » 2008-06-03 23:56

billbear 写了: 我还试过另一种方法,在U盘里做一个小的FAT分区,光盘里做一个dos,在dos里加载USB驱动,然后到U盘FAT分区里运行linld(类似于以前的loadlin,但是loadlin早就不能加载如今的内核了),加载也拷在FAT分区里的内核。但是ubuntu起到一半就死掉了,不知道为什么。linld最后更新是在2004年,皮体。
澄清一下。我这个思路是可行的。原来我把uuid写错了。刚才重新写了一下,内置硬盘和移动硬盘的ubuntu都起来了。
我是这样测试的,刻了一张freedos,然后在内置硬盘的FAT分区里拷了linld.com,vmlinuz,initrd,写了一个.bat的dos批处理文件,
linld image=vmlinu~1.24- initrd=initrd~1.24- "cl=root=UUID=。。。 ro"
dos下的文件是只能看到8.3的
从freedos cd启动,运行FAT分区里的批处理。成功。
下一步就是把usb驱动刻在cd里,把linld和内核拷到u盘的fat上,启动cd,直接到u盘运行linld。应该可行。如果可行,就可以把cd量产到u盘里,只要用u盘启动了。看到一丝曙光。
可能的问题:freedos启动时只加载了himem。如果加载emm386,运行linld立刻就重启。就怕加载了usb驱动之后也这样。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#48

帖子 billbear » 2008-06-04 0:11

1776 48
7 0 8a
7 90000 10
7 2cf000 7a6a8
7 7b9bf000 84d
7 7c2be000 1
7 7c320000 c72
7 7dc17000 1
7 7ecf6000 25
7 7ee40000 9
7 7ee6f000 11
7 7eeab000 c
7 7eebc000 2
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#49

帖子 billbear » 2008-06-04 0:24

我不太知道哪里有dos 的usb 驱动,通用性如何,以及如何把它整合到freedos里头做成另一张可启动的光盘。
谁给我发一张做好的iso,包含usb驱动的dos启动光盘,好让我继续下一步测试。谢谢。
有兴趣的同学可以测试linld可靠性如何
linld.com在这里下载
http://busybox.net/~vda/linld/
头像
muzuiget
帖子: 1097
注册时间: 2007-12-31 14:57

#50

帖子 muzuiget » 2008-06-04 1:10

billbear 写了:我不太知道哪里有dos 的usb 驱动,通用性如何,以及如何把它整合到freedos里头做成另一张可启动的光盘。
谁给我发一张做好的iso,包含usb驱动的dos启动光盘,好让我继续下一步测试。谢谢。
有兴趣的同学可以测试linld可靠性如何
linld.com在这里下载
http://busybox.net/~vda/linld/
新版的Slax光盘中有个loadlin,不知道是不是同一件东西,loadlin v1.6
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#51

帖子 billbear » 2008-06-04 1:22

再来试一下移动硬盘插上后ls
set debug=all
set pager=1
ls
信息有一页多,根据输出的信息看,读(hd0)出了问题,然后就退出了,没有继续读hd1. hd0应该是移动硬盘没错。另外一块单分区小u盘读正常。还有一块8G的u盘,一部分量产为cd,cd部分看到了,剩下的u盘没看到,说明一下,量产以后剩下的u盘好像不是usb-hdd了,可能是zip。我胡乱说一下,能不能不叫(hd0) 叫 (usb0)看得清晰一些,当我没说。
移动硬盘说明一下,当时是在os x下用磁盘工具分区,选的mbr格式,然后选的4个分区,做成hfs/hfs/fat/空白,当然都是主分区。然后在空白里装ubuntu,做成扩展分区,里面/,/home,swap.
我注意到linux下看到32楼3个主分区前一个分区的末尾和后一个分区的起始是重叠的。而在os x下看

Last login: Wed Jun 4 01:09:14 on ttys000
bill-beardemacbook:~ billbear$ fdisk /dev/rdisk1
Disk: /dev/rdisk1 geometry: 19457/255/63 [312581808 sectors]
Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
*1: AF 0 1 1 - 1023 254 63 [ 63 - 17039360] HFS+
2: AF 1023 254 63 - 1023 254 63 [ 17039484 - 63176704] HFS+
3: 0B 1023 254 63 - 1023 254 63 [ 80216199 - 167772160] Win95 FAT-32
4: 05 1023 254 63 - 1023 254 63 [ 247995405 - 64581300] Extended DOS
Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
1: 83 1023 254 63 - 1023 254 63 [ 247995468 - 29286432] Linux files*
2: 05 1023 254 63 - 1023 254 63 [ 277281900 - 33206355] Extended DOS
3: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
1: 83 1023 254 63 - 1023 254 63 [ 277281963 - 33206292] Linux files*
2: 05 1023 254 63 - 1023 254 63 [ 310488255 - 2088450] Extended DOS
3: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
1: 82 1023 254 63 - 1023 254 63 [ 310488318 - 2088387] Linux swap
2: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
3: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
bill-beardemacbook:~ billbear$


似乎不但没有重叠,还有些许间隔。可能os x不适合给磁盘做MBR格式的分区?但是使用没有任何问题。是leopard。
所以,也许是我的磁盘分区表有点古怪。你可以试着按我的步骤分一下看看。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#52

帖子 billbear » 2008-06-04 1:25

muzuiget 写了:
billbear 写了:我不太知道哪里有dos 的usb 驱动,通用性如何,以及如何把它整合到freedos里头做成另一张可启动的光盘。
谁给我发一张做好的iso,包含usb驱动的dos启动光盘,好让我继续下一步测试。谢谢。
有兴趣的同学可以测试linld可靠性如何
linld.com在这里下载
http://busybox.net/~vda/linld/
新版的Slax光盘中有个loadlin,不知道是不是同一件东西,loadlin v1.6
loadlin应该是古董了,好像没法引导超过一定尺寸的内核。如今的内核对他都太大,据我所知
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#53

帖子 billbear » 2008-06-04 1:41

bean:
很乐意帮你测试grub2,希望他早日成熟。对你的工作表示敬意。
明天开始我可能会很忙,不会有太多时间上网,有什么要我帮忙的可以留在这,我会定期查看。希望我的测试信息对你有用。
关于继续试验linld也会暂缓,这一阵的工作忙完了再说。我希望pt*6等各位接下去做一下。睡了。
谢谢大家。
bean
帖子: 238
注册时间: 2008-06-03 12:25

#54

帖子 bean » 2008-06-04 2:46

问题找到了,测试一下grub.efi.3,应该可以启动Linux了。

另外,新的版本还加了chainloader命令,你可以用它来启动其他的efi影像。比如说,要启动OS X的话:

set root=(hd0,2)
chainloader /usr/standalone/i386/boot.efi

关于U盘的话,试试用正统的软件来分区。在OS X下格式的话,有可能把gpt表或者其他附加的信息加上去。一般的Windows是识别不了的,所以没有关系。但在grub2里,同时可以识别gpt和mbr,这样有可能会造成混乱。当然,我也可以定制一个只能识别mbr的内核,不过这样就访问不了内置硬盘的分区了。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#55

帖子 billbear » 2008-06-04 9:45

现在我的grub.cfg:


menuentry "test"
{

set root=(hd0,9)
linux /boot/vmlinuz-2.6.24-16-generic root=/dev/sda9 ro
initrd /boot/initrd.img-2.6.24-16-generic
}

menuentry "leo"
{
set root=(hd0,5)
chainloader /usr/standalone/i386/boot.efi
}

现在chainloader成功进入OS X
但是linux还是没有起来
Booting 'test'
Linux-EFI,setup=0x2a00,size=0x1ce278
Initrd,addr=0x7c80f000,size=0x7825b0
然后死在那里了,内核没有起来
bean再帮我看一下
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#56

帖子 billbear » 2008-06-04 10:12

另外,关于移动硬盘,我在OS X下分区的时候设成纯MBR格式了的。而我的内置硬盘就是GPT/MBR hybrid.
应该不是GPT的原因。可能有别的什么。
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

#57

帖子 ptptptptptpt » 2008-06-04 10:50

billbear 写了:
muzuiget 写了:
billbear 写了:我不太知道哪里有dos 的usb 驱动,通用性如何,以及如何把它整合到freedos里头做成另一张可启动的光盘。
谁给我发一张做好的iso,包含usb驱动的dos启动光盘,好让我继续下一步测试。谢谢。
有兴趣的同学可以测试linld可靠性如何
linld.com在这里下载
http://busybox.net/~vda/linld/
新版的Slax光盘中有个loadlin,不知道是不是同一件东西,loadlin v1.6
loadlin应该是古董了,好像没法引导超过一定尺寸的内核。如今的内核对他都太大,据我所知
以下来自 ubuntu 8.04 软件源中 loadlin 的软件包描述
a loader (running under DOS) for LINUX kernel images
LOADLIN-1.6 is highly adaptable to different DOS configurations, and now
has very few loading restrictions. It makes use of extended memory and
also can load big kernels (bzImages) and ramdisk images (initrd)
directly high.

LOADLIN also can load out of Virtual-86 mode (which is normal when
using EMS drivers) if a VCPI server is present.

The loadlin package also includes the freeramdisk program, which can
return memory to the system when a ramdisk is no longer needed.
[/quote]
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#58

帖子 billbear » 2008-06-04 11:13

是吗
loadlin又更新了?
那样是件好事。也可以试一下
不管怎样,用linld试验已经可以启动。还有,linld可能对msdos兼容性更好。用freedos有时候会出现死机或者重启。
ptpt:我原来说linld不能成功引导是错误的。我当时错写了移动硬盘的uuid。而移动硬盘没有接上。我是想先测试能否引导内置硬盘来的
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

#59

帖子 ptptptptptpt » 2008-06-04 11:16

成功了! 用 kexec-tools !

kexec-tools 的说明:

kexec tool
This tool is used to load a kernel in memory and reboot into the kernel loaded in memory using the kexec system call.

安装kexec-tools 后,用以下命令从当前 ubuntu 启动到了另一个ubuntu:

kexec -l vmlinuz-2.6.24-16-generic --append=root=/dev/sda6 ro --initrd=initrd.img-2.6.24-16-generic

kexec -e

经验:当前的 ubuntu 不能运行X,否则启动另一 ubuntu 后将无法启动 X

可以做一张 ubuntu live cd (装有 kexec-tool) ,从光盘启动它,认到u盘后,通过 kexec 命令,进一步启动u盘中的 ubuntu
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#60

帖子 billbear » 2008-06-04 11:30

不错
那天你说想从一个小型linux加载grub引导另一个linux,我就想可能不会成功,但是直接kexec另一个内核是有可能的
你预引导的那个linux微型化了吗,不会多花很长时间吧
你再试试linld或者loadlin从dos走,去找个dos usb驱动
如果从kexec可靠并且快速,我还是很愿意不从dos走。不过我对kexec一直提心吊胆的
回复