E2fsprogs 软件包包含用于处理 ext2
文件系统的工具。它也支持 ext3
和 ext4
日志文件系统。
6.28.1. 安装 E2fsprogs
首先,修复上游找到的一个潜在安全问题:
sed -e '/int.*old_desc_blocks/s/int/blk64_t/' \ -e '/if (old_desc_blocks/s/super->s_first_meta_bg/desc_blocks/' \ -i lib/ext2fs/closefs.c
E2fsprogs 的文档建议在源目录树的一个子目录中编译软件包:
mkdir -v build cd build
准备编译 E2fsprogs:
LIBS=-L/tools/lib \ CFLAGS=-I/tools/include \ PKG_CONFIG_PATH=/tools/lib/pkgconfig \ ../configure --prefix=/usr \ --bindir=/bin \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ --disable-uuidd \ --disable-fsck
环境变量和配置选项的含义:
-
PKG_CONFIG_PATH, LIBS, CFLAGS
-
这些变量启用之前在 5.33, “Util-linux-2.26” 构建的软件包编译 e2fsprogs。
-
--with-root-prefix=""
和--bindir=/bin
-
有些程序(例如 e2fsck) 属于重要程序。比如,当
/usr
没有挂载的时候,仍然要求这些程序可用。它们放在类似/lib
和/sbin
的目录中。如果没有传递这个参数到 E2fsprogs 的配置参数中,程序就会被安装在/usr
目录。 -
--enable-elf-shlibs
-
创建该软件包中一些程序会使用的共享库。
-
--disable-*
-
这会阻止 E2fsprogs 编译和安装
libuuid
和libblkid
库、uuidd
守护进程、以及 fsck 封装包。因为 Util-Linux 安装了更新的版本。
编译软件包:
make
要设置和运行测试套件,我们首先需要把 /tools/lib 中的一些库链接到测试程序查找的位置。输入命令运行测试:
ln -sfv /tools/lib/lib{blk,uu}id.so.1 lib make LD_LIBRARY_PATH=/tools/lib check
E2fsprogs 的其中一个测试程序会试图分配 256M 的内存。如果你没有比这更多的 RAM,确保为测试启用了足够的交换空间。阅读 2.3, “在分区上创建文件系统” 以及 2.4, “挂载新分区” 查看创建和启用交换空间的详细信息。
安装二进制文件、文档以及共享库:
make install
安装静态库和头文件:
make install-libs
使安装的静态库可写,以便后面可以移除调试符号:
chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
该软件包安装了一个 gzip 压缩的 .info
文件但并没有更新系统级的 dir
文件。解压该文件并用下面的命令更新系统的 dir
文件。
gunzip -v /usr/share/info/libext2fs.info.gz install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
如果需要的话,用下面的命令创建和安装一些额外的文档:
makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo install -v -m644 doc/com_err.info /usr/share/info install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info
6.28.2. E2fsprogs 软件包内容
简要介绍
搜索设备(通常是一个磁盘分区)的坏块 |
|
更改 |
|
错误表编译器;它将错误代码名称和信息对照表转换为适用于 |
|
文件系统调试器;可用于检查和更改 |
|
对指定设备上的文件系统打印超级块和块组信息 |
|
报告空闲空间的碎片信息 |
|
用于检查或者修复 |
|
用于将重要 |
|
显示或更改指定设备上的 |
|
对设备上发现的 ext2/ext3/ext4 文件系统重做撤销日志 undo_log [ 这可用于取消一个 e2fsprogs 程序的失败操作。] |
|
ext4 文件系统的在线碎片整理器 |
|
报告一个文件可能的碎片化程度 |
|
默认检查 |
|
默认检查 |
|
默认检查 |
|
默认检查 |
|
在日志文件中保存命令的输出 |
|
列出二级扩展文件系统中一个文件的属性 |
|
将命令名称和帮助信息的映射表转换为适用于 |
|
在指定设备上创建 |
|
默认创建 |
|
默认创建 |
|
默认创建 |
|
默认创建 |
|
用于在 |
|
用于伸缩 |
|
调整 |
|
常用错误显示例程 |
|
用于 dumpe2fs, chattr, 以及 lsattr |
|
包含使用户层程序可以操作 |
|
提供一个创建和更新限额文件和 ext4 超级块字段的接口 |
|
用于 debugfs |