1. 程式人生 > >[作業系統] 作業系統真相還原讀書筆記一:部署工作環境

[作業系統] 作業系統真相還原讀書筆記一:部署工作環境

該作業系統使用bochs開發,部署工作環境主要就是編譯安裝bochs。

收集配置資訊:

peter@ubuntu:~/Study/Myos/chapter1/bochs-2.6$ ./configure --prefix=/home/peter/MySoft/bochs2.6/ --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11

各引數表示意義如下:

  • –prefix=/home/peter/MySoft/bochs2.6/:指定bochs安裝目錄
  • –enable-debugger
    :開啟bochs自己的偵錯程式
  • –enable-disasm:使bochs支援反彙編功能
  • –enable-iodebug:啟用IO介面偵錯程式
  • –enable-x86-debugger:支援x86偵錯程式
  • –with-x:使用x windows
  • –with-x11:使用x11圖形使用者介面

編譯

執行如下命令編譯:

make

編譯如果出現如下錯誤:

g++ -o bochs -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DBX_SHARE_PATH=\"/home/peter/MySoft/bochs2.6/share/bochs\" logio.o main.o config.o load32bitOShack.o pc_system.o osdep.o plugin.o crc.o -Wl,--export-dynamic  iodev/libiodev.a
iodev/hdimage/libhdimage.a bx_debug/libdebug.a cpu/libcpu.a cpu/cpudb/libcpudb.a memory/libmemory.a gui/libgui.a disasm/libdisasm.a fpu/libfpu.a -lX11 -lXrandr -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig /usr/lib/x86_64-linux-gnu/libfreetype.so -Wl,--rpath -Wl,/usr/lib/x86_64-linux-gnu -Wl,--rpath -Wl,/usr/lib/x86_64-linux-gnu /usr/bin/x86_64-linux-gnu-ld: gui/libgui.a(gtk_enh_dbg_osdep.o):
undefined reference to symbol '[email protected]@GLIBC_2.2.5' //lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line

開啟MakeFile,在CXXFLAGS後面追加-lphread即可

安裝

執行如下命令:

make install

配置bochs

複製安裝目錄下share/doc/bochs/bochsrc-sample.txt到安裝目錄,並改名為bochsrc.disk,修改bochsrc配置檔案中的如下選項:

 # "#"是註釋(comment)

# 分配記憶體megs引數[megs: 128 分配128MB記憶體,最大是2048]不被贊成使用
# 使用memory替代
# guest 分配給模擬器客戶端的記憶體大小
# host  從guest分配給主機的記憶體大小,實際分配可能比guest小,如果用到了
# 更多的記憶體將會動態加入,但訪問不能大於guest記憶體大小.
# memory 沒有記憶體大小限制,限制的是CPU可訪問記憶體最大大小(即CPU地址匯流排寬度)
memory: guest=256,host=128
megs: 32

# 配置ROM BIOS,ROM BIOS將控制計算機首次啟動的功能(BIOS的韌體)
# file:ROM BIOS二進位制檔案路徑,這個引數下面不再解說
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest

# VGA ROM 的映象檔案  一般是被對映到記憶體地址0xC0000處,相當於我們的顯示卡
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

#使用軟碟機 floppy_ ,"_"可以是a,b,c,d...
#例子:軟碟機a,b 大小為1.44MB  
# 引數:status 有兩種分別為
# inserted(軟盤插入軟碟機),ejected(軟盤未插入軟碟機)。


# ata是一個介面 可以是ata0,ata1,ata2,ata3,用來控制硬碟(disk)和光碟機(cdrom)
#ioaddr1 分配主盤的io埠地址 ..... 
#ioaddr2 分配從盤的io埠地址 .....
#irg     中斷請求號(當發生中斷時,對應的中斷向量)
#學過硬碟埠讀寫的朋友應該知道主盤對應埠(0x1f0~0x1f7)
#從盤對應對口(0x3f0~0x3f7)
ata0: enabled=1,ioaddr1=0x1f0, ioaddr2=0x3f0,irq=14

#ata[0-3]-master 定義裝置型別和特徵 
#type       連線裝置的型別[disk(硬碟)|cdrom(光碟機)]
#path       虛擬映象路徑(我用的是virtualbox虛擬機器的虛擬硬碟)
#cylinders  柱面數(type為硬碟是才有這個引數)
#heads      每柱面擁有的磁軌數(type為硬碟是才有這個引數)
#spt        沒磁軌的扇區數量(type為硬碟是才有這個引數)
ata0-master: type=disk,path=hd60M.img, cylinders=103, heads=12, spt=17

#設定啟動順序 1.硬碟,2.軟碟機(配置過BIOS啟動項的朋友肯定知道)
boot: disk,floppy


#日誌輸出 log: 日誌路徑
log: bochslog.txt

#設定滑鼠不可用 ,如果enabled不為0那麼bochs會發送滑鼠事件到模擬機上
#因為是字元介面,無需滑鼠
mouse: enabled=0

#設定鍵盤
#type 鍵盤型別
#keymap 鍵盤對映檔案
keyboard: type=mf,keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map

啟動bochs

在bochs安裝目錄下執行如下命令:

bin/bochs -f bochsrc

相關推薦

[作業系統] 作業系統真相還原讀書筆記部署工作環境

該作業系統使用bochs開發,部署工作環境主要就是編譯安裝bochs。 收集配置資訊: peter@ubuntu:~/Study/Myos/chapter1/bochs-2.6$ ./con

《你必須知道的.NET》讀書筆記小OO有大智慧

實現 職責 可靠性 基本 code cfile 生存 最好 min() 此篇已收錄至《你必須知道的.Net》讀書筆記目錄貼,點擊訪問該目錄可以獲取更多內容。 一、對象   (1)出生:系統首先會在內存中分配一定的存儲空間,然後初始化其附加成員,調用構造函數執行初始化,這

《大型網站技術架構》讀書筆記大型網站架構演化

硬件 解決方案 更新 獨立 流量 操作 大型網站技術架構 負責 思維導圖 一、大型網站系統特點   (1)高並發、大流量:PV量巨大   (2)高可用:7*24小時不間斷服務   (3)海量數據:文件數目分分鐘xxTB   (4)用戶分布廣泛,網絡情況復雜:網絡運營

go programming language讀書筆記go語言命令列引數

訪問go programming language系列更多檔案,點選下面連結 go語言內部把命令以及命令後面的引數提取到了os包的Args,os.Args是一個分片, 它的第一個元素os.Args[0]是我們的命令名,os.Args[1:]是命令後面的引數列表, 引數

《深入淺出MySQL》 讀書筆記SQL基礎

一、SQL分類 1、create、drop、alter等,屬於 資料定義語言 2、insert、delete、update、select 屬於 資料操縱語句 3、grant等 定義訪問許可權和安全級別 屬於 資料控制語句 二、資料定義語句 mysql -uroot -p 輸入密

強化學習導論(Reinforcement Learning: An Introduction)讀書筆記()強化學習介紹

因為課題轉到深度強化學習方面,因此開始研究強化學習的內容,同時在讀這方面的書,並將Reinforcement Learning: An Introduction(Richard S. Sutton and Andrew G.Barto)第二版作為主要的學習資料,

《計算機視覺-種現代方法(第2版)》讀書筆記導論大綱

前言 作為CV(Computer Vision)方向的研究生,一直想要系統地瞭解和學習一下CV的基本知識,理清CV發展的脈絡。而David Forsyth的《Computer Vision-A Modern Approach(2nd edition)》是CV領

ROS學習筆記()建立工作空間和功能包

所有的ROS程式,包括我們自己開發的程式,都被組織成功能包,而ROS的功能包被存放在稱之為工作空間的目錄下。因此,在我們寫程式之前,第一步是建立一個工作空間以容納我們的功能包。其實ROS工作空間就是linux下的一個目錄,建立ROS工作空間就是建立一個linux目錄(我們建立名為catkin_ws的

RabbitMQ學習筆記本地Windows環境安裝RabbitMQ Server

一:安裝RabbitMQ需要先安裝Erlang語言開發包,百度網盤地址:http://pan.baidu.com/s/1jH8S2u6。直接下載地址:http://erlang.org/download/otp_win64_18.3.exe。 安裝完成後需要配置環境變數: 新建系統變數:變數名 ERLAN

讀書筆記之應用程式與作業系統之間的關係——《作業系統真相還原

這個知識點很好的解釋了為什麼一些程式不能跨平臺使用,比如windows與linux之間的應用程式一般不能通用,底層庫不同,可執行程式的格式也不同,後面章節中作者也點明瞭這個問題。此問題可見知乎上的討論:主要的原因是格式不同和API不同,前者更重要一些。http://www.

《計算機視覺-種現代方法(第2版)》讀書筆記早期視覺(幅影象)

本篇思維導圖 線性濾波器 線性濾波器的主要策略是用不同的加權模式計算畫素加權和,以尋找不同的影象模式 1.線性濾波和卷積 二維卷積公式:Rij=∑u,vHi−u,j−vFu,v,使用卷積核H將圖像F卷積到域R 幾種常見的線性濾波:平均平滑、

《一個作業系統的實現》讀書筆記--第三章--保護模式

pmtest1.asm ; pmtest1.asm ; 編譯方法:nasm pmtest1.asm -o pmtest1.com ; ========================================== %include "pm.inc" ; 常量, 巨

《計算機視覺-種現代方法(第2版)》讀書筆記中層視覺

本篇思維導圖 注:中層視覺主要關注的是影象中的幾何結構以及特定物件和目標,應用領域包括目標分割和跟蹤 通過聚類分割 分割的目的是為了得到一幅圖片中有用部分的一個精簡的表示,其具體的理論和方法取決於應用的需求 1 人類視覺:分類和格式塔(Gesta

《一個作業系統的實現》讀書筆記--第三章--分頁機制

1、邏輯地址、線性地址和實體地址 2、分頁管理機制 3、PDE、PTE、cr3 4、如何初始化頁目錄表與頁表 一、邏輯地址、線性地址和實體地址 1、在未開啟分頁機制情況下 2、在開啟分頁機制情況下 二、分頁管理機制 下圖向大家展示,如何通過分頁管理機制,將線

《一個作業系統的實現》讀書筆記--第三章---不同特權級程式碼段之間的跳轉

1、特權級 2、一致程式碼段和非一致程式碼段 3、DPL、RPL、CPL分別代表的含義,儲存在什麼位置,以及它們之間的關係 4、不同特權級資料段之間的訪問規則 5、不同特權級程式碼段之間的轉移 6、程式碼段之間的轉移對堆疊的影響 7、結合pmtest5.asm來見證不同特權

《計算機視覺-種現代方法(第2版)》讀書筆記高層視覺

本篇思維導圖影象配準(Registration)1.配準剛性物體變換:旋轉(rotation)、平移(translation)、縮放(scale) ∑i[(sR(θ)xi+t)−yc(i)]2∑i[(sR(θ)xi+t)−yc(i)]2迭代最近點:通過估計對應點尋找正確的變換

《一個作業系統的實現》讀書筆記--第三章--中斷機制

1、中斷產生的原因 2、如何將中斷向量與中斷服務程式關聯起來 3、外部中斷 一、中斷 中斷產生的原因有兩種:一是外部中斷,就是由硬體產生的中斷;另一種是由指令int n產生的中斷。 二、如何將中斷向量與中斷服務程式關聯起來 1、真實模式下: 這個過程很簡

《大型網站技術架構核心原理與案例分析》-- 讀書筆記 (5) 網購秒殺系統

案例 並發 刷新 隨機 url 對策 -- 技術 動態生成 1. 秒殺活動的技術挑戰及應對策略 1.1 對現有網站業務造成沖擊 秒殺活動具有時間短,並發訪問量大的特點,必然會對現有業務造成沖擊。對策:秒殺系統獨立部署 1.2 高並發下的應用、

C++筆記函數

bsp 重載 不同的 單純 效率 局部變量 好處 png 如意                           再談C++函數 1:引用 2:默認參數 3:函數重載 4:函數模板 —————————————————————————————————————————————

Java NIO筆記()NIO介紹

事件 .net 數據報 數據類型 單線程 long 處理 哪些 選擇 Java NIO即Java Non-blocking IO(Java非堵塞I/O),由於是在Jdk1.4之後添加的一套新的操作I/O工具包,所以通常會被叫做Java New IO。NI