在某些情况下,在嵌入式设备上可能需要处理ext2、fat文件系统分区,或者mtdblock分区。这就需要相应的文件系统工具,这些工具busybox中并不包含,需要通过tar包进行交叉编译得到。
一、移植ext2文件系统所需工具
1、下载e2fsprogs源码
http://sourceforge.net/projects/e2fsprogs/
2、解压、编译以及安装
- cd /work/tools/
- tar xzvf e2fsprogs-1.40.2.tar.gz
- cd e2fsprogs-1.40.2
- ./configure --with-cc=arm-linux-gcc --with-linker=arm-linux-ld --enable-elf-shlibs --host=arm --prefix=/work/tools/e2fsprogs-1.40.2/result
- make
- make install
3、将/work/tools/e2fsprogs-1.40.2/result/sbin/mke2fs拷贝至根文件系统的usr/sbin目录
- cp ./result/sbin/mke2fs /work/nfs_root/fs_mini3/usr/sbin/
4、将./lib目录下的5个相关库文件拷贝至根文件系统的usr/lib目录,并创建相应软链接文件
dennis@dennis-desktop:/work/tools/e2fsprogs-1.40.2$ cd lib
dennis@dennis-desktop:/work/tools/e2fsprogs-1.40.2/lib$ cp libblkid.so.1.0 libcom_err.so.2.1 libe2p.so.2.3 libext2fs.so.2.4 libuuid.so.1.2 /work/nfs_root/fs_mini3/usr/lib
dennis@dennis-desktop:/work/tools/e2fsprogs-1.40.2/lib$ cd /work/nfs_root/fs_mini3/usr/lib
dennis@dennis-desktop:/work/nfs_root/fs_mini3/usr/lib$ ln -s libblkid.so.1.0 libblkid.so.1
dennis@dennis-desktop:/work/nfs_root/fs_mini3/usr/lib$ ln -s libcom_err.so.2.1 libcom_err.so.2
dennis@dennis-desktop:/work/nfs_root/fs_mini3/usr/lib$ ln -s libe2p.so.2.3 libe2p.so.2
dennis@dennis-desktop:/work/nfs_root/fs_mini3/usr/lib$ ln -s libext2fs.so.2.4 libext2fs.so.2
dennis@dennis-desktop:/work/nfs_root/fs_mini3/usr/lib$ ln -s libuuid.so.1.2 libuuid.so.1
5、测试ext2文件系统工具
启动开发板linux
- 必要情况下,使用fdisk /dev/sda 分区
- mke2fs /dev/sda1
- mount –t ext2 /dev/sda1 /mnt
二、移植dos文件系统所需工具
1、下载dosfstools源码
–http://ftp.debian.org/debian/pool/main/d/dosfstools/
2、解压、编译
- cd /work/tools/
- tar xzvf dosfstools-2.11.orig.tar.gz
- cd dosfstools-2.11
- 修改Makefile,将CC=gcc改为CC=arm-linux-gcc
- make
3、将./mkdosfs/mkdosfs拷贝至根文件系统的usr/sbin目录
- cp ./mkdosfs/mkdosfs /work/nfs_root/fs_mini3/usr/sbin/
4、测试dos文件系统工具
启动开发板linux
- 必要情况下,使用fdisk /dev/sda 分区
- mkdosfs -F 32 /dev/sda1
- mount –t msdos /dev/sda1 /mnt
三、移植mtd工具程序
1、由于mtd工具程序会用到zlib库,因此先移植zlib库
- cd /work/tools/
- tar xzvf zlib-1.2.3.tar.gz
- cd zlib-1.2.3
- ./configure --shared --prefix=/work/tools/zlib-1.2.3/result
- 修改Makefile,将19、28、29、36、37全部加上 arm-linux- 这个前缀,例如:19行原为CC=gcc,改为CC=arm-linux-gcc
- make
- make install
2、移植mtd工具程序
- cd /work/tools/
- tar xjvf mtd-utils-05.07.23.tar.bz2
- cd mtd-utils-05.07.23/util
- 修改Makefile
- 将5行改为DESTDIR=/work/tools/mtd-utils-05.07.23/util/result
- 第9行改为CROSS=arm-linux-
- 第11行改为CFLAGS := -I../include -I/work/tools/zlib-1.2.3/result/include -O2 -Wall
- 第12行改为LDFLAGS := -L/work/tools/zlib-1.2.3/result/lib
- 第63行改为install -m0755 ${TARGETS} ${DESTDIR}/${SBINDIR}/
- 第67行改为install -m0644 ../include/mtd/*.h ${DESTDIR}/${INCLUDEDIR}/mtd/
- make
- make install
3、将result目录下的mtd工具程序拷贝到根文件系统的usr/sbin目录
dennis@dennis-desktop:/work/tools/mtd-utils-05.07.23/util$ cp result/usr/sbin/* /work/nfs_root/fs_mini3/usr/sbin
4、将mtd工具程序所需的zlib库拷贝到根文件系统的usr/lib目录
dennis@dennis-desktop:/work/tools/mtd-utils-05.07.23/util$ cd /work/tools/zlib-1.2.3/result/lib/
dennis@dennis-desktop:/work/tools/zlib-1.2.3/result/lib$ cp -l libz.so.1* /work/nfs_root/fs_mini3/usr/lib/
5、测试mtd工具程序
启动开发板linux
- 可以运行mkfs.jffs2在开发板上制作jffs2文件映像
- 可以运行nandwrite将jffs2或yaffs文件映像写入nand flash的某个分区
- 可以运行nanddump将nand flash的某个分区的内容制作为文件映像
四、strace的移植
在以后的驱动开发的学习中,strace是调测驱动程序的手段之一,但busybox中不含有strace,因此需要从tar包进行交叉编译而得。
先从strace的官方网站 http://sourceforge.net/projects/strace/ 下载strace-4.5.20.tar.bz2。
cd /work/tools
tar xjvf strace-4.5.20.tar.bz2
cd strace-4.5.20
./configure --prefix=/work/tools/strace-4.5.20/result --host=arm-linux
make
make install
将/work/tools/strace-4.5.20/result/bin/strace拷贝到根文件系统的usr/bin/