天天看點

開源項目-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的同學,趕緊嘗試一下吧!

歡迎掃碼關注我的公衆号!

開源項目-minios

繼續閱讀