首页 > 课堂 > 电脑教程 > 正文

U盘HDD模式无法启动的原因及解决思路

2024-07-15 02:00:12
字体:
来源:转载
供稿:网友
不同的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卡+读卡器的组合;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表