为什么U盘不能启动 如何解决
程序员文章站
2022-04-25 12:18:02
为什么U盘不能启动 如何解决不同的BIOS进行U盘(USB-HDD方式)启动时,对同一U盘的容量参数---柱面、磁头和扇区数(简称CHS)... 14-01-24...
不同的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、usboot产生的mbr和boot(与1相同)
3、使用bootlace.com将grub for dos 0.41中的grldr.mbr安装至mbr
可能不受这一问题影响的程序有(未经充分测试):
1、ntldr以及随后启动的pe或xp环境(当然了,否则u盘就没法使用了)
2、linux下的install-mbr程序所写的mbr
3、gnu grub 0.95和0.97及其使用grub-install命令安装的引导代码
4、syslinux3.36和3.51
5、linux2.4内核以上,基本上linux系统所有程序对fat文件系统都不会使用chs
6、grub chs 0.95 0.97(内含的stage1、stage1.5和stage2引导代码)
所幸的是,分区表和fat磁盘参数表同时还有一种按照相对扇区数来表达的方式,这种表达方式也同时记录在分区表和磁盘参数表中。这样就看软件使用哪一种数据来工作了,如果使用chs,那么换一台机器就一定不会正常工作,如果使用lba方式访问磁盘就不会受影响---当然前提是bios支持对u盘使用lba方式访问即扩展int13h。而xp对fat16文件系统分区格式化生成的mbr代码以及dos各版本均需依靠chs工作,所以按照通常方法在一台机器制作的启动u盘在另一台机器启动就有可能不成功。经测试移动硬盘在各bios中的chs倒是一致的,与该硬盘直接接在ide口上的chs相同,所以移动硬盘的usb启动基本上并无困难。
目前我发现的确实受这一问题的影响,从而影响启动的程序有:
1、windows xp及sp1中文版磁盘管理器分区时所写的mbr
2、usboot产生的mbr和boot(与1相同)
3、使用bootlace.com将grub for dos 0.41中的grldr.mbr安装至mbr
可能不受这一问题影响的程序有(未经充分测试):
1、ntldr以及随后启动的pe或xp环境(当然了,否则u盘就没法使用了)
2、linux下的install-mbr程序所写的mbr
3、gnu grub 0.95和0.97及其使用grub-install命令安装的引导代码
4、syslinux3.36和3.51
5、linux2.4内核以上,基本上linux系统所有程序对fat文件系统都不会使用chs
6、grub chs 0.95 0.97(内含的stage1、stage1.5和stage2引导代码)
上一篇: 联想L195WE花屏维修一例
下一篇: 三星显示器943NW高压板维修经验