win7之家
当前位置:主页 > 系统教程 > u盘教程 >

U盘HDD模式无法启动的原因及应对策略!

  • 作者:系统之家
  • 来源:互联网整理
  • 更新时间:2019-12-29 14:53:38
  • 浏览数:

不少网友利用U盘来为电脑启动,这个方法是较为便捷的,但是也难免会遇到问题。就比如所用的U盘是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启动

  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也试验成功,但与方法二一样启动和运行速度很慢

  实际应用测试:

  现在我自己的工具盘(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。这个启动盘为了压缩体积,仅仅有一个假的启动菜单,只要启动时出现这个菜单就算成功了。

  以上便是HDD模式无法启动的原因及其解决的对策了,原因的多重分析,多种方法的解决,需要我们针对不同的情况来进行筛选,希望对大家有帮助。


上一篇:U盘提示raw错误的小攻略! 下一篇:没有了

版权声明:本站收录的文章及教程都是本站小编精心制作,仅供学习交流之用,如转载请注明出处。劳动最光荣,请尊重!

  • 猜你喜欢
 分类

U盘HDD模式无法启动的原因及应对策略!

作者:系统之家

来源:互联网整理

更新时间:2019-12-29 14:53:38

浏览数:

文章内容

不少网友利用U盘来为电脑启动,这个方法是较为便捷的,但是也难免会遇到问题。就比如所用的U盘是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启动

  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也试验成功,但与方法二一样启动和运行速度很慢

  实际应用测试:

  现在我自己的工具盘(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。这个启动盘为了压缩体积,仅仅有一个假的启动菜单,只要启动时出现这个菜单就算成功了。

  以上便是HDD模式无法启动的原因及其解决的对策了,原因的多重分析,多种方法的解决,需要我们针对不同的情况来进行筛选,希望对大家有帮助。


猜你喜欢的u盘教程

本站所有软件来自于互联网,
版权属原著所有,如有需要请购买正版。
如有侵权,敬请来信联系我们,我们立刻删除
Copyright © 2004-2016
Win7系统之家(www.win764.org).All Rights Reserved