日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

如何自己動手做一個迷你型Linux操作系統(tǒng)( 二 )


busybox 有了 LILO 和 kernel image 之后,接下來,我們要安排 root 文件系統(tǒng) 。由于 flash 盤的空間只有 16M 字節(jié),可以說,這是對我們最大的挑戰(zhàn) 。這里首先要向大家介紹小型嵌入式 Linux 系統(tǒng)安排 root 文件系統(tǒng)時的一個常用的利器:BusyBox 。Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先開發(fā),使用在 Debian 的安裝程序中 。后來又有許多 Debian developers 貢獻力量,這其中尤推 busybox 目前的維護者 Erik Andersen,他患有癌癥,可是卻是一名優(yōu)秀的自由軟件開發(fā)者 。Busybox 編譯出一個單個的獨立執(zhí)行程序,就叫做 busybox 。但是它可以根據(jù)配置,執(zhí)行 ash shell 的功能,以及幾十個各種小應用程序的功能 。這其中包括有一個迷你的 vi 編輯器,系統(tǒng)不可或缺的 /sbin/init 程序,以及其他諸如 sed, ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat ... 等等這些都是一個正常的系統(tǒng)上必不可少的,但是如果我們把這些程序的原件拿過來的話,它們的體積加在一起,讓人吃不消 。可是 busybox 有全部的這么多功能,大小也不過 100K 左右 。而且,用戶還可以根據(jù)自己的需要,決定到底要在 busybox 中編譯進哪幾個應用程序的功能 。這樣的話,busybox 的體積就可以進一步縮小了 。使用 busybox 也很簡單 。只要建一個符號鏈接,比方 ln -s /bin/busybox /bin/ls,那么,執(zhí)行 /bin/ls 的時候,busybox 就會執(zhí)行 ls 的功能,也會按照 ls 的方式處理命令行參數(shù) 。又比如 ln -s /bin/busybox /sbin/init,這樣我們就有了系統(tǒng)運行不可或缺的 /sbin/init 程序了 。當然,這里的前提是,你在 busybox 中編譯進去了這兩個程序的功能 。這里面要提出注意的一點是,busybox 的 init 程序所認識的 /etc/inittab 的格式非常簡單,而且和常規(guī)的 inittab 文件的格式不一樣 。所以讀者朋友們在為這個 busybox 的 init 寫 inittab 的時候,要注意一下不同的語法 。至于細節(jié),就不在我們這里多說了,請大家參考 Busybox 的用戶手冊 。
從啟動到進入 shell busybox 安裝好以后,我們就可以考慮重新啟動,一直到進入 shell 提示符了 。這之前,我們要準備一下 /etc 目錄下的幾個重要的文件,而且要把 busybox 用到的 library 也拷貝過來 。用 ldd 命令,后面跟要分析的二進制程序的路徑名,就可以知道一個二進制程序,或者是一個 library 文件之間的互相依賴關系,比如 busybox 就依賴于 libc.so 和 ld-linux.so,我們有了這些知識,就可把動手把所有需要的 library 拷貝到 flash 盤上 。由于我們的 flash 盤說大不大,說小倒也不小,有 16M 字節(jié)之多 。我們直接就用 Glibc 的文件也沒有太多問題 。如果讀者朋友們有特殊的需要,覺得 Glibc 太龐大了的話,可以考慮用 uClibc,這是一個非常小巧的 libc 庫,功能當然沒有 Glibc 全,但是足夠一個嵌入式系統(tǒng)使用了 。本文就不再介紹 uClibc 了 。庫程序拷貝過來以后,我們就可以考慮系統(tǒng)啟動的步驟了 。啟動的時候,先是 lilo,接下來就是 kernel,kernel 初始化之后,就調(diào)用 /sbin/init,然后由 init 解釋 /etc/inittab 運行各種各樣的東西 。inittab 會指導 init 去調(diào)用一個最重要的系統(tǒng)初始化程序 /etc/init.d/rcS,我們將要在 rcS 中完成各個文件系統(tǒng)的 mount,此外,還有在 rcS 中調(diào)用 dhcp 程序,把網(wǎng)絡架起來 。rcS 執(zhí)行完了以后,init 就會在一個 console 上,按照 inittab 的指示開一個 shell,或者是開 gettylogin,這樣用戶就會看到提示輸入用戶名的提示符 。我們這里為了簡單起見,先直接進入 shell,然后等到調(diào)試成功以后,再改成直接進入 X Window 。關于 inittab 的語法,我們上面已經(jīng)提到過了,希望讀者朋友們?nèi)ゲ闄嗤?busybox 的用戶手冊 。這里,我們先要講一下文件系統(tǒng)的構成情況 。

推薦閱讀