2014-09-23 45 views
1

我只是做了以下的bootloader爲什麼新電腦無法從USB驅動器啓動?

jmp $ 
times 510 - ($ - $$) db 0 
db 0x55 
db 0xaa 

後來再也以下

nasm bootloader.asm -o bootloader 

dd if=bootloader of=/dev/sdb bs=512 count=1 

我在2臺電腦進行測試。我將usb hdd設置爲兩臺計算機的最高啓動優先級。

舊電腦啓動加載英特爾奔騰M處理(聯想)的啓動從USB驅動器

但隨着英特爾酷睿i5處理(聯想)較新的電腦說,沒有操作系統。

(如果有對啓動順序硬盤時,USB指示燈閃爍數次,並從硬盤驅動器的電腦開機。如果有對啓動順序沒有硬盤驅動器,錯誤操作系統丟失,就會出現)

我開了一個Ubuntu的效用稱爲'保佑'作爲超級用戶並檢查/ dev/sdb

確實在0x1fe和0x1ff處分別存在0x55 0xaa。

我不知道爲什麼我無法在某臺計算機上啓動它。

兩臺計算機都具有相同的UEFI設置,啓動優先級,無密碼。

請幫助

回答

0

一些BIOS要求你添加BPB標準代碼易於識別的USB和它的文件系統。

您可以將此代碼添加到所有BIOS的代碼開頭。並且大多數人正確地加載它。

添加此作品適用於所有類型的媒體。軟盤以及HDD,USB等。
這將爲驅動器添加一個可識別的FAT12文件系統。
結帳osdev wiki

;bits 16      ; we are in 16 bit real mode 
use16 
org  0     ; we will set regisers later 

start: jmp main     ; jump to start of bootloader 
;nop    ; Pad out before disk description 

; ------------------------------------------------------------------ 
; Disk description table, to make it a valid floppy 
; Note: some of these values are hard-coded in the source! 
; Values are those used by IBM for 1.44 MB, 3.5" diskette 

bpbOEM   db "My OS " ; Disk label 
bpbBytesPerSector:  DW 512 ; Bytes per sector 
bpbSectorsPerCluster: DB 1 ; Sectors per cluster 
bpbReservedSectors:  DW 1 ; Reserved sectors for boot record 
bpbNumberOfFATs: DB 2 ; Number of copies of the FAT 
bpbRootEntries:  DW 224 ; Number of entries in root dir 
; (224 * 32 = 7168 = 14 sectors to read) 
bpbTotalSectors: DW 2880 ; Number of logical sectors 
bpbMedia:  DB 0xf0 ;; 0xF1 ; Medium descriptor byte 
bpbSectorsPerFAT: DW 9 ; Sectors per FAT 
bpbSectorsPerTrack:  DW 18 ; Sectors per track (36/cylinder) 
bpbHeadsPerCylinder: DW 2 ; Number of sides/heads 
bpbHiddenSectors: DD 0 ; Number of hidden sectors 
bpbTotalSectorsBig:  DD 0 ; Number of LBA sectors 
bsDriveNumber:   DB 0 ; Drive No: 0 
bsUnused:  DB 0 
bsExtBootSignature:  DB 0x29;0x41 ; Drive signature: 41 for floppy 
bsSerialNumber:   DD 0xa0a1a2a3 ; Volume ID: any number 
bsVolumeLabel:   DB "MOS FLOPPY " ; Volume Label: any 11 chars 
bsFileSystem:   DB "FAT12 " ; File system type: don't change! 

maincode: 

jmp $ 
times 510 - ($ - $$) db 0 
db 0x55 
db 0xaa 

像往常一樣用nasm編譯它。並用dd將其設置爲MBR。

相關問題