2011-08-13 28 views
8

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.

Trả lời

8

Khi bạn đang sử dụng dd, hãy thử thêm tùy chọn conv=notrunc. Điều này buộc nó không cố gắng cắt ngắn các tập tin, nhưng thay vào đó, chỉ ghi đè lên các phần bạn đã chỉ định.

+1

Cảm ơn bạn rất nhiều. Tôi sẽ không bao giờ đoán được –

Các vấn đề liên quan