linux系統真是好,除了做服務器系統、桌面系統,還能做小型系統,嵌入式系統,我對嵌入式系統了解不多,就不多談了,只談一點做幾M大小的小型系統。
大家談的系統,有的指操作系統、有的還包括應用程序,我比較主張只指OS,一個OS,大家常見了分一體式的和微內核的,linux是一體式的。很多功能就在內核裡面,比如文件系統、進程控制、設備驅動、進程間通信、通信協議。除了內核,還要一個磁盤文件系統.(繼續寫,打算每天都抽點時間來寫),還要一個c庫(標准的較大,用stript去處不需要的也有幾M,所以可以用其它小的C庫,只是這些庫有一些功能不支持,但一般應用還是足夠,常用的有uclibc),當然如果用靜態編譯的話,也可以不要庫,但是對於以後擴展不利,除了這些以外,還需要一些常用工具,如基本的ls、fdisk這些,這些程序可以從大系統上拷貝過去(但要注意與C庫版本一致),也可以用SIZE較小的BUSYBOX ,它的功能也有所減少,比如常用的ping就只有3個選項,如果需要功能全的ping,也可以單獨的把它從大系統上拷過來,只要所用的庫(用ldd查看,有時還需用strace來查看)系統上有且版本一致就可以。另外,驅動程序也必不可少。不過,大部分的驅動都可以直接編譯進內核裡。對某些特殊硬件,廠家可能提供源代碼,注意這些源代碼是與內核版本相關的,所以很有可能編譯不過,需要更改。
現在讓我談談制作步驟
1、准備一個大linux系統(桌面系統),(我的是redhat linux9.0)要把內核源代碼安裝進去。最好是自己做一個lfs,這樣更好。
2、根據硬件編譯內核
3、下載busybox源代碼
4、插好目標機外存,我們用的是dom,則可以把它插在ide插槽上
5、新建好小型系統文件系統,也就是建立幾個目錄,拷貝/DEV目錄中的文件
6、編譯busybox進目標機外存(DOM)
7、拷貝C庫、內核
8、拷貝啟動程序,安裝啟動程序,我用的是GRUB,修改GRUB.CONF
系統制作完成,我們制作的系統共5m(沒用UCLIBC,嫌麻煩,反正DOM64M)
注意常出錯的地方有
1、c庫版本不一致,啟動後無法執行init
2、開發機與目標機硬件和grub配合的問題,現象是根本沒法啟動