hellos作業系統

2021-10-03 00:27:32 字數 3089 閱讀 8922

0.搭建環境

1.編寫彙編檔案

2.nasm生成可執行檔案

3.製作虛擬軟盤映像檔案

4.把執行檔案寫到映像檔案

5.把作業系統在虛擬機器或模擬器中執行起來。

首先先在ubuntu中安裝 bochs2.6.11

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站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...