seL4環境配置

来源:http://www.cnblogs.com/zpfbuaa/archive/2016/11/14/6063633.html
-Advertisement-
Play Games

既然奔著seL4來的,那麼對於巨集內核與微內核的區別應該是很清楚的了,在此就簡單地介紹兩者的區別,本文主要用來完成seL4環境配置工作。 對於小白來說,自己獨自完成對seL4微內核的閱讀和理解真的很困難,目前跟著老師助教一起進行對seL4微內核的分析和理解。所以準備長期更新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源碼的閱讀分析。

另外推薦一個不錯的鏈接:

推薦技術分享網站:http://www.jianshu.com/users/d130a6d54c7b/latest_articles(技術分享,歡迎大家捧場)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鑒於框架的使用者越來越多,文檔太少,不少用戶反映框架的入門門檻太高。好吧,再辛苦下,抽時間寫教程吧! ...
  • 本文介紹.Net Core下用第三方ZKWeb.System.Drawing實現驗證碼功能。 通過測試的系統: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64bit Fedora 24 64bit CentOS 7.2 64bit 可以實現以下功能: Ope... ...
  • ...
  • 求一個數兩位數的個位數,十位數及百位數: int num = 53; int g = num % 10; //個位 int s = (num / 10) % 10; //十位 int b = (num / 100); //百位 下麵是用java寫的一個一般般的 拆分整數的案例 值得大伙研究研究,趣味 ...
  • 前言 國際慣例,本文仍然是在學習設計模式的路上所寫,希望對同樣在學習設計模式的童靴有點作用,大牛誤入的話還請給點寶貴意見,感激不盡。 另外最近好尷尬,公司外網全部給撤了,白天又沒有什麼事情乾,好TM尷尬,本來想著趁著最近沒事趕緊把設計模式看完寫完的,誰知道來這麼個事情,好尷尬,只能晚上加班寫了,白天 ...
  • 英文文檔: setattr(object, name, value) This is the counterpart of getattr(). The arguments are an object, a string and an arbitrary value. The string may ...
  • 英文文檔: 說明: 1. 傳入一個可迭代對象,生成一個新的集合。 2. 不傳入參數時,生成一個新的空集合。 3. 返回的集合是可以修改的。 ...
  • 1.1 PHP 超文本預處理程式。實際就是製作網站的腳本程式 1.2 運行環境: wamp——windowns+apache+mySQL+php 常用於開發、學習和研究 lamp ——linux+apache+mySQL+php 常用於運行和維護 1.3 工作原理:客戶端通過瀏覽器訪問網站,相當於對 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...