简介

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的同学,赶紧尝试一下吧!


欢迎扫码关注我的公众号!
在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐