在不同的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
8、grub chs 0.95 0.97(內含的stage1、stage1.5和stage2引導代碼)