6.28. E2fsprogs-1.42.12

E2fsprogs 软件包包含用于处理 ext2 文件系统的工具。它也支持 ext3ext4 日志文件系统。

大概编译时间: 2.7 SBU
需要磁盘空间: 52 MB

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 编译和安装 libuuidlibblkid 库、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 软件包内容

安装的程序: badblocks, chattr, compile_et, debugfs, dumpe2fs,e2freefrag, e2fsck, e2image, e2label, e2undo, e4defrag, filefrag, fsck.ext2, fsck.ext3, fsck.ext4, fsck.ext4dev, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, resize2fs, 以及 tune2fs
安装的库: libcom_err.{a,so}, libe2p.{a,so}, libext2fs.{a,so}, libquota.a, 和 libss.{a,so}
安装目录: /usr/include/e2p, /usr/include/et, /usr/include/ext2fs, /usr/include/quota, /usr/include/ss, /usr/share/et, 和 /usr/share/ss

简要介绍

badblocks

搜索设备(通常是一个磁盘分区)的坏块

chattr

更改 ext2 文件系统中文件的属性;它也可以更改 ext3 文件系统,这是ext2 文件系统的日志版本

compile_et

错误表编译器;它将错误代码名称和信息对照表转换为适用于 com_err 库的 C 源文件。

debugfs

文件系统调试器;可用于检查和更改 ext2 文件系统的状态

dumpe2fs

对指定设备上的文件系统打印超级块和块组信息

e2freefrag

报告空闲空间的碎片信息

e2fsck

用于检查或者修复 ext2 文件系统和 ext3 文件系统

e2image

用于将重要 ext2 文件系统数据保存到文件中

e2label

显示或更改指定设备上的 ext2 文件系统的标签

e2undo

对设备上发现的 ext2/ext3/ext4 文件系统重做撤销日志 undo_log [ 这可用于取消一个 e2fsprogs 程序的失败操作。]

e4defrag

ext4 文件系统的在线碎片整理器

filefrag

报告一个文件可能的碎片化程度

fsck.ext2

默认检查 ext2 文件系统,是到 e2fsck 的硬链接

fsck.ext3

默认检查 ext3 文件系统,是到 e2fsck 的硬链接

fsck.ext4

默认检查 ext4 文件系统,是到 e2fsck 的硬链接

fsck.ext4dev

默认检查 ext4 开发版文件系统,是到 e2fsck 的硬链接

logsave

在日志文件中保存命令的输出

lsattr

列出二级扩展文件系统中一个文件的属性

mk_cmds

将命令名称和帮助信息的映射表转换为适用于 libss 子系统库的 C 源文件

mke2fs

在指定设备上创建 ext2ext3 文件系统

mkfs.ext2

默认创建 ext2 文件系统,是到 mke2fs 的硬链接

mkfs.ext3

默认创建 ext3 文件系统,是到 mke2fs 的硬链接

mkfs.ext4

默认创建 ext4 文件系统,是到 mke2fs 的硬链接

mkfs.ext4dev

默认创建 ext4 开发版文件系统,是到 mke2fs 的硬链接

mklost+found

用于在 ext2 文件系统上创建 lost+found 目录,它可以预先为目录分配磁盘块,以减轻 e2fsck 任务

resize2fs

用于伸缩 ext2 文件系统的大小

tune2fs

调整 ext2 文件系统上的可调文件系统参数

libcom_err

常用错误显示例程

libe2p

用于 dumpe2fs, chattr, 以及 lsattr

libext2fs

包含使用户层程序可以操作 ext2 文件系统的例程

libquota

提供一个创建和更新限额文件和 ext4 超级块字段的接口

libss

用于 debugfs