開源項目-minios

簡介

minios 是使用QEMU實現的一個迷你 Linux 系統。它由 Linux 內核和 Rootfs 組成,Rootfs中包含了一系列的第三方基礎庫,比如 Libc , BusyBox 。這些都是操作系統運行的基礎組件。利用 minios ,可以快速的構建一個 Linux 最小系統,包含有console和一系列的 busybox 命令。​利用 minios ,可以快速的構建一個 Linux 最小系統,包含有console和一系列的 busybox 命令。
用戶需求比如:

  • 驗證 Linux 內核特性,可以通過修改 defconfig 來使能對應的內核特性,快速編譯 minios 來驗證功能。​
  • 驗證驅動,可以添加驅動代碼到 minios 環境中,編譯驅動並加載驗證。
  • 驗證應用,上層應用也可以使用 minios 來進行驗證,支持nfs文件系統掛載。

本項目創建初衷是便於嵌入式開發的,所以整個構建都是使用交叉編譯的形式進行,支持兩個平臺,ARM/ARM64。

組件

minios 組件包括編譯器,內核,C標準庫,Busybox工具庫。用戶可以根據自己的需要進行擴展,添加內核特性/驅動/應用到 minios 中。編譯完成後,minios 可以直接在QEMU虛擬機中運行起來,驗證對應的組件功能。

minios 的代碼是託管在github上的,可以通過如下方式克隆倉庫:

git clone https://github.com/rikeyone/mini-os

下載倉庫後,可以看到該倉庫是由如下一些腳本和目錄組成:

build.sh  install.sh  kernel  lib  README.md  run.sh  scripts  sdk

該倉庫中只包含一系列shell腳本,並沒有實際意義上的代碼,這是因爲我把必要的組件進行了單獨的管理,分別放置於不同的github倉庫中了。類似於android的代碼管理方式,不同的組件使用不同的倉庫進行管理。這樣避免了各個第三方庫之間的開源協議衝突,避免一些官司,當然也可能是我多慮了,畢竟小衆的項目可能根本不會涉及到官司,不管如何也是爲了讓我的項目更加規範。這樣 minios 也可以按照預期的開源協議進行發佈。

安裝

在下載 minios 倉庫後在目錄有3個主要用途的shell腳本,分別是 install.sh build.sh run.sh 。在編譯 minios 之前需要先安裝一些必要軟件,比如開發環境/編譯器等。直接執行:

sudo ./build.sh

運行時會申請root權限,因爲需要安裝到系統目錄中。

編譯

編譯 minios 時,直接運行目錄中的build腳本:

./build.sh [-a][-m module][-p platform]

各個參數的含義如下:

 -a: build all modules.
 -m: build expect module:kernel/rootfs/busybox/libc/initramfs.
 -p: build platform, support arm and arm64, default is arm64.
 -h: help informations.

實際上在該項目中還存在一個 scripts 目錄,當我們運行build腳本時實際上是調用到該目錄中的一系列的腳本來做具體任務的。

build_busybox.sh    build_kernel.sh  build_rootfs.sh  qemu_gdb_start.sh  qemu_sd_start.sh  qemu_stop.sh
build_initramfs.sh  build_libc.sh    envsetup.sh      qemu_nfs_start.sh  qemu_start.sh

我們可以指定全編譯類型或者單獨觸發某一個子模塊的編譯。在build各個模塊時,會先判斷該模塊是否已經下載了代碼,如果沒有代碼會先下載對應模塊的代碼倉庫,這次下載的是真正意義上的代碼。
編譯實例:
編譯 arm64 平臺(默認)上的 minios

./build.sh -a

編譯 arm64 平臺(默認)上的子模塊:

./build.sh -m kernel
./build.sh -m rootfs

運行

運行 arm64 平臺的 minios

sudo ./run.sh

運行 arm 平臺的 minios

sudo ./run.sh -p arm

停止運行

停止運行 arm64 平臺的 minios

sudo ./run.sh -s

停止運行 arm 平臺的 minios

sudo ./run.sh -s -p arm

以上就是 minios 的一些基本信息,想要學習Linux的同學,趕緊嘗試一下吧!


歡迎掃碼關注我的公衆號!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章