之前介紹過從1992年開始兩位大佬Linux和Tanenbaum就已經(jīng)打響了微內(nèi)核和宏內(nèi)核的之爭的戰(zhàn)役,可以這么說MINX一直是微內(nèi)核開源領域的扛把子,MINIX吸收了很多先進的思想到其中,一路演變到MINIX3,且越戰(zhàn)越勇。 ????
我要說MINIX3是目前裝機量最高的OS,你會不會打我。據(jù)稱2008年以來英特爾推出的處理器大都運行著一個修改版的MINIX3操作系統(tǒng),英特爾管理引擎(Intel ME)運行其上,該系統(tǒng)在處理器內(nèi)部有自己的CPU內(nèi)核和專屬固件,完全獨立于其他部分,運行權(quán)限達到了Ring-3,且具有完整的網(wǎng)絡堆棧、文件系統(tǒng)、Web服務器,以及USB和網(wǎng)絡等一系列驅(qū)動。也就是說這個MINIX系統(tǒng)可以不依賴于CPU,擁有自己獨立的硬件,功能齊全,可以說它想干什么就干什么。另一方面也說明了MINIX的安全性很高,Intel用也不怕它出問題,這就是微內(nèi)核的魅力所在。 ?
1.??簡介
1987,Minix 誕生了。Minix?是Mini Unix的縮寫,一個迷你版類 Unix 操作系統(tǒng)。Minix?原來是荷蘭阿姆斯特丹的 Vrije 大學計算機科學系的安德魯·塔能鮑姆(AndrewS. Tanenbaum )教授所開發(fā)的一個類 UNIX 操作系統(tǒng),開發(fā)初衷是方便教學使用(因為 AT&T 推出 Version 7 Unix 之后,將 Unix 源碼進行了私有化)。Minix?全部的源代碼共約 12,000 行,并置于他的著作OperatingSystems: Design and Implementation(ISBN 0-13-637331-3)的附錄里作為范例。Minix?的系統(tǒng)要求在當時來說非常簡單,只要三片磁片就可以啟動。
詳細的介紹強烈推薦你看下之前的一篇介紹,里面介紹了MINIX的歷史及與UNIX的關(guān)系: os內(nèi)核入門-linux0.11誕生的故事和源碼初探 總結(jié)為:Multics->UNIX->MINX->Linux。 ??? Minix一開始向使用者收取極低的授權(quán)費,直到 2004 年,塔能鮑姆重新架構(gòu)與設計了整個系統(tǒng),更進一步的將程序模塊化,推出MINIX 3。重新以BSD 許可協(xié)議發(fā)布,成為開放源代碼軟件。MINIX 3 的目標是比Windows或Linux更安全,在當時塔能鮑姆那份獲得歐盟研究委員會(EuropeanResearchCouncil)5 年 250 萬歐元資助的研究計劃書里,Tanenbaum 解釋了為何他認為現(xiàn)有的操作系統(tǒng)不安全如下: ????最嚴重的可靠性及安全問題是與操作系統(tǒng)相關(guān)的那些。核心問題在于現(xiàn)有操作系統(tǒng)都不符合 POLA(PrincipleOfLeastAuthority) ——最低授權(quán)原則。POLA說的是系統(tǒng)劃分組件的方式,應當使必然存在于某個組件中的缺陷,不至于波及其他組件。每個組件僅應該得到完成它本身工作所需的權(quán)限,不多不少。具體來說,它應該無權(quán)讀寫屬于其他組件的數(shù)據(jù),無權(quán)讀取它自身地址空間之外的任何計算機內(nèi)存,無權(quán)執(zhí)行與它無關(guān)的敏感操作指令,無權(quán)訪問不該訪問的 I/O 設備,諸如此類?,F(xiàn)有操作系統(tǒng)完全違反以上原則,結(jié)果就是造成眾多可靠性及安全問題。 ??
?2.?代碼下載編譯
言歸正傳,還是老一套,代碼下載編譯運行,參考資料:
這里我總結(jié)下,給出具體步驟: 代碼下載:
$ mkdir -p $HOME/minix $ cd $HOME/minix $ git clone git://git.minix3.org/minix src $ cd src代碼修改配置,在src目錄下新建.settings文件,設置編譯為BeagleBoard-xM開發(fā)板可以運行的版本:
# beagleboard-xm U_BOOT_BIN_DIR=build/omap3_beagle/ CONSOLE=tty02為什么編譯這個BeagleBoard-xM開發(fā)板?因為我們想要在qemu上,qemu可以模擬這個開發(fā)板,且是arm的,更有學習價值。 進行編譯:
$ ./releasetools/arm_sdimage.sh編譯成功后會看到:

編譯如果出現(xiàn)一些問題,可以參考剛那個網(wǎng)址上解決。我遇到了一個環(huán)境變量的問題,執(zhí)行export ARCH=evbearm-el就好了。
3. qemu運行
運行需要qemu,如果你ubuntu上有qemu-system-arm 可以執(zhí)行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進行登錄就可以了。

編輯:黃飛
?
電子發(fā)燒友App








評論