seL4環境配置


      轉載聲明:希望大家能夠從這里收獲知識之外,也能夠體會到博主撰寫博客的辛苦。個人博客勢單力薄,對於強轉甚至轉載博客訪問量高於原文的例子不在少數。

 

  希望能夠得到大家關注的同時,也能夠稍微體諒一下博主的不易。

  

  既然奔着seL4來的,那么對於宏內核與微內核的區別應該是很清楚的了,在此就簡單地介紹兩者的區別,本文主要用來完成seL4環境配置工作

   對於小白來說,自己獨自完成對seL4微內核的閱讀和理解真的很困難,目前跟着老師助教一起進行對seL4微內核的分析和理解。所以准備長期更新seL4學習的博客,希望大家多多支持,錯誤之處還請各位幫忙指出改正。

       對於兩者的區別也就簡單提一下,相關的資料十分充足可以自行查找滿足自己的需求。

        微內核:所有的服務器都相對獨立並且運行在各自的地址空間。通過進程間通信機制(IPC)實現進程之間的通訊,互換“服務”。服務器的獨立運行避免了一個服務器崩潰或及其他的服務器。

        宏內核:也稱為單內核,將內核從整體上作為一個大過程實現,並且同時運行在一個單獨的地址空間。這也意味所有的內核服務之間可以直接調用函數,簡單高效。

下圖為宏內核與微內核架構圖:

1.微內核與宏內核

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)等。

下圖為進行第一個實驗的要求:

image

下面進行第一個seL4實驗:

image

下面為獲取代碼以及第一個實驗執行hello1的指令

image

首先先將需要的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等操作。

image

下面為rebuild.sh文件的內容

image

下圖解釋每個指令的作用:

image

上述rebuild.sh文件的執行指令為:

> sh rebuild.sh

通過上述指令,可以重新build項目。

image

之后執行下述指令

產生錯誤信息如下所示:

02E49CM4$BX6QYDR930TL@K

原因是src/main.o以及src/util.o文件缺少,其中main.o以及util.o文件都是通過相對應的.c文件經過編譯得到的,也就是意味着main.c以及util.c文件出現了錯誤。所以下一步需要對src/main.c以及src/util.o文件經行必要的修改,來完成我們的第一個實驗hello1。

具體的文件路徑如下圖所示:

image

下面我們查看main.c文件,可以使用指令gedit main.c同樣也可以使用vim main.c

image

通過上述的提示,告訴我們需要添加一個main函數用來打印一條消息,因為我們的第一個實驗就是hello1嘛,所以就直接讓程序打印HelloWorld未嘗不可。

image

這樣經過上述的操作,我們就可以開心地運行我們的helloworld程序了。

首先還是先運行sh rebuild.sh,重建項目。

下圖為需要進行的實驗hello-1的運行指令:

image

運行該指令文件結果如下所示:

其中會在下面這個地方稍微等待一下:

image

接着程序進行編譯,編譯結果如下:

image

這樣我們就可以運行我們的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

修復上述問題之后,運行結果如下所示:

image

image

image

經過上述的操作,對於seL4的基本配置已經告一段落。

接下來就開始對seL4源碼的閱讀分析。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM