X86 为什么较新的计算机无法从usb驱动器启动?
我只是做了一个如下的引导加载程序X86 为什么较新的计算机无法从usb驱动器启动?,x86,usb,bootloader,dd,X86,Usb,Bootloader,Dd,我只是做了一个如下的引导加载程序 jmp $ times 510 - ($ - $$) db 0 db 0x55 db 0xaa 然后我就跟着 nasm bootloader.asm -o bootloader dd if=bootloader of=/dev/sdb bs=512 count=1 我在两台电脑上测试。我将usb硬盘设置为两台计算机的最高启动优先级 采用英特尔奔腾M处理器(联想)的旧电脑通过usb驱动器上的引导加载程序进行引导 但采用英特尔i5进程的较新计算机(联想)表示没
jmp $
times 510 - ($ - $$) db 0
db 0x55
db 0xaa
然后我就跟着
nasm bootloader.asm -o bootloader
dd if=bootloader of=/dev/sdb bs=512 count=1
我在两台电脑上测试。我将usb硬盘设置为两台计算机的最高启动优先级
采用英特尔奔腾M处理器(联想)的旧电脑通过usb驱动器上的引导加载程序进行引导
但采用英特尔i5进程的较新计算机(联想)表示没有操作系统
(如果启动序列中有hdd,usb led将闪烁几次,计算机将从hdd驱动器启动。如果启动序列中没有hdd,则会发生操作系统丢失错误)
我以超级用户的身份打开了一个名为“Bless”的ubuntu实用程序,并检查/dev/sdb
实际上,在0x1fe和0x1ff处分别存在0x55 0xaa
我不知道为什么我不能用它在电脑上启动
这两台计算机具有相同的UEFI设置、启动优先级和无密码
请帮助一些BIOS要求您添加BPB标准代码,以便轻松识别USB及其文件系统 您可以将其添加到代码的开头,以便与所有BIOS一起识别。而且大多数人都能正确地加载它 添加此选项适用于所有类型的媒体。软盘以及硬盘、USB等
这将为您的驱动器添加一个公认的FAT12文件系统。
退房 使用nasm像往常一样编译它。并将其设置为带dd的MBR
;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