Linux根文件系統制作的方法網上有很多詳細的教程,我這裡只簡單寫幾個問題。
如果需要ping域名,則需要動態編譯,還需要需要幾個庫:libnss_dns*,libnss_files*, libresolv*,網上說還需要/etc/nsswitch.conf文件,但似乎沒有這個文件也能ping域名,當然要設置好DNS等。我選擇的是動態編譯。
|-- lib
| |-- ld-2.8.so
| |-- ld-linux.so.3 -> ld-2.8.so
| |-- libc-2.8.so
| |-- libcrypt-2.8.so
| |-- libcrypt.so.1 -> libcrypt-2.8.so
| |-- libc.so.6 -> libc-2.8.so
| |-- libm-2.8.so
| |-- libm.so.6 -> libm-2.8.so
| |-- libnss_dns-2.8.so
| |-- libnss_dns.so.2 -> libnss_dns-2.8.so
| |-- libnss_files-2.8.so
| |-- libnss_files.so.2 -> libnss_files-2.8.so
| |-- libresolv-2.8.so
| |-- libresolv.so.2 -> libresolv-2.8.so
可以在menuconfig中指定。
Build Options --->
[ ] Build BusyBox as a static binary (no shared libs) (NEW)
……
(arm-linux-) Cross Compiler prefix
(1)下載
Busybox:http://www.linuxidc.com/Linux/2011-08/40704.htm
(2)創建目錄
[www.linuxidc.com@linuxidc ~]$ mkdir rootfs
[www.linuxidc.com@linuxidc ~]$ cd rootfs/
[www.linuxidc.com@linuxidc rootfs]$ mkdir bin dev etc home lib mnt opt proc root sbin sys tmp usr var www
[www.linuxidc.com@linuxidc rootfs]$ mkdir usr/bin usr/lib usr/sbin lib/modules
(3)創建設備文件
[root@WZC dev]# mknod -m 666 console c 5 1
[root@WZC dev]# mknod -m 666 null c 1 3
(4)配置Busybox
make menuconfig
(5)編譯Busybox
make
make install
(6)添加可執行文件
這裡提一下串口傳輸rz和sz的添加,由於rz和sz是商業軟件,如果不注冊的話每次傳輸完會有10秒的睡眠時間,這裡作為測試,可以簡單地通過添加#define REGISTERED定義或直接將main函數最後的延遲注釋掉即可。
(7)安裝庫文件
可以只安裝必須的庫,arm-linux-readelf 可查看需要的庫。作為動態鏈接,庫ld-2.8.so是必須的。