Tôi đang cố viết một bộ nạp khởi động cho một Hệ điều hành Hobby và làm cho nó hoạt động tốt. Không có gì đặc biệt, chỉ cần in một dòng văn bản:Các vấn đề về bộ nạp khởi động tùy chỉnh
BITS 16
ORG 0
start: jmp main
OEM db "Test OS "
BytesPerSector: DW 512
SectorsPerCluster: DB 1
ReservedSectors: DW 1
NumberOfFATs: DB 2
RootEntries: DW 224
TotalSectors: DW 2880
Media: DB 0xf8
SectorsPerFAT: DW 9
SectorsPerTrack: DW 18
HeadsPerCylinder: DW 2
HiddenSectors: DD 0
TotalSectorsBig: DD 0
DriveNumber: DB 0
Unused: DB 0
ExtBootSignature: DB 0x29
SerialNumber: DD 0xa0a1a2a3
VolumeLabel: DB "HOBBY OS "
FileSystem: DB "FAT12 "
main:
;Adjust code Seg.
cli
mov ax, 0x07c0
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
;Set up Stack
mov ax, 0x0000
mov ss, ax
mov sp, 0xFFFF
sti
mov si, msg
call print
print:
.charLoop:
lodsb
or al,al
jz .done
mov ah, 0x0E
int 0x10
.done
ret
msg db "Hello World",13,10,0
Im biên soạn với
nasm -f bin loader.asm -o loader.bin
dd if=loader.bin of=floppy.img bs=512 count=1 seek=0
Tôi đã đọc rằng 446 byte đầu tiên là mã khởi động và byte 447-509 là bảng phân vùng . Tôi đã thử sau đó sử dụng:
dd if=loader.bin of=floppy.img bs=446 count=1 seek=0
để cố gắng ngăn bảng phân vùng bị ghi đè nhưng vẫn không có xì gà.
Im sử dụng máy Mac với OSX và kiểm thử hệ điều hành với VirtualBox
tôi có thể chạy các floppy.img trong VBox và mã hoạt động tốt, nhưng khi tôi cố gắng để cài đặt bộ nạp khởi động lên một FAT 16 đĩa định dạng, OSX dường như không thể đọc được ảnh đĩa nữa như thể nó chưa được định dạng.
Thông báo chính xác ra khỏi tiện ích đĩa là Unable to attach image "floppy.img."(No Mountable File Systems)
Mặc dù tôi vừa định dạng đĩa bằng hệ thống tệp FAT 16.
Thật không may vì đây là bài đăng đầu tiên của tôi, tôi không thể cung cấp cho bạn hình ảnh.
Tôi thực sự đánh giá cao bất kỳ trợ giúp nào. Cấu trúc đĩa thực sự không phải là sở trường của tôi.
Cảm ơn bạn rất nhiều. Tôi sẽ không bao giờ đoán được –