General Build Prerequisites for Image Creation Tools#
This document describes the general dependencies for the image creation tools and the steps to install them.
ukify#
Install all the required dependencies for
ukify:
sudo apt install git python3 python3-cryptography python3-pefile python3-pillow \
python3-setuptools libssl-dev libzstd-dev uuid-dev gnu-efi python3-packaging \
libelf-dev lz4 pkg-config meson ninja-build
Clone the systemd repository for
ukify, and then check out the version you want:
git clone https://github.com/systemd/systemd.git
cd systemd
git checkout v255
Install
ukifyby copying theukify.pyscript to a directory in your PATH:
cd src/ukify
sudo cp ukify.py /usr/local/bin/ukify
For environments that require
ukifyin/usr/bin(e.g., ICT build systems), copy it to/usr/bin
sudo cp /usr/local/bin/ukify /usr/bin/ukify
Verify the installation by running the following command:
ukify --help
You should see the usage instructions for ukify.
mmdebstrap#
Download the mmdebstrap package:
wget http://archive.ubuntu.com/ubuntu/pool/universe/m/mmdebstrap/mmdebstrap_1.4.3-6_all.deb
Install the package:
sudo dpkg -i mmdebstrap_1.4.3-6_all.deb
If dpkg reports missing dependencies, you can try to automatically resolve them using this command:
sudo apt --fix-broken install
util-linux (lsblk) and e2fsprogs (resize2fs)#
Overlay-mode disk resize (overlayPolicy.allowDiskResize) requires lsblk
from util-linux >= 2.38 (it reads partition start sectors via
lsblk -o PATH,START,TYPE) and a resize2fs build new enough to grow the
baseline’s filesystem. Ubuntu 22.04 ships util-linux 2.37 and e2fsprogs
1.46.5, and neither is available as a newer version via apt. Build both
from source instead.
Upgrade util-linux (lsblk)#
Download and build util-linux v2.38:
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.38/util-linux-2.38.tar.xz
tar -xf util-linux-2.38.tar.xz
cd util-linux-2.38
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
Divert the distro
lsblkand point/usr/bin/lsblkat the new build.dpkg-divertkeeps the diversion registered so a laterapt upgradeof util-linux writes to the diverted path instead of clobbering your symlink:
sudo dpkg-divert --divert /usr/bin/lsblk.distrib --rename /usr/bin/lsblk
sudo ln -s /usr/local/bin/lsblk /usr/bin/lsblk
Verify the installation:
lsblk --version
Upgrade e2fsprogs (resize2fs)#
Install the build dependencies:
sudo apt-get install -y build-essential pkg-config git
Clone and build e2fsprogs v1.47.0:
git clone --depth 1 --branch v1.47.0 https://github.com/tytso/e2fsprogs.git
cd e2fsprogs && mkdir build && cd build
../configure
make
Install
resize2fsover the distro version in/usr/sbin(the overlay resize path shells out only toresize2fs):
sudo make install-libs
sudo install -m0755 resize/resize2fs /usr/sbin/resize2fs
Verify the installation:
/usr/sbin/resize2fs 2>&1 | head -1
# expect: resize2fs 1.47.0 (...)