既然奔著seL4來的,那麼對於巨集內核與微內核的區別應該是很清楚的了,在此就簡單地介紹兩者的區別,本文主要用來完成seL4環境配置工作。 對於小白來說,自己獨自完成對seL4微內核的閱讀和理解真的很困難,目前跟著老師助教一起進行對seL4微內核的分析和理解。所以準備長期更新seL4學習的博客,希望大家 ...
既然奔著seL4來的,那麼對於巨集內核與微內核的區別應該是很清楚的了,在此就簡單地介紹兩者的區別,本文主要用來完成seL4環境配置工作。
對於小白來說,自己獨自完成對seL4微內核的閱讀和理解真的很困難,目前跟著老師助教一起進行對seL4微內核的分析和理解。所以準備長期更新seL4學習的博客,希望大家多多支持,錯誤之處還請各位幫忙指出改正。
對於兩者的區別也就簡單提一下,相關的資料十分充足可以自行查找滿足自己的需求。
微內核:所有的伺服器都相對獨立並且運行在各自的地址空間。通過進程間通信機制(IPC)實現進程之間的通訊,互換“服務”。伺服器的獨立運行避免了一個伺服器崩潰或及其他的伺服器。
巨集內核:也稱為單內核,將內核從整體上作為一個大過程實現,並且同時運行在一個單獨的地址空間。這也意味所有的內核服務之間可以直接調用函數,簡單高效。
下圖為巨集內核與微內核架構圖:
seL4 官網:http://sel4.systems/
seL4 wiki:https://wiki.sel4.systems/
seL4 項目主頁:http://ts.data61.csiro.au/projects/seL4/
在安裝和運行seL4系統之前,需要在機器上安裝必要的安裝包。這裡假設大家都安裝在Linux系統之上,並且下麵的示例均為Ubuntu14.04版本(64-bit)或者可以安裝在Ubuntu16.04版本(64-bit),當然也可以嘗試其他的Unix系統(包括Mac OS)等。
下圖為進行第一個實驗的要求:
下麵進行第一個seL4實驗:
下麵為獲取代碼以及第一個實驗執行hello1的指令
首先先將需要的seL4程式從git上面clone下來,指令如下所示:
>git clone https://github.com/zpfbuaa/seL4.git
其中後面的程式地址可以是其他的只要是源碼就行了,上面是指提供一個方便大家的鏈接。
為了避免鏈接失敗,下麵再多給些地址:
https://github.com/xcgxg/sel4-tutorials-manifest.git(和上述指令相同)
http://pan.baidu.com/s/1jIsdVTG (直接下載到Linux機器上就可以了)
http://pan.baidu.com/s/1kV2RkVH(直接下載就可以了)
該步目的在於完成對源碼的clone工作,為後期的源碼閱讀做準備。
假設大家都已經準備好了上述源碼的工作。
對於文件怎樣
下麵需要對源碼進行一系列的配置操作。
https://github.com/SEL4PROJ/sel4-tutorials/blob/master/Prerequisites.md
可以參照上述的鏈接。不過出現的問題就是安裝的東西有點多,甚至有些不必要安裝,看到上述的指令不要想就知道很麻煩。
下圖為代碼下載解壓之後的文件,其中rebuild.sh文件可能不存在,只是自己寫的一個指令腳本,用來對代碼進行clean等操作。
下麵為rebuild.sh文件的內容
下圖解釋每個指令的作用:
上述rebuild.sh文件的執行指令為:
> sh rebuild.sh
通過上述指令,可以重新build項目。
之後執行下述指令
產生錯誤信息如下所示:
原因是src/main.o以及src/util.o文件缺少,其中main.o以及util.o文件都是通過相對應的.c文件經過編譯得到的,也就是意味著main.c以及util.c文件出現了錯誤。所以下一步需要對src/main.c以及src/util.o文件經行必要的修改,來完成我們的第一個實驗hello1。
具體的文件路徑如下圖所示:
下麵我們查看main.c文件,可以使用指令gedit main.c同樣也可以使用vim main.c
通過上述的提示,告訴我們需要添加一個main函數用來列印一條消息,因為我們的第一個實驗就是hello1嘛,所以就直接讓程式列印HelloWorld未嘗不可。
這樣經過上述的操作,我們就可以開心地運行我們的helloworld程式了。
首先還是先運行sh rebuild.sh,重建項目。
下圖為需要進行的實驗hello-1的運行指令:
運行該指令文件結果如下所示:
其中會在下麵這個地方稍微等待一下:
接著程式進行編譯,編譯結果如下:
這樣我們就可以運行我們的hello1程式了,運行指令如下:
> qemu-system-i386 -nographic -m 512 -kernel images/kernel-ia32-pc99 -initrd images/hello-1-image-ia32-pc99
註意這裡可能報錯,如果之前工作沒有錯誤的話,這裡報的錯誤應該就是缺少程式包。由於已經安裝時錯誤截圖沒有保留,所以沒法給大家看具體的錯誤截圖了。
如果沒記錯的話,缺少的安裝包應該就是這個qemu-system-x86,如果不是這個的話,大家按照提示缺少的安裝包進行安裝即可。
> sudo apt-get install qemu-system-x86
修複上述問題之後,運行結果如下所示:
經過上述的操作,對於seL4的基本配置已經告一段落。
接下來就開始對seL4源碼的閱讀分析。
另外推薦一個不錯的鏈接:
推薦技術分享網站:http://www.jianshu.com/users/d130a6d54c7b/latest_articles(技術分享,歡迎大家捧場)