无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 117877|回复: 165
打印 上一主题 下一主题

[原创]U盘USB-HDD方式启动不成功一个很重要原因初探

  [复制链接]
跳转到指定楼层
1#
发表于 2007-12-21 21:24:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我发现U盘USB-HDD方式启动不成功一个很重要原因:
不同的BIOS进行U盘(USB-HDD方式)启动时,对同一U盘的容量参数---柱面、磁头和扇区数(简称CHS),识别各不相同(证明这一点可以在不同的机器上安装同一版本的linux,然后插入U盘,使用hdparm /dev/sda命令就可以发现CHS在不同机器各不相同,甚至如果U盘可以使用GRUB启动的话,在GRUB里使用geometry (hd0)命令也能看出来),这样在一台机器上分区格式化所产生的的分区表和FAT磁盘参数表是按照这台机器所识别的硬盘的CHS来表达的,换到另一台机器时由于另一台机器识别的CHS不一样,这样就会产生混乱。所幸的是,分区表和FAT磁盘参数表同时还有一种按照相对扇区数来表达的方式,这种表达方式也同时记录在分区表和磁盘参数表中。这样就看软件使用哪一种数据来工作了,如果使用CHS,那么换一台机器就一定不会正常工作,如果使用LBA方式访问磁盘就不会受影响---当然前提是BIOS支持对U盘使用LBA方式访问即扩展INT13H。而XP对FAT16文件系统分区格式化生成的MBR代码以及DOS各版本均需依靠CHS工作,所以按照通常方法在一台机器制作的启动U盘在另一台机器启动就有可能不成功。经测试移动硬盘在各BIOS中的CHS倒是一致的,与该硬盘直接接在IDE口上的CHS相同,所以移动硬盘的USB启动基本上并无困难。

目前我发现的确实受这一问题的影响,从而影响启动的程序有:
1、Windows XP及SP1中文版磁盘管理器分区时所写的MBR
2、dos5、6、6.22、win95的fdisk所写的MBR
3、dos5、6、6.22、win95的format所写的boot
4、包括windows95 98 98se的所有的MS DOS的IO.SYS(均需依靠CHS识别FAT文件系统)
5、USBoot产生的MBR和boot(与1相同)
6、使用bootlace.com将grub for dos 0.41中的grldr.mbr安装至MBR
可能不受这一问题影响的程序有(未经充分测试):
1、win98、98se的fdisk所写的MBR
2、win98、98se的format所写的boot(要求FAT16分区类型必须是0xe以支持LBA)
3、ntldr以及随后启动的PE或XP环境(当然了,否则U盘就没法使用了)
4、linux下的install-mbr程序所写的MBR
5、GNU GRUB 0.95和0.97及其使用grub-install命令安装的引导代码
6、syslinux3.36和3.51
7、linux2.4内核以上,基本上linux系统所有程序对FAT文件系统都不会使用CHS
8、grub chs 0.95 0.97(内含的stage1、stage1.5和stage2引导代码)


所以解决此问题思路相应就有:
1、强制U盘以USB-CDROM、USB-FLOPPY或USB-ZIP方式启动,这样各家BIOS就有标准可循了,就不会“自说自话",这也是目前使用U盘量产工具的基本思路,但是这样就让没有量产工具的SD卡+读卡器的组合失望了,而目前的多数大容量U盘均无写保护开关或者读写速度不理想,有时还是需要高速SD卡+读卡器的组合;
2、使用活动硬盘启动基本没问题。
3、使用不受错误的CHS参数影响的boot loader启动,比如GNU GRUB或SYSLINUX启动,或其它组合。

下面介绍我尝试过的使用GNU GRUB、GRUB CHS和GRUB for DOS的方法:

方法一:完全使用grub中文版的stage1、stage1.5、stage2启动,grub中文版作者Gandalf(
f22_storm@163.com),目前最高版本0.97,已停止更新,附件中grub_for_dos-0.4.1.zip包含这一版本编译后的可执行文件。
1、找到一台正常运行GNU GRUB0.95或0.97的机器(Redhat ELAS4 Update0-Update6,ELAS5 Update0-Update1)
2、把grub_for_dos-0.4.1.zip中chinese/boot/grub中stage1、1.5、2文件覆盖到linux中/usr/share/grub里(这里不同版本可能grub stage image所在路径不同,/usr/share/grub是大多数情况),注意做好原来文件备份。
3、插入要做启动的U盘或移动硬盘,进行分区,因为有一些BIOS对USB-HDD只支持CHS方式,从而限制了启动分区不能超过1023*16*63个扇区,所以为了通用性,启动分区不要超过511M,类型为0xe,(阅读Win98se的DOS 7.1的boot启动代码发现DOS 7.1使用0xe这个类型支持LBA方式启动,它的文件访问也许也使用这个标志,虽然对grub可能用不到,但是如果多引导中包含DOS 7.1的话就有用了),设置引导标志,格式化为fat16文件系统。这一切都在linux下进行。
12月29日更正
4、把启动分区mount到/mnt内
5、grub-install  --root-directory=/mnt  /dev/sdX,注意千万不能选择--force-lba,因linux下的grub现在与stageX不配套,机器会无法启动
6、不要理会/mnt/boot/grub/device.map文件,这个文件是grub-install程序使用的,安装后就没用了。
7、umount /mnt并恢复/usr/share/grub内容
这样因--force-lba选项未启用可以说留有遗憾,所以下一步使用此设备启动,在grub命令行下:
1、root(hd0,0),这里指定stage image文件源在哪里
2、setup --force-lba (hd0),进行安装,至此grub中文版已完全安装到MBR里。
这种方法是我最初采用的方法,但是现在grub中文版已停止更新,所以这种方法我不推荐。

方法二:使用GNU GRUB启动后加载grub for dos
1、找到最新的稳定版本的linux,比如Redhat ELAS5 Update1,直接把它的GNU GRUB加上--force-lba选项安装到U盘MBR里(可参照方法一,注意不要覆盖那些文件了,也别忘了把分区类型设为0xe)。
2、把grub_for_dos-0.4.2.zip中的chinese/grub.exe复制到U盘根目录中。
3、使用GNU GRUB引导后使用kernel /grub.exe和boot命令引导grub.exe这样就可享受grub for dos的中文菜单和直接支持ntldr、io.sys启动的功能了。
这种方法好在可以始终使用最新的最稳定的GNU GRUB来对付buggy BIOS,同时仍享受grub for dos中文版的便利。这种方法在我的机器上不论是PE还是DOS,启动速度相当的慢,就连菜单显示速度都出奇地慢,而且不仅仅是启动过程,就连启动成功后运行其他程序也是很慢,我觉得是grub for dos中文版的原因,试用过grub for dos中文版0.41、0.42和0.43均不理想。

方法三:使用GNU GRUB的stage1、stage1.5和grub 0.97中文版的stage2混合启动
1、找到最新的稳定版本的linux,比如Redhat ELAS5 Update1,直接把它的GNU GRUB加上--force-lba选项安装到U盘MBR里(可参照方法一,注意不要覆盖那些文件了,也别忘了把分区类型设为0xe)。
2、使用grub_for_dos-0.4.1.zip中chinese/boot/grub中stage2文件替换掉U盘中/boot/grub/stage2
这种方法优点同方法二,并且启动更为迅速,缺点就是这毕竟不是通常的做法,在GNU GRUB版本更新后不一定还可行,不过好像GNU GRUB也停止更新了:-)。在目前的情况下,个人推荐这种方法。

其它尝试:使用syslinux引导grub for dos0.41、0.42和0.43的grub.exe也试验成功,但与方法二一样启动和运行速度很慢。
12月29日更正

实际应用测试:
现在我自己的工具盘(150速 创见2G SD卡+川宇150X SDHC读卡器,题外话:这个读卡器除了支持150速以外其它真是垃圾)就是使用方法三制作的,在实际环境中还没有发现无法启动的现象。其中包括HP DL380G3、G4、DL580、Dell 3850、6850、IBM X345、346、3650等,当然还包括我的台式机和笔记本电脑。

这里补充说明一下:这个帖子仅仅是对影响U盘USB-HDD方式启动的若干因素其中一个重要因素的探索,这个镜像只是相对流行做法作了改进,提高了U盘在不同机器上启动成功可能性,并不能说就此解决了U盘USB-HDD方式启动的所有问题。本来作为研究帖子是只想提供方法不想提供具体成品的,但是考虑到种种因素,还是放出来供大家测试吧。

因为ghost在恢复时会自行更该分区类型到06,所以我使用了winhex生成了一个1:1的U盘镜像供研究,解压缩后文件名为U-1gboot.img。这个启动盘为了压缩体积,仅仅有一个假的启动菜单,只要启动时出现这个菜单就算成功了。


[ 本帖最后由 原名丢了 于 2008-1-23 09:31 AM 编辑 ]

U-1gboot.part0001.rar

195.31 KB, 下载次数: 2705, 下载积分: 无忧币 -2

U-1gboot.part0002.rar

195.31 KB, 下载次数: 2482, 下载积分: 无忧币 -2

U-1gboot.part0003.rar

195.31 KB, 下载次数: 2416, 下载积分: 无忧币 -2

U-1gboot.part0004.rar

195.31 KB, 下载次数: 2396, 下载积分: 无忧币 -2

U-1gboot.part0005.rar

50.39 KB, 下载次数: 1876, 下载积分: 无忧币 -2

评分

参与人数 4无忧币 +165 收起 理由
chnhhwz + 96 精品文章
fujianabc + 5 原创内容
阿非 + 10 精品文章
原名丢了 + 54

查看全部评分

推荐
发表于 2007-12-21 22:52:20 | 只看该作者
好文章,学习了。thx
回复

使用道具 举报

推荐
发表于 2007-12-21 21:40:38 | 只看该作者
谢谢楼主的详细分析,谢谢
回复

使用道具 举报

4#
发表于 2007-12-21 23:15:35 | 只看该作者
分析的不错,加分支持
回复

使用道具 举报

5#
发表于 2007-12-22 15:54:01 | 只看该作者
写得不错,建议加精....
回复

使用道具 举报

6#
发表于 2007-12-22 16:14:37 | 只看该作者
太好了~~希望能研究一下usb-cdrom的~~~
回复

使用道具 举报

7#
 楼主| 发表于 2007-12-22 16:16:15 | 只看该作者

回复 #1 wangjg 的帖子

谢谢抬爱。

所以按照上面分析,现在所有借助于DOS的启动方法对于USB-HDD启动方式可以说都会有问题的。关于这一点我做了一个实验,制作一个包含dos7.1的内存镜像盘,通过方法三引导,然后去访问U盘,发现只有在我对U盘进行分区格式化的台式机上才可以访问U盘,在我的笔记本中根本无法访问U盘上FAT文件系统。

本想补充附件的,但附件总也传不上去,算了,反正涉及到的东西网上到处都是,难不住想研究的人。
回复

使用道具 举报

8#
发表于 2007-12-23 12:38:30 | 只看该作者
学习了,好帖,感谢,呵呵(非要超过10个字)
回复

使用道具 举报

9#
发表于 2007-12-23 13:04:38 | 只看该作者
楼主只顾研究的,还是面向广大爱好者发上成品及DIY具体方法大家共享吧。
回复

使用道具 举报

10#
 楼主| 发表于 2007-12-23 23:35:01 | 只看该作者
成品就算了。首先,大家的U盘尺寸不一样,我发上来的不一定适合大家,其次,授人以鱼不如授人以渔,再次,这里发送大文件实在不方便。这样,我把方法三详细介绍一下。
必备条件:
Vmware WorkStation 或Server
CentOS 5.1或Redhat Enterpeise AS 5 U1
Grub 0.97 中文版
准备以之启动的PE,比如深山红叶v28。
一个足以容纳下深山红叶v28的U盘(>=256M),工作在USB-HDD方式下,特征是在windows XP下能给它分区,如果不是USB-HDD方式就用量产工具把它转回来,高速SD卡+读卡器更佳。
具体步骤:
1、在Vmware中创建虚拟机,模版选择Redhat Enterprise AS 4,guest系统中添加USB控制器。
2、把CentOS 5.1或Redhat Enterprise AS 5 U1完整安装到虚拟机中。
3、插入U盘并分配给虚拟机guest系统,U盘上如有数据请自行备份
下面操作在虚拟机guest系统内
4、guest系统中使用fdisk -l 命令确定U盘设备名,大多数情况下应该是/dev/sdb。
[root@test ~]# fdisk -l
Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1566    12474472+  8e  Linux LVM
Disk /dev/sdb: 65 MB, 65536000 bytes
3 heads, 42 sectors/track, 1015 cylinders
Units = cylinders of 126 * 512 = 64512 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        1015       63924    e  W95 FAT16 (LBA
[root@test ~]#


5、guest系统中使用fdisk /dev/sdb命令分配一个不大于511M的主分区,分区号为1,分区类型为0xe,并设置引导标记。
[root@test ~]# umount /dev/sdb1
[root@test ~]# fdisk /dev/sdb
Command (m for help): p
Disk /dev/sdb: 65 MB, 65536000 bytes
3 heads, 42 sectors/track, 1015 cylinders
Units = cylinders of 126 * 512 = 64512 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        1015       63924    e  W95 FAT16 (LBA)
Command (m for help): d
Selected partition 1
Command (m for help): n  
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1   
First cylinder (1-1015, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1015, default 1015):
Using default value 1015
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): e
Changed system type of partition 1 to e (W95 FAT16 (LBA))
Command (m for help): a
Partition number (1-4): 1
Command (m for help): p
Disk /dev/sdb: 65 MB, 65536000 bytes
3 heads, 42 sectors/track, 1015 cylinders
Units = cylinders of 126 * 512 = 64512 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        1015       63924    e  W95 FAT16 (LBA)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
[root@test ~]#


6、guest系统中使用mkfs.fat /dev/sdb1将U盘格式化为FAT文件系统。
[root@test ~]# mkdosfs /dev/sdb1
mkdosfs 2.11 (12 Mar 2005)
[root@test ~]#

7、guest系统中使用mount /dev/sdb1 /mnt命令把U盘mount到/mnt。
[root@test ~]# mount /dev/sdb1 /mnt
[root@test ~]#

8、guest系统中使用grub-install --root-directory=/mnt --forcelba --no-floppy /dev/sdb命令把GNU GRUB安装到U盘MBR中。
[root@test ~]# grub-install --root-directory=/mnt --force-lba --no-floppy /dev/sdb
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0)   /dev/sda
(hd1)   /dev/sdb
[root@test ~]#

9、guest系统中使用umount /mnt命令后拔掉U盘。
[root@test ~]# umount /mnt
[root@test ~]#

至此,U盘已具备引导至GNU GRUB能力。

下面操作在Windows XP内
10、把Grub 0.97 中文版中boot\grub\stage2覆盖至U盘\boot\grub\stage2,同时把boot\grub\fonts、boot\grub\xp2008.xpm.gz和boot\grub\grub_chs.msg复制到U盘\boot\grub\下(这些文件均在附件内)。
至此,U盘已具备引导至GRUB 0.97中文版能力。可支持中文菜单、直接chainloader启动NTLDR、KERNEL.SYS和IO.SYS。
11、把要启动的PE---本例中是深山红叶V28光盘版内容复制到U盘里。我这个U盘过小就不演示了。
12、在U盘根目录或\boot\grub目录中创建menu.lst文件,内容如下:
#
# Grub 0.95 中文版配置文件样例, by Gandalf(f22_storm@163.com)
#  2004 -  07 - 15 (midified 13:13 2004-11-13)
#
# 默认延迟时间(秒)
timeout 30
color black/cyan yellow/cyan
# 第一项为默认值
default 0
# Fallback to the second entry.
fallback 1
# 设置动画图形菜单文件
gfxmenu (hd0,0)/boot/grub/grub_chs.msg
# 设置图形背景文件
splashimage (hd0,0)/boot/grub/xp2008.xpm.gz
# 设置中文支持的字体文件
fontfile (hd0,0)/boot/grub/fonts

title 深山红叶微型 PE 工具箱V28
chainloader /wins/setupldr.bin
title floppy (fd0) 软盘引导
chainloader (fd0)+1
rootnoverify (fd0)
title Command Line 命令行
#savedefault --wait=2
commandline

即可U盘启动深山红叶V28,启动时注意需在BIOS设置USB-HDD方式。
实验:
1、在不同的机器上启动GRUB选择菜单中的“Command Line 命令行”,然后键入geometry (hd0)命令,记录识别的CHS参数
2、比较不同机器的CHS参数,会发现有所不同。但是在这样的条件下启动U盘上的深山红叶v28均无问题。
也许在下视野狭隘,目前为止,只要机器支持USB-HDD模式启动,还没发现这种方法不能启动的机器。

[ 本帖最后由 wangjg 于 2008-1-2 10:14 PM 编辑 ]

grub中文支持.part1.rar

97.66 KB, 下载次数: 1093, 下载积分: 无忧币 -2

grub中文支持.part2.rar

97.66 KB, 下载次数: 1073, 下载积分: 无忧币 -2

grub中文支持.part3.rar

63.35 KB, 下载次数: 963, 下载积分: 无忧币 -2

回复

使用道具 举报

11#
发表于 2007-12-23 23:55:04 | 只看该作者
LZ的办法一定要借用linux?对于我们这种习惯了用Windows的可是大问题啊。还有就是在vmware里面的U盘和真机的U盘是一样的吗?我的U盘是作为硬盘用的~~~
回复

使用道具 举报

12#
 楼主| 发表于 2007-12-24 00:07:29 | 只看该作者
原帖由 citydream 于 2007-12-23 11:55 PM 发表
LZ的办法一定要借用linux?对于我们这种习惯了用Windows的可是大问题啊。还有就是在vmware里面的U盘和真机的U盘是一样的吗?我的U盘是作为硬盘用的~~~

毕竟Redhat Enterprise AS 5是面向企业用的,企业的实际硬件条件是千差万别的,所以它里面的组件应该经过了精选,稳定性是不成问题的,因此我借用了它里面的GNU GRUB的stage1和stage1.5来启动GRUB中文版。我贴出来的都是实际的操作步骤的记录,就算不熟悉linux应该也没有问题吧。
至于vmware里面的U盘和真机的U盘我觉得应该没什么差别,我自己的工具盘就是使用vmware做的。您要有条件也可以使用真机安装linux。
至于U盘数据您当然需要备份妥当才能开始尝试了。就算尝试失败,大不了格式化恢复备份就好了,这个没有量产工具那么危险。

[ 本帖最后由 wangjg 于 2007-12-24 12:09 AM 编辑 ]
回复

使用道具 举报

13#
发表于 2007-12-24 00:11:04 | 只看该作者
对于我们这种windows操作系统中毒的人,用服务器版的win2003或者2008可以吗?一定要用linux的话我只装过ubuntu,可以吗?
回复

使用道具 举报

14#
 楼主| 发表于 2007-12-24 00:19:58 | 只看该作者
原帖由 citydream 于 2007-12-24 12:11 AM 发表
对于我们这种windows操作系统中毒的人,用服务器版的win2003或者2008可以吗?一定要用linux的话我只装过ubuntu,可以吗?

因为使用windows自己的分区格式化工具
1、你无法分区成0xe类型分区
2、你无法控制它格式化成fat16文件系统,它会自作主张格成fat32
3、就算在windows下找到适当的软件可以克服1、2两点(印象中win98se可以),但是最重要的是GNU GRUB无法在windows下安装到MBR
对于安装linux问题:
1、ubuntu我没用过,只知道它是面向桌面用户的,不知道它的GNU GRUB的版本到底怎么样。现在CentOS 5.1很好下载的。
2、如果实在安装linux有困难,可以使用centos live CD 直接在虚拟机中启动,下载地址如下: http://mirror.mirr4u.com/centos/5.0/isos/i386/CentOS-5.0-i386-LiveCD.iso,679MB,如果下载速度慢,也可以在官方网站查找快速的镜像服务器:http://isoredirect.centos.org/centos/5/isos/i386/
3、使用centos live CD启动后在live CD 虚拟盘中重新安装GNU GRUB最新版,下载地址如下:http://mirror.mirr4u.com/centos/5.1/os/i386/CentOS/grub-0.97-13.i386.rpm ,489KB。
4、理论上使用knoppix live CD和ubuntu的只要重新安装centos 5.1的GNU GRUB也可以,但我没试过。

[ 本帖最后由 wangjg 于 2007-12-24 11:27 PM 编辑 ]
回复

使用道具 举报

15#
发表于 2007-12-24 22:29:15 | 只看该作者
分析详细,好文章,学习了!!!!!
回复

使用道具 举报

16#
发表于 2007-12-24 23:59:25 | 只看该作者
谢谢,很详细的教程。
努力学习中。。。
回复

使用道具 举报

17#
 楼主| 发表于 2007-12-29 16:58:56 | 只看该作者
更正:发现我做的U盘在一台1年半前购买的IBM X346服务器上无法启动,经分析发现它的BIOS对USB-HDD只支持CHS方式,从而限制了启动分区不能超过1023*16*63个扇区,我把启动分区调整为511M即解决。所以为了通用性,启动分区不要超过511M,特此更正。
顺便鄙视一下IBM:这么新的机器还有这种限制   ;-)
回复

使用道具 举报

18#
发表于 2007-12-30 11:04:49 | 只看该作者
谢谢楼主发出这么好的贴子!
我做了一个通过MBR引导grldr的启动U盘(USB-HDD),在一部分机子都可启动,但在稍新的机子上就不行了,现终于知道了原因,再次谢谢!
可我对linux一点都不会,对楼主介绍的方法用不了,我想和我一样朋友不在少数吧!呵呵!

因为使用windows自己的分区格式化工具
1、你无法分区成0xe类型分区
2、你无法控制它格式化成fat16文件系统,它会自作主张格成fat32
3、就算在windows下找到适当的软件可以克服1、2两点(印象中win98se可以),但是最重要的是GNU GRUB无法在windows下安装到MBR

至于第3点,我想能不能通过WINDOS(或DOS)下的软件或命令软件将”GNU GRUB“的MBR硬COPY至启动扇区,请楼主赐教!
如果可以,请将你的”GNU GRUB“的MBR及相关方法贴出来(或发给我yi2ci@yahoo.com.cn)。
回复

使用道具 举报

19#
发表于 2007-12-30 11:50:37 | 只看该作者
好复杂.这么好的帖子该加精
回复

使用道具 举报

20#
 楼主| 发表于 2007-12-30 15:18:08 | 只看该作者
原帖由 fdd_ds 于 2007-12-30 11:04 AM 发表
...
3、就算在windows下找到适当的软件可以克服1、2两点(印象中win98se可以),但是最重要的是GNU GRUB无法在windows下安装到MBR

至于第3点,我想能不能通过WINDOS(或DOS)下的软件或命令软件将”GNU GRUB“的MBR硬COPY至启动扇区,请楼主赐教!
如果可以,请将你的”GNU GRUB“的MBR及相关方法贴出来(或发给我yi2ci@yahoo.com.cn)。

我觉得很困难,理由如下:
使用grub-install把GNU GRUB安装到MBR时,它首先把stage1和MBR中分区表信息合并写到MBR中,然后把fat_stage1_5写到隐含扇区中,所谓隐含扇区是指MBR到最前分区之间的空白区域,然后再把stage2等文件存入文件系统内。如果使用了特殊的安装参数的话---比如“--force-lba“参数,那么还要直接修改stage1和stage1.5。
所以我觉得这一过程使用手工实现的话很困难。如果一定要在windows下进行,最好参照GNU GRUB源代码进行,把里面的安装过程搞透。
附件里是GNU GRUB的stage1和stage1.5文件,来源是REDHAT Enterprise AS 5.1中的grub-0.97-13.i386.rpm包。

[ 本帖最后由 wangjg 于 2007-12-30 03:29 PM 编辑 ]

grub-stage1&1.5.zip

5.46 KB, 下载次数: 279, 下载积分: 无忧币 -2

回复

使用道具 举报

21#
发表于 2007-12-30 15:20:35 | 只看该作者
好文章,学习了。
回复

使用道具 举报

22#
发表于 2007-12-30 17:19:39 | 只看该作者
grub的传统引导方式(stage1,stage 1.5,stage2),方式复杂,存在bug,在有些机子上会出现无法启动的情况(不管是在u盘还是硬盘上)。

现在还是不推荐用传统方式引导grub,用grldr更好些。
回复

使用道具 举报

23#
发表于 2007-12-30 20:17:52 | 只看该作者
楼主厉害,这们也被你知道了。不谢不行了
回复

使用道具 举报

24#
发表于 2007-12-30 21:44:59 | 只看该作者
强人,我来试试
回复

使用道具 举报

25#
 楼主| 发表于 2007-12-31 04:01:35 | 只看该作者
原帖由 fujianabc 于 2007-12-30 05:19 PM 发表
grub的传统引导方式(stage1,stage 1.5,stage2),方式复杂,存在bug,在有些机子上会出现无法启动的情况(不管是在u盘还是硬盘上)。

现在还是不推荐用传统方式引导grub,用grldr更好些。

从GNU GRUB官方网站上下载的标准版本的GNU GRUB Legacy我也发现存在在有些机子上会出现无法启动的情况。
但是特定版本的grub呢?比如我使用的Redhat Enterprise AS中的grub,如果还有在有些机子上会出现无法启动的情况,那岂不是意味着这些机器上不能安装这一操作系统吗?
回复

使用道具 举报

26#
发表于 2007-12-31 12:23:13 | 只看该作者
我已经按楼主提供的地址下载并启动了centos5(虚拟机中启动),如附件。
可是下部再该如何呢?请楼主尽可能详细的说明!谢谢!
没办法呀,第一次接触!呵呵!

centos5启动.JPG (59.48 KB, 下载次数: 279)

centos5启动.JPG
回复

使用道具 举报

27#
发表于 2007-12-31 12:28:18 | 只看该作者
补充一下:
最好是带每步的操作图片。
回复

使用道具 举报

28#
发表于 2007-12-31 13:47:06 | 只看该作者
原帖由 wangjg 于 2007-12-31 04:01 AM 发表

从GNU GRUB官方网站上下载的标准版本的GNU GRUB Legacy我也发现存在在有些机子上会出现无法启动的情况。
但是特定版本的grub呢?比如我使用的Redhat Enterprise AS中的grub,如果还有在有些机子上会出现无法 ...

这不很正常吗?现在linux的兼容性的确不是很好,很多发行版都会出现在某些机子上无法安装的情况。

现在很热的ubuntu尤其如此,很多机子上不是无法安装就是装完无法启动。

另外linux在安装时都提供了grub/lilo的选择,如果grub不行可以选lilo。
回复

使用道具 举报

29#
发表于 2007-12-31 14:12:19 | 只看该作者
感谢楼主的授人以鱼不如授人以渔。我们需要这样的人
回复

使用道具 举报

30#
发表于 2007-12-31 14:18:44 | 只看该作者
偶只知道是主板“各自主张”,没细到分析出CHS不同,楼主真牛……
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 23:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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