<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 最小Linux系統制作例程

最小Linux系統制作例程

作者: 時(shí)間:2011-05-27 來(lái)源:網(wǎng)絡(luò ) 收藏

一,什么是Baby

本文引用地址:http://dyxdggzs.com/article/150702.htm

  Baby不是一個(gè)完整的發(fā)行版,他是利用原有的一套完整的linux的內核原代碼和編譯工具,利用busybox內建的強大功能,在一張軟盤(pán)上做的一個(gè)很小的linux.他具備一個(gè)linux的基本特征,支持linux系統最常用的一百多個(gè)命令,支持多種文件系統,支持網(wǎng)絡(luò )等等,你可以把他當做一張linux起動(dòng)盤(pán)和修復盤(pán)來(lái)用,你也可以把他當做一個(gè)靜態(tài)路由的路由器軟件,當然,你也可以把他當做一個(gè)linux玩具,向你的朋友炫耀 linux可以做的多么小.我把他叫做Baby因為他很小巧,小的很可愛(ài),像一個(gè)剛剛出生的小baby.

  二,為什么要作這樣一個(gè)linux

  先說(shuō)說(shuō)我一開(kāi)始的想法,當我一開(kāi)始接觸linux的時(shí)候,看到書(shū)上說(shuō),linux通常安裝只需要60M左右的空間,但是我發(fā)現裝在我硬盤(pán)上的Redhat 6.0確要占據好幾百M的空間.為什么我的linux這么大呢? 后來(lái)我發(fā)現,裝在我機器上的那么多東西只有不到30%是我平時(shí)常用的,還有30%是我極少用到的,另外的40%基本上是不用的.于是,我和大多數初學(xué)者一樣,開(kāi)始抱怨,為什么linux不能做的精簡(jiǎn)一點(diǎn)呢?于是,我萌發(fā)了自己裁減系統的想法.可惜那個(gè)時(shí)候我還沒(méi)有聽(tīng)說(shuō)過(guò)有LFS和Debain.等到我積累了足夠的linux知識后,我開(kāi)始這樣一個(gè)小系統.

  這樣一個(gè)小系統最大的意義在于,你可以通過(guò)系統了解linux的啟動(dòng)過(guò)程,學(xué)會(huì )ramdisk的使用,讓你在短時(shí)間內學(xué)到更多的linux知識. 當然,你會(huì )得到很大的樂(lè )趣.這個(gè)項目只是做一個(gè)具有基本特征的linux系統,如果你想自己做一個(gè)具有完整功能的linux,請閱讀Linux From Scratch (LFS)文檔.

  三,什么人適合讀這篇文檔

  如果你是一個(gè)linux愛(ài)好者,并且很想了解linux的啟動(dòng)過(guò)程和系統的基本結構,而且是一個(gè)喜歡動(dòng)手研究小玩意的人,那么這個(gè)文檔可以滿(mǎn)足你的需求. 如果你僅僅是用linux來(lái)做一些普通的日常工作,而不在乎你的linux到底怎么工作,那么這份文檔也許不太適合你.另外,如果你是linux愛(ài)好者, 但是目前還是一個(gè)剛剛入門(mén)的newbi,我建議你先把linux命令學(xué)好.不過(guò)我想我會(huì )盡可能的把這份文檔寫(xiě)詳細一些,如果你有足夠的毅力,或許一個(gè) newbi也能成功做一個(gè)babylinux.或者,你遇到一件很不巧的事情,比如你的老婆來(lái)例假了,你的這個(gè)周末就泡湯了,那么閱讀這篇文檔并做一個(gè) linux小玩具可以打發(fā)你的時(shí)間.

  四,應該具備的知識

  在做一個(gè)babylinux之前,你應當已經(jīng)會(huì )應用linux最常用的命令.并且至少有一次成功編譯并安裝系統內核的經(jīng)歷,會(huì )通過(guò)編譯源代碼來(lái)安裝軟件. 如果你具備了這些條件,那么做這樣一個(gè)小系統會(huì )很順利,如果你還沒(méi)有掌握這些知識,你可能會(huì )遇到一些困難.但是只要有毅力,也可以成功.你不需要具備編程的知識,因為我的目標是:讓具有中等以上linux水平的愛(ài)好者可以通過(guò)閱讀文檔輕松完成這個(gè)項目.關(guān)于一張軟盤(pán)上的linux還有一個(gè)很著(zhù)名的 linux叫LOAP (Linux On A

  Floppy) 但是他是由比較專(zhuān)業(yè)的人員需要編寫(xiě)很多程序完成的.而且沒(méi)有關(guān)于他制作過(guò)程的文檔.

  五,linux系統引導過(guò)程簡(jiǎn)介

  首先,主板的BIOS會(huì )讀取硬盤(pán)的主引導記錄(MBR),MBR中存放的是一段很小的程序,他的功能是從硬盤(pán)讀取操作系統核心文件并運行,因為這個(gè)小程序太小了,因此通常這個(gè)小程序不具備直接引導系統內核的能力,他先去引導另一個(gè)稍微大一點(diǎn)的小程序,再由這個(gè)大一點(diǎn)的小程序去引導系統內核.在linux系統中這樣的小程序有LILO和GRUB.在這個(gè)項目中,我決定用LILO來(lái)做系統引導程序.在軟盤(pán)上啟動(dòng)linux系統的過(guò)程和在硬盤(pán)上啟動(dòng)的過(guò)程相似.

  Linux系統內核被引導程序裝入內核并運行后,linux內核會(huì )檢測系統中的各種硬件.并做好各種硬件的初始化工作,使他們在系統正式運行后能正常工作.之后內核做的最后一個(gè)工作是運行

  /sbin 下的init程序,init是英文單詞initialization(初始化)的簡(jiǎn)稱(chēng),init程序的工作是讀取/etc/inittab文件中描述的指令,對系統的各種軟硬件環(huán)境做最初化設定.最后運行mingetty等待用戶(hù)輸入用戶(hù)名登錄系統.所有的工作就這么簡(jiǎn)單,雖然linux啟動(dòng)的時(shí)候有很多內容,看上去十分高深,但是都不過(guò)是對這個(gè)過(guò)程的擴充.明白了這個(gè)道理,你可以寫(xiě)一些腳本程序讓他在系統啟動(dòng)的特定時(shí)間運行完成任務(wù).事實(shí)上系統內核并不關(guān)心/sbin下的init是不是真的init,只要是放在/sbin下名叫init的可執行程序他都可以執行.可以做以下實(shí)驗:

  編寫(xiě)一個(gè)非常簡(jiǎn)單的C程序:

  main()

  {

  printf(“hello,world!n”);

  }

  保存后以init.c保存他,并用gcc編譯.

  #gcc –-static -o init init.c

  這里的--static 參數告訴gcc把這個(gè)程序靜態(tài)聯(lián)接,這樣這個(gè)程序不倚賴(lài)任何庫就能運行.把編譯好的init程序拷貝到/sbin下,備份好原來(lái)的那個(gè).重新啟動(dòng)系統最后系統的輸出結果是: hello,world!

  然后停在那里.做這個(gè)實(shí)驗以前先確定你知道如何把系統恢復到原來(lái)的狀態(tài),有一個(gè)簡(jiǎn)單的方法,在內核啟動(dòng)前給他加上init=參數,比如你原先的init被你改成了init.bak 只要在啟動(dòng)的時(shí)候給內核加上init=/sbin/init.bak就可以用原來(lái)的init程序啟動(dòng)系統.

  做完以上實(shí)驗,就明白了內核和init程序之間的關(guān)系.此外,init程序不一定是一個(gè)二進(jìn)制可執行程序,他可以是一個(gè)bash腳本,一個(gè)指向另一個(gè)程序的聯(lián)接,他的位置也并不一定要在/sbin下,只要在啟動(dòng)內核時(shí),給內核加上init參數就能被運行,比如,開(kāi)始時(shí)給內核加上init= /bin/bash參數,內核在最后一步就直接運行bash給出提示符,不用登錄系統就可以輸入命令了.其功能類(lèi)似單用戶(hù)模式啟動(dòng)系統. /sbin/init 程序只是內核默認運行的第一個(gè)程序.

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 制作 系統 Linux 最小

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>