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