MINIX3入门-简介及代码编译运行

张开发
2026/4/17 0:49:56 15 分钟阅读

分享文章

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

更多文章