您的位置:首页 > 运维架构 > Linux

e2fsprogs制作嵌入式 mkfs.ext2 mkfs.ext3 mkfs.ext4

2014-03-07 17:39 691 查看
参考网友的方法

下载源码包 e2fsprogs:
http://sourceforge.net/projects/e2fsprogs/
cd /arm-tools
tar xzvf e2fsprogs.tar.gz

cd e2fsprogs
mkdir release
cd release

vi configure-arm

#! /bin/sh
CC=arm-linux-gcc ../configure --enable-elf-shlibs --host=arm --prefix=/arm-tools/e2fsprogs/release/

chmod 777 configure-arm
./configure-arm

make
make install

如果成功,在 release 目录会生成 bin,sbin,lib.
复制 bin 目录的所有程序到开发板的 /usr/bin 目录,复制 sbin 目录的所有程序到开发板的 /usr/sbin 目录,复制 lib 目录的所有动态库文件到开发板的 /usr/lib 目录.
完成.

虽然说是如果成功,但是往往很多时候是会出现错误的,我在编译过程中就出现了这个错误error: static declaration of 'fallocate64' follows non-static declaration

我的GCC是arm-linux-gcc 4.4.1版本,经过几番折腾,把misc目录下e4defrag.c这个文件的251行的函数修改为非静态的就可以了,即修改成如下所示:

int fallocate64(int fd, int mode, loff_t offset, loff_t len)

{
return syscall(__NR_fallocate, fd, mode, offset, len);

}

另外要注意配置时的arm-linux-gcc目录以及--prefix这个参数的路径。我的配置如下:

CC=/usr/local/arm/arm-2009q3/bin/arm-linux-gcc ../configure --enable-elf-shlibs
--host=arm-linux --prefix=/mydisk/workdisk/e2fsprogs/arm-tools/e2fsprogs-1.42.9/release 

编译完成把bin、lib、sbin目录下所有的文件拷贝到制作的根文件系统即可。拷贝是加上-d选项。拷贝命令举例:

cp *so* /nfsboot/my_system/system/usr/lib/ -d(首先进入release/lib目录)

其他两个目录完整拷贝即可。

在运行命令前要使用export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib这个命令,加载动态库路径到环境变量,也可以设置在etc/profile文件中。

一些工具的说明:

e2fsprogs包含以下独立的程式:

e2fsck, ext2/3/4文件系统的fsck程序,用于检查文件系统的完整性。

mke2fs, 用于创建ext2/3/4档案系统。

resize2fs, 调整已建立的ext2/3/4档案系统的大小。

tune2fs, 修改ext2/3/4档案系统的相关参数。

dumpe2fs, 显示ext2/3/4档案系统的相关资讯。

debugfs, 用于调试ext2/3/4文件系统,可以查看与更改文件系统的状态。

e2fsprogs工具集同时也包含函数库libext2fs。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 源码