您的位置:網站首頁 > 電器維修資料網 > 正文 >
自制軟盤FreeBSD系統(tǒng)3
★★★★★【文章導讀】:自制軟盤FreeBSD系統(tǒng)3具體內容是:bsd#makedepend&&makekernel編譯完成后就會成生kernel這個文件,這時它的體積還是比較大,不過現在不用管它,后面將會介紹如何處理它。4、編譯系統(tǒng)程序現在就要準備系統(tǒng)所需要的基本程序了,首先 基本的是init和sh,…
來源: 日期:2013-12-25 20:16:09 人氣:標簽:
bsd# make depend && make kernel
編譯完成后就會成生kernel這個文件,這時它的體積還是比較大,不過現在不用管它,后面將會介紹如何處理它。
4、編譯系統(tǒng)程序
現在就要準備系統(tǒng)所需要的基本程序了,首先 基本的是init和sh,init是所有進程的父進程,它負責進行一些初始化工作,它將是kernel引導完成后要運行的第一個用戶進程,而sh用于解釋/etc/rc中的命令。在UNIX中大部程序都使用了共享庫,這有利減少磁盤空間的占用,這對于使用硬盤是非常有用的,然而對于軟盤就不太適用了,因為單一個大部分程序都要使用的庫libc.so就有500多K,加上其它的庫軟盤根本就裝不下。
我們可以發(fā)現,大部分時候一個程序只是用到了庫中的某個函數,但同樣也要加載整個庫,所以我們可以使用靜態(tài)編譯來使程序只包含它使用的那部分函數,這樣可以減少程序的大小。
不過這樣問題同樣存在,如果只有少數程序這到沒有什么,一旦程序很多時,那么空間問題同樣存在。如果會C語言的朋友都知道,其實每一個程序中有很大一部分函數是相同的,比如printf,這個函數在大部分程序中都會用到,如果每個程序都包含一段printf的代碼,那么如果有100個程序的話,就會包含 100個這樣的代碼,然而這些代碼都是相同的,實際上有99個都是浪費了空間,那么可不可以讓一些程序在靜態(tài)編譯的情況下也能夠共享一些函數呢?要知道答案,往下接著看。
幸好,PICOBSD為我們提供了這樣的一個機制,使得程序即不用加載標準庫也可以利用其它程序中的相同函數,這就是crunch(crunch好像是世界頂級黑客John Draper的網名,不知道這與他有沒有關系。crunch是將所有需要的軟件編譯在一個文件中即crunch,然后當中的程序通過symbol link的方式link到它上面,這樣便可以使用相應的程序(類似于linux中的busybox),同時又節(jié)約了空間。PICOBSD為我們提供了一個自己定制crunch的機會,在FreeBSD4.5 Release(注:4.8 Release中的crunch無法定制,至少我沒有找到,所以建議大家使用4.5)中,crunch的配制文件是 /usr/SRC/release/picobsd/custom/crunch1/crunch.conf,編輯它以選擇你需要哪些軟件,下面以一個例子來說明它的用法。
# $FreeBSD: src/release/picobsd/router/crunch.conf,
v 1.1.2.2 2001/02/20 02:53:35 luigi Exp $
#
# NOTE: the string "/usr/src" will be automatically replaced with the
# correct value set in 'build' script - you should change it there
# Default build options
buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
# other sources
srcdirs /usr/src/bin
srcdirs /usr/src/sbin/i386
srcdirs /usr/src/sbin
srcdirs /usr/src/usr.bin
srcdirs /usr/src/usr.sbin
srcdirs /usr/src/gnu/usr.bin
srcdirs /usr/src/gnu/usr.sbin
srcdirs /usr/src/libexec
# sources for ns & vm
srcdirs /usr/src/release/picobsd/tinyware
以下為你所需要在crunch包含的程序列表,以空格分隔。
progs dmesg PINg ifconfig route hostname
progs cp rm ls cat test mkdir less
progs uname sysctl
progs init sh reboot
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: 自制軟盤FreeBSD系統(tǒng)2
- 下一篇: 自制軟盤FreeBSD系統(tǒng)4