羅左欣 BE STRONG TO BE USEFUL

20170714 [學習筆記] 30天作業系統自作入門筆記 (1)


20170714 - Day_1

一、安裝 nasm ,編譯映像檔

1. 在終端上輸入以下指令,安裝 nasm

sudo apt install nasm

2. 用 vim 檢視 helloos.nas 的內容

DB	0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4f
DB	0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01, 0x00
DB	0x02, 0xe0, 0x00, 0x40, 0x0b, 0xf0, 0x09, 0x00
DB	0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
DB	0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x29, 0xff
DB	0xff, 0xff, 0xff, 0x48, 0x45, 0x4c, 0x4c, 0x4f
DB	0x2d, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x46, 0x41
DB	0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00
RESB	16
DB	0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB	0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB	0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB	0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB	0xee, 0xf4, 0xeb, 0xfd, 0x0a, 0x0a, 0x68, 0x65
DB	0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72
DB	0x6c, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00
RESB	368
DB	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa
DB	0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB	4600
DB	0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB	1469432

好吧,我發現自己看不懂…得找找相關的組合語言書籍。

3. 將 helloos.nas 編譯成映像檔 helloos.img

nasm -o helloos.img helloos.nas

二、新增虛擬機、載入映像檔

1. 環境配置 » 記憶體:256MB、硬碟:8GB

2. 設定虛擬機欲讀取的映像檔位置

  • 在書本範例上是使用 “軟碟機” 讀取映像檔 helloos.img

3. 啟動虛擬機

  • 可以看到螢幕上顯示 hello, world 後畫面停滯不動,觀察完後便可將虛擬機關機。

三、改變螢幕上面的字

1. 用 vim 修改 helloos.img 映像檔

  • 將內文中的 hello, world 改成 Hello, shouzo. Be Strong to Be Useful.

  • 編輯完成後,將映像檔另存成 hello_shouzo.img

2. 設定新的映像檔讀取位置後,啟動虛擬機

  • 本次將欲讀取的映像檔改成 hello_shouzo.img


Similar Posts

Comments