8.74.1. Installation of Udev
        
        
          Udev is part of the systemd-254 package. Use the systemd-254.tar.xz
          file as the source tarball.
        
        
          Remove two unneeded groups, render
          and sgx, from the default udev
          rules:
        
        sed -i -e 's/GROUP="render"/GROUP="video"/' \
       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
        
          Remove one udev rule requiring a full Systemd installation:
        
        sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in
        
          Prepare Udev for compilation:
        
        mkdir -p build
cd       build
meson setup \
      --prefix=/usr                 \
      --buildtype=release           \
      -Dmode=release                \
      -Ddev-kvm-mode=0660           \
      -Dlink-udev-shared=false      \
      ..
        
          
            The meaning of the meson options:
          
          
            - 
              
--buildtype=release
             
            - 
              
                This switch overrides the default buildtype (“debug”), which produces
                unoptimized binaries.
              
             
            - 
              
-Dmode=release
             
            - 
              
                Disable some features considered experimental by upstream.
              
             
            - 
              
-Ddev-kvm-mode=0660
             
            - 
              
                The default udev rule would allow all users to access
                /dev/kvm. The editors consider
                it dangerous. This option overrides it.
              
             
            - 
              
-Dlink-udev-shared=false
             
            - 
              
                This option prevents udev from linking to the internal
                systemd shared library, libsystemd-shared. This library is
                designed to be shared by many Systemd components and it's too
                overkill for a udev-only installation.
              
             
          
         
        
          Only build the components needed for udev:
        
        ninja udevadm systemd-hwdb \
      $(grep -o -E "^build (src/libudev|src/udev|rules.d|hwdb.d)[^:]*" \
        build.ninja | awk '{ print $2 }')                              \
      $(realpath libudev.so --relative-to .)
        
          Remove one udev rule file requiring a full Systemd installation:
        
        rm rules.d/90-vconsole.rules
        
          Install the package:
        
        install -vm755 -d {/usr/lib,/etc}/udev/{hwdb,rules}.d
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/{*.rules,README} /usr/lib/udev/rules.d/
install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README}   /usr/lib/udev/hwdb.d/
install -vm755 $(find src/udev -type f | grep -F -v ".") /usr/lib/udev
        
          Install some custom rules and support files useful in an LFS
          environment:
        
        tar -xvf ../../udev-lfs-20230818.tar.xz
make -f udev-lfs-20230818/Makefile.lfs install
        
          Install the man pages:
        
        tar -xf ../../systemd-man-pages-254.tar.xz                            \
    --no-same-owner --strip-components=1                              \
    -C /usr/share/man --wildcards '*/udev*' '*/libudev*'              \
                                  '*/systemd-'{hwdb,udevd.service}.8
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/man8/systemd-*.8