| Installation instructions |
| ========================= |
| |
| The Btrfs utility programs require the following libraries/tools to build: |
| |
| - libuuid - provided by util-linux, e2fsprogs/e2fslibs or libuuid |
| - libblkid - block device id library |
| - liblzo2 - LZO data compression library |
| - zlib - ZLIB data compression library |
| - libzstd - ZSTD data compression library version >= 1.0.0 |
| |
| For the btrfs-convert utility: |
| |
| - e2fsprogs - ext2/ext3/ext4 file system libraries, or called e2fslibs |
| - libreiserfscore - reiserfs file system library version >= 3.6.27 |
| |
| Optionally, the checksums based on cryptographic hashes can be implemented by |
| external libraries. Builtin implementations are provided in case the library |
| dependencies are not desired. |
| |
| - libgcrypt >= 1.8.0 |
| - libsodium >= 1.0.4 |
| - libkcapi >= 1.0.0 |
| - Botan >= 3.0.0 |
| - OpenSSL >= 3.2.0 |
| |
| Optionally, multipath device detection requires libudev and running udev |
| daemon, as it's the only source of the path information. Static build has a |
| fallback and does not need static version of libudev. |
| |
| - libudev |
| |
| For zoned device support, the system headers installed in /usr/include/linux |
| must be 5.10 or newer. |
| |
| Generating documentation: |
| |
| - sphinx |
| |
| Please note that the package names may differ according to the distribution. |
| |
| Optionally, for testsuite utility fsstress: |
| |
| - libaio |
| - liburing |
| |
| |
| Building from sources |
| --------------------- |
| |
| To build from git sources you need to generate the configure script using the |
| autotools: |
| |
| $ ./autogen.sh |
| |
| To build from the released tarballs: |
| |
| $ ./configure |
| $ make |
| $ make install |
| |
| To install the libbtrfsutil Python bindings: |
| |
| $ make install_python |
| |
| You may disable building some parts like documentation, btrfs-convert or |
| backtrace support. See ./configure --help for more. |
| |
| Specific CFLAGS or LDFLAGS should be set like |
| |
| $ CFLAGS=... LDFLAGS=... ./configure --prefix=/usr |
| |
| and not as arguments to make. You can specify additional flags to build via |
| variables EXTRA_CFLAGS and EXTRA_LDFLAGS that get appended to the predefined |
| values of the respective variables. There are further build tuning options |
| documented in the Makefile. |
| |
| $ make EXTRA_CFLAGS=-ggdb3 |
| |
| The build utilizes autotools, dependencies for generating the configure |
| scripts are: |
| |
| * autoconf, autoheader |
| * automake, aclocal |
| * pkg-config |
| |
| |
| Statically built binaries |
| ------------------------- |
| |
| The makefiles are ready to let you build static binaries of the utilities. This |
| may be handy in rescue environments. Your system has to provide static version |
| of the libraries. |
| |
| $ make static |
| $ make btrfs.static |
| $ make btrfs-convert.static |
| |
| The resulting binaries have the '.static' suffix, the intermediate object |
| files do not conflict with the normal (dynamic) build. |
| |
| There are pre-built static binaries for download available at the latest |
| release (under Assets), https://github.com/kdave/btrfs-progs/releases . |
| |
| |
| All-in-one binary (busybox style) |
| --------------------------------- |
| |
| Since version 5.2 it's possible to build a single binary that can act as other |
| standalone tools, based on the file name: |
| |
| $ make btrfs.box |
| $ mv btrfs.box btrfs |
| $ ln -s btrfs mkfs.btrfs |
| |
| The list of built-ins can be obtained by |
| |
| $ btrfs help --box |
| |
| The basic set will always contain: mkfs.btrfs, btrfs-image, btrfs-convert. |
| |
| |
| 32bit build on 64bit host |
| ------------------------- |
| |
| The combination of 32bit build on 64bit host could work but depends on the |
| libraries that must provide the 32bit versions, or even 32bit static versions. |
| This is fairly uncommon on contemporary distributions and building 32bit |
| versions on a 32bit host is recommended. |
| |
| |
| References: |
| * https://btrfs.readthedocs.io |
| * https://btrfs.wiki.kernel.org (outdated) |