我们现在正在构建一个工具,其中包括通过 PXE 启动一个小型 Linux 环境,并让它在不加载更大系统的情况下执行许多系统配置操作。(格式化磁盘、创建文件系统等)我们一直计划在这个系统中使用 BusyBox,因为在一个微小的静态二进制文件中包含大多数系统工具在这种情况下显然很棒。
但问题是:我们的需求发生了变化,需要支持创建 ext3(可能还有 ext4)文件系统,而 BusyBox 不支持。有没有人知道可用于创建这些文件系统的类似自包含二进制工具?它不需要也是 BusyBox(我可以包含一些额外的工具),但它不能需要一堆动态库。
使用静态链接编译 e2fsprogs 并从中选择您需要的二进制文件。您可能只需要 mke2fs(这使得所有类型的 EXT 系列文件系统 - mkfs.ext4 只是它的符号链接。
如果您无法进行静态编译,“ldd mke2fs”至少会显示您需要安装哪些库。
小智 5
我执行了以下命令来静态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
Run Code Online (Sandbox Code Playgroud)
编译成功后,您将在目录mke2fs下找到二进制文件misc/。为了确保生成正确的二进制文件,请检查二进制格式:
$ file ./mke2fs*
./mke2fs: **ELF 32-bit LSB executable**, **ARM,** EABI5 version 1 ...
Run Code Online (Sandbox Code Playgroud)
现在,我将这个二进制文件按原样复制到我的目标平台。
使用 ext4 格式化分区:
mke2fs -t ext4 /dev/xxx
Run Code Online (Sandbox Code Playgroud)