幫助中心

        當(dāng)前位置:首頁 > 幫助中心 > U盤啟動(dòng)不成功的原因分析

        U盤啟動(dòng)不成功的原因分析

        日期:2011-06-14 | 時(shí)間:23:57
        不同的BIOS進(jìn)行U盤(USB-HDD方式)啟動(dòng)時(shí),對(duì)同一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í)還有一種按照相對(duì)扇區(qū)數(shù)來表達(dá)的方式,這種表達(dá)方式也同時(shí)記錄在分區(qū)表和磁盤參數(shù)表中。這樣就看軟件使用哪一種數(shù)據(jù)來工作了,如果使用CHS,那么換一臺(tái)機(jī)器就一定不會(huì)正常工作,如果使用LBA方式訪問磁盤就不會(huì)受影響---當(dāng)然前提是BIOS支持對(duì)U盤使用LBA方式訪問即擴(kuò)展INT13H。而XP對(duì)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卡+讀卡器的組合;
        2、使用活動(dòng)硬盤啟動(dòng)基本沒問題。
        3、使用不受錯(cuò)誤的CHS參數(shù)影響的boot loader啟動(dòng),比如GNU GRUB或SYSLINUX啟動(dòng),或其它組合。

        下面介紹我嘗試過的使用GNU GRUB、GRUB CHS和GRUB for DOS的方法:

        方法一:完全使用grub中文版的stage1、stage1.5、stage2啟動(dòng),grub中文版作者Gandalf。
        1、找到一臺(tái)正常運(yùn)行GNU GRUB0.95或0.97的機(jī)器(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是大多數(shù)情況),注意做好原來文件備份。
        3、插入要做啟動(dòng)的U盤或移動(dòng)硬盤,進(jìn)行分區(qū),因?yàn)橛幸恍〣IOS對(duì)USB-HDD只支持CHS方式,從而限制了啟動(dòng)分區(qū)不能超過1023*16*63個(gè)扇區(qū),所以為了通用性,啟動(dòng)分區(qū)不要超過511M,類型為0xe,(閱讀Win98se的DOS 7.1的boot啟動(dòng)代碼發(fā)現(xiàn)DOS 7.1使用0xe這個(gè)類型支持LBA方式啟動(dòng),它的文件訪問也許也使用這個(gè)標(biāo)志,雖然對(duì)grub可能用不到,但是如果多引導(dǎo)中包含DOS 7.1的話就有用了),設(shè)置引導(dǎo)標(biāo)志,格式化為fat16文件系統(tǒng)。這一切都在linux下進(jìn)行。(12月29日更正)
        4、把啟動(dòng)分區(qū)mount到/mnt內(nèi)
        5、grub-install  --root-directory=/mnt  /dev/sdX,注意千萬不能選擇--force-lba,因linux下的grub現(xiàn)在與stageX不配套,機(jī)器會(huì)無法啟動(dòng)
        6、不要理會(huì)/mnt/boot/grub/device.map文件,這個(gè)文件是grub-install程序使用的,安裝后就沒用了。
        7、umount /mnt并恢復(fù)/usr/share/grub內(nèi)容
        這樣因--force-lba選項(xiàng)未啟用可以說留有遺憾,所以下一步使用此設(shè)備啟動(dòng),在grub命令行下:
        1、root(hd0,0),這里指定stage image文件源在哪里
        2、setup --force-lba (hd0),進(jìn)行安裝,至此grub中文版已完全安裝到MBR里。
        這種方法是我最初采用的方法,但是現(xiàn)在grub中文版已停止更新,所以這種方法我不推薦。

        方法二:使用GNU GRUB啟動(dòng)后加載grub for dos
        1、找到最新的穩(wěn)定版本的linux,比如Redhat ELAS5 Update1,直接把它的GNU GRUB加上--force-lba選項(xiàng)安裝到U盤MBR里(可參照方法一,注意不要覆蓋那些文件了,也別忘了把分區(qū)類型設(shè)為0xe)。
        2、把grub_for_dos-0.4.2.zip中的chinese/grub.exe復(fù)制到U盤根目錄中。
        3、使用GNU GRUB引導(dǎo)后使用kernel /grub.exe和boot命令引導(dǎo)grub.exe這樣就可享受grub for dos的中文菜單和直接支持ntldr、io.sys啟動(dòng)的功能了。
        這種方法好在可以始終使用最新的最穩(wěn)定的GNU GRUB來對(duì)付buggy BIOS,同時(shí)仍享受grub for dos中文版的便利。這種方法在我的機(jī)器上不論是PE還是DOS,啟動(dòng)速度相當(dāng)?shù)穆瓦B菜單顯示速度都出奇地慢,而且不僅僅是啟動(dòng)過程,就連啟動(dòng)成功后運(yùn)行其他程序也是很慢,我覺得是grub for dos中文版的原因,試用過grub for dos中文版0.41、0.42和0.43均不理想。

        方法三:使用GNU GRUB的stage1、stage1.5和grub 0.97中文版的stage2混合啟動(dòng)
        1、找到最新的穩(wěn)定版本的linux,比如Redhat ELAS5 Update1,直接把它的GNU GRUB加上--force-lba選項(xiàng)安裝到U盤MBR里(可參照方法一,注意不要覆蓋那些文件了,也別忘了把分區(qū)類型設(shè)為0xe)。
        2、使用grub_for_dos-0.4.1.zip中chinese/boot/grub中stage2文件替換掉U盤中/boot/grub/stage2
        這種方法優(yōu)點(diǎn)同方法二,并且啟動(dòng)更為迅速,缺點(diǎn)就是這畢竟不是通常的做法,在GNU GRUB版本更新后不一定還可行,不過好像GNU GRUB也停止更新了:-)。在目前的情況下,個(gè)人推薦這種方法。

        其它嘗試:使用syslinux引導(dǎo)grub for dos0.41、0.42和0.43的grub.exe也試驗(yàn)成功,但與方法二一樣啟動(dòng)和運(yùn)行速度很慢。

        實(shí)際應(yīng)用測試:
        現(xiàn)在我自己的工具盤(150速 創(chuàng)見2G SD卡+川宇150X SDHC讀卡器,題外話:這個(gè)讀卡器除了支持150速以外其它真是垃圾)就是使用方法三制作的,在實(shí)際環(huán)境中還沒有發(fā)現(xiàn)無法啟動(dòng)的現(xiàn)象。其中包括HP DL380G3、G4、DL580、Dell 3850、6850、IBM X345、346、3650等,當(dāng)然還包括我的臺(tái)式機(jī)和筆記本電腦。

        這里補(bǔ)充說明一下:這個(gè)帖子僅僅是對(duì)影響U盤USB-HDD方式啟動(dòng)的若干因素其中一個(gè)重要因素的探索,這個(gè)鏡像只是相對(duì)流行做法作了改進(jìn),提高了U盤在不同機(jī)器上啟動(dòng)成功可能性,并不能說就此解決了U盤USB-HDD方式啟動(dòng)的所有問題。本來作為研究帖子是只想提供方法不想提供具體成品的,但是考慮到種種因素,還是放出來供大家測試吧。

        因?yàn)間host在恢復(fù)時(shí)會(huì)自行更該分區(qū)類型到06,所以我使用了winhex生成了一個(gè)1:1的U盤鏡像供研究,解壓縮后文件名為U-1gboot.img。這個(gè)啟動(dòng)盤為了壓縮體積,僅僅有一個(gè)假的啟動(dòng)菜單,只要啟動(dòng)時(shí)出現(xiàn)這個(gè)菜單就算成功了。

        大白菜官網(wǎng)

        (責(zé)任編輯:www.hushhushevents.com)

        大白菜超級(jí)U盤啟動(dòng)盤制作工具

        主站蜘蛛池模板: 国模无码一区二区三区不卡| 一区二区三区在线播放视频| 亚洲av无码成人影院一区| 中文字幕AV一区二区三区人妻少妇| 久久青青草原一区二区| 无码一区二区三区老色鬼| 亚洲欧美国产国产一区二区三区| 一区二区三区在线|日本| 国产乱人伦精品一区二区| 午夜精品一区二区三区免费视频| 国产suv精品一区二区6| 在线|一区二区三区| 亚洲AV网一区二区三区| 中文字幕精品一区二区| 深田咏美AV一区二区三区| 久久精品成人一区二区三区| 中文字幕在线不卡一区二区 | 亚洲天堂一区在线| 久久精品岛国av一区二区无码| 国产情侣一区二区| 伊人久久精品一区二区三区| 日日摸夜夜添一区| 韩国美女vip福利一区| 99精品国产一区二区三区不卡| 久久久久成人精品一区二区 | 精品一区二区久久久久久久网精| 亚洲无码一区二区三区| 国产成人精品一区二三区熟女 | 成人国产精品一区二区网站公司| 在线日产精品一区| 日韩综合无码一区二区| 人妻激情偷乱视频一区二区三区| 精品乱码一区内射人妻无码| 久久综合精品国产一区二区三区| 无码国产精品一区二区免费16| 国产伦精品一区二区三区女| 国产精品第一区第27页| 日韩亚洲AV无码一区二区不卡| 国精产品999一区二区三区有限 | 亚洲国产精品一区二区第一页免| 激情内射日本一区二区三区|