Building and Installing partup
==============================
Dependencies
------------
The following tools and libraries must be installed on the target system for
partup to run:
- `GLib `_ (minimum version 2.66.0)
- `libyaml `_
- `libparted `_
- `util-linux `_
- `udev `_
- `squashfs-tools `_
- `dosfstools `_
- `e2fsprogs `_
- `mtd-utils `_
For building partup from source and generating its documentation the following
additional dependencies are needed:
- `Meson Build `_
- `Sphinx `_
Installing Dependencies
-----------------------
Install the following dependencies with your package manager:
Ubuntu and Debian
.................
::
apt-get install libglib2.0-dev libyaml-dev libparted-dev util-linux udev \
squashfs-tools dosfstools e2fsprogs mtd-utils meson python3 \
python3-virtualenv
Arch Linux
..........
::
pacman -S glib2 libyaml parted util-linux squashfs-tools dosfstools \
e2fsprogs mtd-utils meson python python-virtualenv
Building partup
---------------
Build partup using the `Meson Build system `_::
meson setup build
meson compile -C build
Building the Documentation
--------------------------
Install the dependencies needed for building the documentation in a Python
virtualenv::
python3 -m venv env
source env/bin/activate
pip install -r doc/requirements.txt
Configure the build directory for building the documentation::
meson setup --reconfigure build -Ddoc=true
Build the documentation::
meson compile -C build doc
Installing partup
-----------------
From Source
...........
Install partup on the current system. If enabled, the documentation will be
installed as well::
meson install -C build
Linux Pre-Built Binaries
........................
For any Linux Distribution, it is also possible to install partup by downloading
the latest statically built binary from the release page:
https://github.com/phytec/partup/releases
Install the downloaded binary to a directory contained in ``$PATH``, e.g.
``/usr/local/bin``::
install -m 755 ~/Downloads/partup-v0.0.0-amd64 /usr/local/bin/
Make sure to specify the correct path you downloaded partup to, as the above is
just an example.
Ubuntu and Debian
.................
Debian packages are available to download from the release page:
https://github.com/phytec/partup/releases
Arch Linux
..........
partup is available in the AUR (Arch Linux User Repository):
https://aur.archlinux.org/packages/partup
Yocto
.....
A Yocto recipe is available in `meta-phytec
`_.
WSL (Windows Subsystem for Linux)
..................................
While partup only runs on Linux and does not support Microsoft Windows natively,
it can be run via WSL (Windows Subsystem for Linux). This section describes how
to setup WSL2 on a Windows machine, pass through a USB SD card reader and use
partup to flash an SD card, as an example.
Open the Windows command prompt as an administrator and install a WSL2
distribution::
wsl --install --no-distribution
wsl --install Ubuntu --version 2
Running a WSL2 distribution is as simple as clicking on the appropriate
shortcut, e.g. "Ubuntu", in the Windows start menu, or by running it from a
regular command prompt::
wsl
For a detailed documentation, see the official instructions from Microsoft:
https://learn.microsoft.com/en-us/windows/wsl/install
Since WSL kernel version 6.6.29, USB storage support is built as a kernel module
and no further modifications to the WSL distribution have to be done.
.. note::
For older WSL kernel releases prior to 6.6.29, USB storage support must be
added manually by compiling your own version of the WSL kernel. See the
offical Microsoft documentation on how to compile your kernel:
https://learn.microsoft.com/en-us/community/content/wsl-user-msft-kernel-v6
Add the following configuration options to a new file named ``usb.cfg`` in
the WSL kernel source tree::
CONFIG_USB=y
CONFIG_USB_STORAGE=y
CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PCI=y
Clone the WSL kernel, install dependencies, merge the ``usb.cfg`` config
fragment and compile the kernel::
sudo apt update
sudo apt upgrade
sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev
cpio qemu-utils pahole
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git --depth=1 -b linux-msft-wsl-5.15.y ~/kernel
cd ~/kernel
./scripts/kconfig/merge_config.sh Microsoft/config-wsl usb.cfg
make -j$(nproc) KCONFIG_CONFIG=Microsoft/config-wsl
make INSTALL_MOD_PATH="$PWD/modules" modules_install
cp arch/x86/boot/bzImage /mnt/c/
Add the following content to the file ``%USERPROFILE%\.wslconfig``::
[wsl2]
kernel=C:\\bzImage
To pass through USB storage devices, like an SD card reader, to the WSL
distribution, install `usbipd-win `_. As
an administrator in a Windows command prompt, do::
winget install usbipd
Find the desired USB device and its bus ID::
usbipd list
Bind the USB device (replace ```` with the correct bus ID from above,
e.g. ``2-1``)::
usbipd bind -b
Each time the WSL distribution is started, the USB device has to be attached. In
a regular Windows command prompt, execute::
usbipd attach -w -b
To automatically attach a USB device usbipd, `wsl-usb-gui
`_ can be used. usbipd itself probably
`will not support this feature
`_.