[作業系統] 作業系統真相還原讀書筆記一:部署工作環境
該作業系統使用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
- –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