4

We're building a tool right now which includes booting a tiny Linux environment via PXE, and having it perform a number of system configuration operations without loading a larger system. (Formatting disks, creating filesystems, etc.) We've been planning to use BusyBox in this system, as having most of the system tools in one tiny static binary is obviously great in this context.

Problem, though: we've had a requirements change, and need support for creating ext3 (and maybe ext4) filesystems, which BusyBox does not support. Is anyone aware of a similarly self-contained binary tool which can be used for creating these filesystems? It doesn't need to also be BusyBox (I can include a few extra tools), but it can't require a bunch of dynamic libraries.

MDMarra
  • 100,183
  • 32
  • 195
  • 326
ajdecon
  • 1,291
  • 4
  • 14
  • 21

2 Answers2

7

Compile e2fsprogs with static linking and choose the binaries you need from it. You probably only need mke2fs (which makes all kinda of EXT series file systems - mkfs.ext4 is just a symlink to it.

If you can't get static compiling to work, "ldd mke2fs" will at least show which libearies you need to install.

hexchain
  • 43
  • 6
Grant
  • 17,671
  • 14
  • 69
  • 101
4

I executed the following commands to compile e2fsprogs pkg statically to target 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

After a successful compilation, you will find the mke2fs binary under misc/ directory. To make sure you generated the correct binary, check the binary format:

$ file ./mke2fs*
./mke2fs: **ELF 32-bit LSB  executable**, **ARM,** EABI5 version 1 ...

Now, I copied this binary as it is to my target platform.

To format a partition with ext4:

mke2fs -t ext4  /dev/xxx
thom_nic
  • 121
  • 1
  • 7