8.76.1. Installation d'Udev
Udev fait partie du paquet systemd-256.4. Utilisez le fichier
systemd-256.4.tar.xz comme archive des sources.
Supprimez deux groupes inutiles, render
et sgx
des règles udev par défaut :
sed -i -e 's/GROUP="render"/GROUP="video"/' \
-e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
Supprimez une règle udev requise pour une installation Systemd
complète :
sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in
Ajustez les chemins codés en dur aux fichiers de configuration
réseau pour l’installation udev indépendante :
sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h
Préparez la compilation d'Udev :
mkdir -p build
cd build
meson setup .. \
--prefix=/usr \
--buildtype=release \
-D mode=release \
-D dev-kvm-mode=0660 \
-D link-udev-shared=false \
-D logind=false \
-D vconsole=false
Voici la signification des options meson :
-
--buildtype=release
-
Ce paramètre remplace le type de construction par défaut
(« debug »), qui produit des binaires
non optimisés.
-
-D
mode=release
-
Désactive certaines fonctionnalités considérées comme
expérimentales par les développeurs en amont.
-
-D
dev-kvm-mode=0660
-
La règle udev par défaut permet à tous les utilisateurs
d'accéder à /dev/kvm
. Les
auteurs pensent que cela est dangereux. Cette option change
cela.
-
-D
link-udev-shared=false
-
Cette option évite qu'udev ne se lie à la bibliothèque
interne partagée de systemd, libsystemd-shared
. Cette bibliothèque est
conçue pour être partagée par plusieurs composants Systemd ce
qui est excessif poru une installation d'udev seulement.
-
-D logind=false
-D vconsole=false
-
Ces options évitent la génération de plusieurs fichiers de
règles udev qui appartiennent aux autres composants Systemd
qui ne seront pas installés.
Récupérez la liste des outils d'aide empaquetés avec udev et
sauvegardez-la dans une variable d'environnement (l'exporter n'est
pas absolument nécessaire, mais cela facilite la construction en
tant qu'utilisateur ordinaire et l'utilisation d'un gestionnaire de
paquet) :
export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')
Ne construisez que les composants nécessaires pour udev :
ninja udevadm systemd-hwdb \
$(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
$(realpath libudev.so --relative-to .) \
$udev_helpers
Installez le paquet :
install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
install -vm755 -d /usr/{lib,share}/pkgconfig
install -vm755 udevadm /usr/bin/
install -vm755 systemd-hwdb /usr/bin/udev-hwdb
ln -svfn ../bin/udevadm /usr/sbin/udevd
cp -av libudev.so{,*[0-9]} /usr/lib/
install -vm644 ../src/libudev/libudev.h /usr/include/
install -vm644 src/libudev/*.pc /usr/lib/pkgconfig/
install -vm644 src/udev/*.pc /usr/share/pkgconfig/
install -vm644 ../src/udev/udev.conf /etc/udev/
install -vm644 rules.d/* ../rules.d/README /usr/lib/udev/rules.d/
install -vm644 $(find ../rules.d/*.rules \
-not -name '*power-switch*') /usr/lib/udev/rules.d/
install -vm644 hwdb.d/* ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
install -vm755 $udev_helpers /usr/lib/udev
install -vm644 ../network/99-default.link /usr/lib/udev/network
Installez certaines règles personnalisées et autres fichiers
auxiliaires utiles dans un environnement LFS :
tar -xvf ../../udev-lfs-20230818.tar.xz
make -f udev-lfs-20230818/Makefile.lfs install
Installez les pages de manuel :
tar -xf ../../systemd-man-pages-256.4.tar.xz \
--no-same-owner --strip-components=1 \
-C /usr/share/man --wildcards '*/udev*' '*/libudev*' \
'*/systemd.link.5' \
'*/systemd-'{hwdb,udevd.service}.8
sed 's|systemd/network|udev/network|' \
/usr/share/man/man5/systemd.link.5 \
> /usr/share/man/man5/udev.link.5
sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8 \
> /usr/share/man/man8/udev-hwdb.8
sed 's|lib.*udevd|sbin/udevd|' \
/usr/share/man/man8/systemd-udevd.service.8 \
> /usr/share/man/man8/udevd.8
rm /usr/share/man/man*/systemd*
Enfin, déconfigurez la variable udev_helpers
:
unset udev_helpers