0.搭建環境首先先在ubuntu中安裝 bochs2.6.111.編寫彙編檔案
2.nasm生成可執行檔案
3.製作虛擬軟盤映像檔案
4.把執行檔案寫到映像檔案
5.把作業系統在虛擬機器或模擬器中執行起來。
sudo
apt-get update //先公升級一下,以免後續的安裝出錯
然後安裝一些bochs需要的依賴 避免報錯出問題
sudo
apt-get
install build-essential nasm
sudo
apt-get
install libx11-dev (否則會出現fatal error: x11/xlib.h: no such file or directory)
sudo
apt-get
install xorg-dev (否則會出現fatal error:x11/extensions/xrandr.h: no such file or directory)
sudo
apt-get
install libgtk2.0-dev
sudo
apt-get
install bison
開啟終端 進入你想放置的目錄
解壓
tar zxvf bochs-2.6.9.tar.gz
進入目錄
cd bochs-2.6.9
執行
./configure --enable-debugger --enable-disasm
開啟bochs-2.6.9資料夾下makefile檔案, 在90行左右找到libs 在後面新增 -lx11
在進行編譯:
sudo
make
sudo
make
install
按順序操作應該是沒有error的
安裝完成輸入 bochs 測試一下是否安裝成功
跟上面一樣說明bochs安裝上了 但是沒有配置正確
需要編寫bochsrc配置檔案。我們後面在開始寫
boot.asm 簡單源程式
org 07c00h ; 告訴編譯器程式載入到7c00處
mov ax, cs
mov ds, ax
mov es, ax
call dispstr ; 呼叫顯示字串例程
jmp $ ; 無限迴圈
dispstr:
mov ax, bootmessage
mov bp, ax ; es:bp = 串位址
mov cx, 16 ; cx = 串長度
mov ax, 01301h ; ah = 13, al = 01h
mov bx, 000ch ; 頁號為0(bh = 0) 黑底紅字(bl = 0ch,高亮)
mov dl, 0
int 10h ; 10h 號中斷
retbootmessage: db "hello, os world!"
times 510-($-$$) db 0 ; 填充剩下的空間,使生成的二進位制**恰好為512位元組
dw 0xaa55 ; 結束標誌
編譯用到 linux 下的 nasm 編譯器
sudo
apt-get
install nasm
在boot.asm所在的目錄編譯源程式
nasm boot.asm -o boot.bin
在bochs的安裝目錄中,使用bximage生成映象
如上過程生成hello.img映象
dd if=boot.bin of=hello.img bs=512 count=1 conv=notrunc
命名為bochsrc.conf
megs:32
romimage:file=/usr/local/share/bochs/bios-bochs-latest
vgaromimage:file=/usr/local/share/bochs/vgabios-lgpl-latest
floppya:1_44=hello.img,status=inserted
boot:floppy
log:bochs.out
其中第2、3行中的路徑是根據bios-bochs-latest和vgabios-lgpl-latest的真實路徑,可以在檔案管理器中查詢到。
在bochs啟動自己編寫的mbr
把虛擬軟盤映像檔案hello.img 、配置檔案bochsrc.conf 放至bochs2.6.11的安裝目錄裡,然後執行命令
bochs -f bochsrc.conf
輸入 -f 的目的是直接使用配置檔案bochsrc.conf
預設回車 6操作
輸入c執行
成功顯示helloos
以上過程都要執行 某一步出錯可能就會出現[bios] no bootable device.這樣的錯誤
作業系統 作業系統介面
介面表現為函式呼叫,由作業系統提供,連線作業系統和應用軟體。出於安全性考慮,應用程式不能直接在記憶體中任意訪問 將核心程式和使用者程式隔離 通過比較訪問資料段cpl和rpl的特權級和當前段dpl的特權級之間的關係 應用程式呼叫庫函式printf printf呼叫庫中的write函式 write將函式...
作業系統(作業系統引論)
方便性 方便使用者進行操作計算機 有效性提高系統資源的利用率 提高系統的吞吐量,加速程式的執行 可擴充性 方便地增添新的模組和功能,以及對原有的功能模組進行修改 開放性能夠遵循世界標準規範 os作為使用者和計算機硬體系統之間的介面 使用者能夠通過作業系統來使用計算機系統 os作為計算機資源的管理者 ...
作業系統 作業系統 一 作業系統概述
好好學習,天天向上本文已收錄至我的github倉庫daydayup 歡迎star 之前一直沒有系統地學過作業系統,感覺自己在平時的學習過程中對於某些概念理解得一塌糊塗,比如中斷 記憶體 程序和執行緒等。所以打算系統的學習一下作業系統。一開始我是在b站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...