6.25. E2fsprogs-1.42.9

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

预计构建时间: 1.7 SBU
磁盘空间需求: 64 MB

6.25.1. 安装 E2fsprogs

首先修复在 LFS chroot 环境下运行回归测试的一个问题:

sed -i -e 's|^LD_LIBRARY_PATH.*|&:/tools/lib|' tests/test_config

E2fsprogs 文档推荐在源代码树的一个子目录中编译该程序包:

mkdir -v build
cd build

准备编译 E2fsprogs:

LIBS=-L/tools/lib                    \
CFLAGS=-I/tools/include              \
PKG_CONFIG_PATH=/tools/lib/pkgconfig \
../configure --prefix=/usr           \
             --with-root-prefix=""   \
             --enable-elf-shlibs     \
             --disable-libblkid      \
             --disable-libuuid       \
             --disable-uuidd         \
             --disable-fsck

环境变量和配置选项的含义:

PKG_CONFIG_PATH, LIBS, CFLAGS

这些变量使 e2fsprogs 用之前构建好的 第 5.33 节 “Util-linux-2.24.1” 包来构建。

--with-root-prefix=""

某些程序 (例如 e2fsck) 被认为是必须的。例如在 /usr 还未挂载的时候,这些程序也需要可用。它们属于 /lib/sbin 这样的目录。如果没有将此选项传递给 E2fsprog 的配置,这些程序就会被安装到 /usr 目录中。

--enable-elf-shlibs

此项创建该程序包中某些程序使用的共享库。

--disable-*

此项阻止 E2fsprogs 编制和安装 libuuidlibblkid 库、uuidd 这个 daemon 和 fsck 包裹,因为 Util-Linux 已经安装过了。

编译软件包:

make

要测试结果,执行:

make check

有一个 E2fsprogs 测试会试图分配 256 MB内存。如果你的内存容量没有比这个数值大很多,推荐启用足够的交换空间。参考 第 2.3 节 “在分区上创建一个文件系统”第 2.4 节 “挂载新分区”。另外,有三个测试会分配一个 2 TB 的分区,如果你没有足够的可用空间,测试将会失败。

安装二进制、文档和共享库:

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.25.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

用于检查和修复 ext2ext3 文件系统

e2image

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

e2label

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

e2undo

重放设备上 ext2/ext3/ext4 文件系统的撤销日志;可以用于撤销 e2fsprogs 程序的失败操作

e4defrag

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

filefrag

报告一个特定文件的碎片程度

fsck.ext2

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

fsck.ext3

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

fsck.ext4

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

fsck.ext4dev

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

logsave

将一行命令的输出保存到一个日志文件

lsattr

列出指定 ext2 文件系统上文件的属性

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

dumpe2fschattrlsattr 使用

libext2fs

包含用于启用用户层程序操作 ext2 文件系统的程序

libquota

提供一个用于创建和更新 ext4 超级块区 quota 文件的接口

libss

debugfs 使用