U盤HDD模式無法啟動(dòng)的原因及解決思路
2024-07-16 17:49:30
供稿:網(wǎng)友
不同的BIOS進(jìn)行U盤(USB-HDD方式)啟動(dòng)時(shí),對同一U盤的容量參數(shù)---柱面、磁頭和扇區(qū)數(shù)(簡稱CHS),識(shí)別各不相同(證明這一點(diǎn)可以在不同的機(jī)器上安裝同一版本的linux,然后插入U(xiǎn)盤,使用hdparm /dev/sda命令就可以發(fā)現(xiàn)CHS在不同機(jī)器各不相同,甚至如果U盤可以使用GRUB啟動(dòng)的話,在GRUB里使用geometry (hd0)命令也能看出來),這樣在一臺(tái)機(jī)器上分區(qū)格式化所產(chǎn)生的的分區(qū)表和FAT磁盤參數(shù)表是按照這臺(tái)機(jī)器所識(shí)別的硬盤的CHS來表達(dá)的,換到另一臺(tái)機(jī)器時(shí)由于另一臺(tái)機(jī)器識(shí)別的CHS不一樣,這樣就會(huì)產(chǎn)生混亂。所幸的是,分區(qū)表和FAT磁盤參數(shù)表同時(shí)還有一種按照相對扇區(qū)數(shù)來表達(dá)的方式,這種表達(dá)方式也同時(shí)記錄在分區(qū)表和磁盤參數(shù)表中。
這樣就看軟件使用哪一種數(shù)據(jù)來工作了,如果使用CHS,那么換一臺(tái)機(jī)器就一定不會(huì)正常工作,如果使用LBA方式訪問磁盤就不會(huì)受影響---當(dāng)然前提是BIOS支持對U盤使用LBA方式訪問即擴(kuò)展INT13H。而XP對FAT16文件系統(tǒng)分區(qū)格式化生成的MBR代碼以及DOS各版本均需依靠CHS工作,所以按照通常方法在一臺(tái)機(jī)器制作的啟動(dòng)U盤在另一臺(tái)機(jī)器啟動(dòng)就有可能不成功。經(jīng)測試移動(dòng)硬盤在各BIOS中的CHS倒是一致的,與該硬盤直接接在IDE口上的CHS相同,所以移動(dòng)硬盤的USB啟動(dòng)基本上并無困難。
目前我發(fā)現(xiàn)的確實(shí)受這一問題的影響,從而影響啟動(dòng)的程序有:
1、Windows XP及SP1中文版磁盤管理器分區(qū)時(shí)所寫的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識(shí)別FAT文件系統(tǒng))
5、USBoot產(chǎn)生的MBR和boot(與1相同)
6、使用bootlace.com將grub for dos 0.41中的grldr.mbr安裝至MBR
可能不受這一問題影響的程序有(未經(jīng)充分測試):
1、win98、98se的fdisk所寫的MBR
2、win98、98se的format所寫的boot(要求FAT16分區(qū)類型必須是0xe以支持LBA)
3、ntldr以及隨后啟動(dòng)的PE或XP環(huán)境(當(dāng)然了,否則U盤就沒法使用了)
4、linux下的install-mbr程序所寫的MBR
5、GNU GRUB 0.95和0.97及其使用grub-install命令安裝的引導(dǎo)代碼
6、syslinux3.36和3.51
7、linux2.4內(nèi)核以上,基本上linux系統(tǒng)所有程序?qū)AT文件系統(tǒng)都不會(huì)使用CHS
8、grub chs 0.95 0.97(內(nèi)含的stage1、stage1.5和stage2引導(dǎo)代碼)
所以解決此問題思路相應(yīng)就有:
1、強(qiáng)制U盤以USB-CDROM、USB-FLOPPY或USB-ZIP方式啟動(dòng),這樣各家BIOS就有標(biāo)準(zhǔn)可循了,就不會(huì)“自說自話",這也是目前使用U盤量產(chǎn)工具的基本思路,但是這樣就讓沒有量產(chǎn)工具的SD卡+讀卡器的組合失望了,而目前的多數(shù)大容量U盤均無寫保護(hù)開關(guān)或者讀寫速度不理想,有時(shí)還是需要高速SD卡+讀卡器的組合;