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

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


使用 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 初始化之后,就調用 /sbin/init,然后由 init 解釋 /etc/inittab 運行各種各樣的東西 。inittab 會指導 init 去調用一個最重要的系統(tǒng)初始化程序 /etc/init.d/rcS,我們將要在 rcS 中完成各個文件系統(tǒng)的 mount,此外,還有在 rcS 中調用 dhcp 程序,把網(wǎng)絡架起來 。rcS 執(zhí)行完了以后,init 就會在一個 console 上,按照 inittab 的指示開一個 shell,或者是開 gettylogin,這樣用戶就會看到提示輸入用戶名的提示符 。我們這里為了簡單起見,先直接進入 shell,然后等到調試成功以后,再改成直接進入 X Window 。
關于 inittab 的語法,我們上面已經提到過了,希望讀者朋友們去查權威的 busybox 的用戶手冊 。這里,我們先要講一下文件系統(tǒng)的構成情況 。
安排文件系統(tǒng)
大家已經看到,我們的 root 文件系統(tǒng)為了避免麻煩,用的是標準的 ext2 文件系統(tǒng) 。由于我們的硬盤空間很小,只有不到 16M,而且我們還要在上面放上 X Window,所以,如果我們全部用 ext2 的話,F(xiàn)lash 盤的有限空間會很快耗盡 。我們唯一的選擇是采用一個適當?shù)膲嚎s文件系統(tǒng) ??紤]到 /usr 目錄下面的內容在系統(tǒng)運行的時候,是不需要被改寫的 。我們決定選擇只讀的壓縮文件系統(tǒng) cramfs 來容納 /usr 目錄下面的全部內容 。
cramfs 是 Linus Torvalds 本人開發(fā)的一個適用于嵌入式系統(tǒng)的小文件系統(tǒng) 。由于它是只讀的,所以,雖然它采取了 zlib 做壓縮,但是它還是可以做到高效的隨機讀取 。既然 cramfs 不會影響系統(tǒng)讀取文件的速度,又是一個高度壓縮的文件系統(tǒng),對于我們,它就是一個相當不錯的選擇了 。
我們首先把 /usr 目錄下的全部內容制成一個 cramfs 的 image 文件 。這可以用 mkcramfs 命令完成 。得到了這個 usr.img 文件之后,我們還要考慮怎樣才能在系統(tǒng)運行的時候,把這個 image 文件 mount 上來,成為一個可用的文件系統(tǒng) 。由于這個 image 文件不是一個通常意義上的 block 設備,我們必須采用 loopback 設備來完成這一任務 。具體說來,就是在前面提到的 /etc/init.d/rcS 腳本的前面部分,加上一行 mount 命令:

推薦閱讀