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


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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
07-04
minios目前已经完成的功能:<br>bootsector<br>进入保护模式<br>内存分配模块<br>简单的线程调度模块<br>信号量<br>时钟<br>统一的设备驱动模型<br>标准输入输出设备驱动<br>内存及字符串相关的标准C库函数<br><br><br>附件codes.zip的目录结构如下:<br>codes<br>|-relocate 连接程序的源代码,将bootsector和minios连接成一个可启动的磁盘镜像<br>|-bootsector bootsector的源代码<br>|-minios minios的源代码<br>|-bin 所有的目标都在此目录中。其中minios.vhd就是可启动的磁盘镜像<br><br>如何启动minios:<br>你必须安装Microsoft的Virtual PC 2007<br>你可以在微软的官方网站下载他的安装程序,程序大小约30M<br>http://download.microsoft.com/download/8/5/6/856bfc39-fa48-4315-a2b3-e6697a54ca88/32%20BIT/setup.exe<br>安装完成后就可以双击codes/bin/vm.vmc运行minios了<br><br>如何编译minios:<br>编译minios共需要三种编译器。<br>codes/bootsector/bootsector.asm必须用nasm进行编译,将编译的结果命名为bootsector并且拷贝到codes/bin<br>codes/minios/platform/platform.asm必须用masm32进行编译,编译的结果在codes/minios/platform/platform.obj<br>其余的代码都用vc6编译即可,vc6的工程在codes/minios/minios.dsw<br>如果你手边没有nasm和masm32,不要紧,因为这两个文件一般不需要改动,直接用我编译好的目标文件就可以了<br><br>双击minios.dsw打开vc6,点击菜单Project->Project Setting->Debug,修改Executable for debug session一栏<br>将Virtual PC.exe的完整路径填入。如果你安装在默认的路径下,就不需要修改它。<br>然后直接Ctrl-F5运行就可以编译并且运行了。<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值