Linux操作系統, 構建自己的內核——1. 製作可以在屏幕上打印hello world的img文件

學習課程:
操作系統-java

1. 先寫彙編:

boot.asm

org  0x7c00;

entry:
    mov  ax, 0
    mov  ss, ax
    mov  ds, ax
    mov  es, ax
    mov  si, msg

putloop:
    mov  al, [si]
    add  si, 1
    cmp  al, 0
    je   fin
    mov  ah, 0x0e
    mov  bx, 15
    int  0x10
    jmp  putloop

fin:
    HLT
    jmp  fin

msg:
    DB    0x0a,  0x0a
    db    "hello, OS world.I am copbint!"
    db    0x0a
    db    0

2. 編譯彙編

使用nasm編譯成二進制(一般的linux機器安裝nasm即可):
nasm boot.asm -o boot.bat

3. 製作img文件

課程中是利用java代碼對boot.bat文件進行操作,生成img文件。
覺得java代碼太複雜了,二進制編輯器直接搞起來。
有兩種方法:

1. ultraEdit

ultraEdit下載地址:
http://xiazai.zol.com.cn/detail/10/94683.shtml#hotArticle
20190821親測可用

使用方法:
直接使用ultraEdit打開boot.bat,編輯選項卡,選中16進制模式:
在這裏插入圖片描述
手工追加55AA之後,發現文件才68個字節。不知道什麼原因,img文件大小一定得是1474560才能啓動成功。所以構造一個大小爲1474560的文件。
編輯選項卡右上角,點 16進制插入/刪除
插入(1474560-58=1474492)個字節,插入的字符全部默認爲0x20,管他呢,反正沒影響。

最近將文件改名xxx.img

2. vim

具體操作參考:
vim編輯二進制文件

3. notepad使用hexeditor插件

下載地址:
https://blog.csdn.net/PYTandFA/article/details/83004124
下載完成之後直接將dll文件放到notepad安裝目錄的plugins目錄下,重啓notepad即可。

4. 設置virtual box從img文件啓動

在這裏插入圖片描述
效果圖:
在這裏插入圖片描述

4. 疑問

1. 爲什麼55AA不寫在扇區結尾的位置(510,511)也可以正常啓動?

猜測這就是virtualbox的機制吧。估計放到物理機上這麼寫就無法啓動了。

2. 爲什麼img文件一定要1474560字節,多一個字節,少一個字節都不行?

沒搜到啥資料。希望將來能搞明白吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章