Skip to content

fwupd without systemd, elogind or ConsoleKit

Chris Rainey edited this page Mar 26, 2020 · 10 revisions

Yes! You, too, can build a sleek or minimal system(workstation, HTPC, server, NAS, ???) without the need for all of the functionality and complexity that systemd / elogind or ConsoleKit introduce and get your firmware updated.


Preparation

In order for fwupd to work, it must find an /etc/os-release file. Most distributions contain this file after install. If yours, like mine, does not --- then simply create it and populate it with the following fields:

$ cat /etc/os-release 
NAME=CRUX
VERSION="3.5"
ID=CRUX
VERSION_ID=3.5
VERSION_CODENAME=""
PLATFORM_ID="platform:C3.5"
PRETTY_NAME="CRUX Linux v3.5"
ANSI_COLOR=""
LOGO=
CPE_NAME="cpe:/o:crux:crux:3.5"
HOME_URL="https://crux.nu"
DOCUMENTATION_URL="https://crux.nu/Main/Documentation"
SUPPORT_URL="https://crux.nu/Main/Community"
BUG_REPORT_URL="https://crux.nu/Main/Bugs"

Compilation

The following is a somewhat customized pkgbuild Bash script for the K.I.S.S. source-based distro known as CRUX(https://crux.nu/) which uses the Linux kernel. It should be a suitable starting point for just about any other distro or for just using at the CLI.

fwupd

# Description: A simple daemon to allow session software to update firmware
# URL: https://github.com/fwupd/fwupd
# Maintainer:
# Packager: Chris Rainey, ckrzen at tuta dot io
# Depends on: valgrind libxmlb git libsoup vala help2man bash-completion tpm2-tss libsmbios libgusb gcab autoconf-archive

name=fwupd
version=1.3.7
release=1
source=(https://github.com/$name/$name/archive/$version.tar.gz)

build() 
{
        cd $name-$version

                meson build \
                -Dlibexecdir=/usr/lib/ \
                -Dprefix=/usr/ \
                -Ddocs=false \
                -Dnls=false \
                -Dgtkdoc=false \
                -Dstemmer=true \
                -Dvapi=false \
                -Dconsolekit=false \
                -Dsystemd=false \
                -Dgcab:docs=false \
                -Dgcab:vapi=false \
                -Dgusb:docs=false \
                -Dgusb:vapi=false

                ninja -C build

                DESTDIR=$PKG ninja -C build install

                rm $PKG/usr/share/locale -rf
}

Dependencies

  • libxmlb
# Description: A library to help create and query binary XML blobs
# URL: https://github.com/hughsie/libxmlb
# Maintainer:
# Packager: Chris Rainey, ckrzen at tuta dot io
# Depends on: glib snowball meson gobject-introspection

name=libxmlb
version=0.1.14
release=1
source=(https://github.com/hughsie/$name/archive/$version.tar.gz)

build() 
{
        cd $name-$version

                meson build \
                -Dlibexecdir=/usr/lib/ \
                -Dprefix=/usr/ \
                -Ddocs=false \
                -Dnls=false \
                -Dgtkdoc=false \
                -Dstemmer=true \
                -Dvapi=false \
                -Dconsolekit=false \
                -Dsystemd=false \
                -Dgcab:docs=false \
                -Dgcab:vapi=false \
                -Dgusb:docs=false \
                -Dgusb:vapi=false

                ninja -C build

                DESTDIR=$PKG ninja -C build install
}

Feel free to message me for other build scripts, etc..


Primary inspiration and source of encouragement: https://github.com/fwupd/fwupd/issues/1408

Clone this wiki locally