天天看点

开源项目-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

继续阅读