MINIX3入门-简介及代码编译运行
原创 thatway 那路谈OS与SoC嵌入式软件 2022-11-04 17:35
之前介绍过从1992年开始两位大佬**Linus**
和Tanenbaum
就已经打响了微内核
和宏内核
的之争的战役,可以这么说MINX一直是微内核开源领域的扛把子
,MINIX吸收了很多先进的思想到其中,一路演变到MINIX3,且越战越勇
。
我要说MINIX3是目前**装机量最高**
的OS,你会不会打我。据称2008年以来
英特尔推出的处理器大都运行着一个修改版的MINIX3操作系统,英特尔管理引擎(Intel ME)运行其上,该系统在处理器内部有自己的CPU内核和专属固件
,完全独立于其他部分,运行权限达到了Ring-3,且具有完整的
网络堆栈、文件系统、Web服务器,以及USB和网络等一系列驱动
。也就是说这个MINIX系统可以不依赖于CPU,拥有自己独立的硬件,功能齐全,可以说它想干什么就干什么
。另一方面也说明了MINIX的安全性
很高,Intel用也不怕它出问题,这就是微内核的魅力
所在。微内核相关介绍参考之前的文章:
- 1. 简介
1987
,
Minix
诞生了。Minix
是Mini Unix
的缩写,一个迷你版类
Unix
操作系统。M
inix 原来是荷兰阿姆斯特丹的 Vrije 大学计算机科学系的
安德鲁·塔能鲍姆
(Andrew
S. Tanenbaum )教授所开发的一个类 UNIX 操作系统,开发初衷是方便教学使用(因为 AT&T 推出 Version 7 Unix 之后,将 Unix 源码进行了私有化)。
M
inix 全部的源代码共约 12,000 行,并置于他的著作Operating
Systems: Design and Implementation(ISBN 0-13-637331-3)的附录里作为范例。
M
inix 的系统要求在当时来说非常简单,只要三片磁片就可以启动。
详细的介绍强烈推荐你看下之前的一篇介绍,里面介绍了MINIX的历史及与
UNIX
的关系:
总结为:Multics->UNIX->MINX->Linux
。
Minix一开始向使用者收取极低的授权费,直到 2004 年,塔能鲍姆重新架构与设计了整个系统,更进一步的将程序模块化,推出MINIX 3。重新以**BSD 许可**
协议发布,成为开放源代码软件。MINIX 3 的目标是比Windows或Linux更安全,在当时塔能鲍姆那份获得欧盟研究委员会(EuropeanResearchCouncil)5 年 250 万欧元资助的研究计划书里,Tanenbaum 解释了为何他认为现有的操作系统不安全如下:
最严重的**可靠性**
及安全问题
是与操作系统相关的那些。核心问题在于现有操作系统都不符合 POLA
(
PrincipleOfLeastAuthority
) ——最低授权原则
。POLA
说的是系统划分组件的方式,应当使必然存在于某个组件中的缺陷,不至于波及其他组件
。每个组件仅应该得到完成它本身工作所需的权限
,不多不少。具体来说,它应该无权
读写属于其他组件的数据,无权读取它自身地址空间之外的任何计算机内存,无权执行与它无关的敏感操作指令,无权访问不该访问的 I/O
设备,诸如此类。现有操作系统完全违反以上原则,结果就是造成众多可靠性及安全问题。
有兴趣的读者可以去看下这个文章:[译]从MINIX 30年发展历史里得到的经验教训,
https://mp.weixin.qq.com/s/3Sx5iTYtcmVFNESh0NQvtQ
2. 代码下载编译
言归正传,还是老一套,代码**下载编译运行**,参考资料:
这里我总结下,给出具体步骤:
代码下载
:
$ mkdir -p $HOME/minix
$ cd $HOME/minix
$ git clone git://git.minix3.org/minix src
$ cd src
代码修改配置,在src目录下新建.settings
文件,设置编译为BeagleBoard-xM开发板
可以运行的版本:
# beagleboard-xm
U_BOOT_BIN_DIR=build/omap3_beagle/
CONSOLE=tty02
为什么编译这个
BeagleBoard-xM开发板?因为我们想要在qemu
上,qemu可以模拟这个开发板,且是arm的,更有学习价值。
进行编译
:
$ ./releasetools/arm_sdimage.sh
编译成功后会看到:
编译如果出现一些问题,可以参考刚那个网址上解决。我遇到了一个环境变量的问题,执行export ARCH=evbearm-el就好了。
- 3. qemu运行
运行需要qemu,如果你ubuntu上有qemu-system-arm
可以执行
qemu-system-arm -M ?|grep beagle
看下是否支持这个板卡,如果支持会输出如下:
如果不支持,就需要找一个支持的qemu-system-arm,有两个方法:
1)直接找一个,可以尝试下面的,下载后复制到你的ubuntu里面看支持不
链接
:
https://pan.baidu.com/s/1fs1xVOtGkOSEJFtR7ShEFw
提取码
: akwc
2)第二个方法就是自己下载qemu的源码编译
一个
$ git clone
git://git.linaro.org/qemu/qemu-linaro.git linaro
$ cd linaro
$ sudo apt-get build-dep qemu # to install
the build dependencies of qemu
$ git submodule update --init pixman
$ git submodule update --init dtc
$ ./configure --python=/usr/bin/python2
--prefix=/opt/qemu --disable-werror --target-list=aarch64-softmmu,arm-softmmu
--disable-vnc --disable-xen --disable-guest-agent --disable-bluez
--disable-docs --disable-rdma --disable-vde --disable-libiscsi --disable-libnfs
--disable-tpm --disable-libssh2 --disable-vhdx
$ make -j8
$ sudo make install
到这里qemu工具搞定后,就可以运行
我们编译的MINIX镜像了,命令如下:
$ cd $HOME/minix/src
$ /opt/qemu/bin/qemu-system-arm -M beaglexm -drive
if=sd,cache=writeback,file=minix_arm_sd.img -clock unix -serial stdio -device
usb-kbd -device usb-mouse -usb
运行成功会进入到MINIX的shell:
我们使用root
进行登录就可以了。
4. 学习资料
有一个中文的资料:https://tech.zealscott.com/os/
然后就是csdn上自己找一些资料,有好的资料可以留言分享
。
后记:
MINIX的**星辰大海**
已在眼前,等你来探索。
本文中搭环境的部分比较多,
可以加我微信
thatway1989
,备注
进群
。然后拉你进本公众号的
交流群
:OS与AUTOSAR研究-交流群,可以讨论搭环境、汽车软件、操作系统软件等知识,一起学习。
“啥都懂一点
,啥都不精通
,
干啥都能干
,干啥啥不是
,
专业入门劝退
,堪称程序员杂家
”。
后续会继续更新,
纯干货
分析,无广告,不打赏,欢迎
转载
,欢迎
评论交流
!