我们正在构建一个工具,其中包括通过 PXE 启动一个小型 Linux 环境,并让它执行许多系统配置操作而无需加载更大的系统。(格式化磁盘、创建文件系统等)我们一直计划在这个系统中使用 BusyBox,因为在这种情况下,将大多数系统工具放在一个小型静态二进制文件中显然很棒。
但问题是:我们的需求发生了变化,需要支持创建 ext3(也许还有 ext4)文件系统,而 BusyBox 不支持。有人知道有类似的独立二进制工具可用于创建这些文件系统吗?它不需要也是 BusyBox(我可以包含一些额外的工具),但它不能需要一堆动态库。
答案1
使用静态链接编译 e2fsprogs,并从中选择所需的二进制文件。您可能只需要 mke2fs(它可以生成所有类型的 EXT 系列文件系统 - mkfs.ext4 只是它的符号链接)。
如果您无法使静态编译工作,“ldd mke2fs”至少会显示您需要安装哪些库。
答案2
我执行了以下命令来编译e2fsprogs
pkg静态地针对 ARM:
apt-get install gcc-arm-linux-gnueabi
wget http://kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.42.6/e2fsprogs-1.42.6.tar.bz2
tar -jxvvf e2fsprogs-1.42.6.tar.bz2
cd e2fsprogs-1.42.6
./configure CFLAGS='-g -O2 -static' CC=arm-linux-gnueabi-gcc --host=arm-linux-gnueabi
make
编译成功后,您将在目录mke2fs
下找到二进制文件misc/
。为确保生成了正确的二进制文件,请检查二进制格式:
$ file ./mke2fs*
./mke2fs: **ELF 32-bit LSB executable**, **ARM,** EABI5 version 1 ...
现在,我将这个二进制文件原样复制到我的目标平台。
要使用 ext4 格式化分区:
mke2fs -t ext4 /dev/xxx