aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Dubbs <bdubbs@linuxfromscratch.org>2014-04-03 21:52:09 +0000
committerBruce Dubbs <bdubbs@linuxfromscratch.org>2014-04-03 21:52:09 +0000
commitcba2d4e6aa081fdf62e527d28eba137eb885f0cc (patch)
treeeee1c3ef6d42101635b135289262eb1386cf87a0
parent008436e04cb47fbba28ab083cf4ef9339699b5fd (diff)
Added systemd and dbus to the book.
Set up systemd and System V side-by-side with the ability to reboot to either system. git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@10520 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
-rw-r--r--appendices/scripts.xml6
-rw-r--r--appendices/udev-rules.xml2
-rw-r--r--bootscripts/ChangeLog3
-rw-r--r--bootscripts/Makefile174
-rw-r--r--bootscripts/lfs/init.d/functions793
-rw-r--r--bootscripts/lfs/init.d/localnet1
-rw-r--r--bootscripts/lfs/init.d/mountfs3
-rw-r--r--bootscripts/lfs/init.d/mountvirtfs4
-rw-r--r--bootscripts/lfs/init.d/rc4
-rw-r--r--bootscripts/lfs/init.d/udev10
-rw-r--r--bootscripts/lfs/init.d/udev_retry6
-rw-r--r--bootscripts/lfs/lib/services/init-functions2
-rw-r--r--bootscripts/lfs/lib/systemd/ifupdown@.service12
-rw-r--r--bootscripts/lfs/units/ifupdownat.service12
-rw-r--r--chapter01/changelog.xml13
-rw-r--r--chapter01/whatsnew.xml8
-rw-r--r--chapter03/packages.xml35
-rw-r--r--chapter03/patches.xml10
-rw-r--r--chapter06/chapter06.xml10
-rw-r--r--chapter06/dbus.xml186
-rw-r--r--chapter06/systemd.xml606
-rw-r--r--chapter06/sysvinit-header.xml15
-rw-r--r--chapter06/sysvinit.xml36
-rw-r--r--chapter07/bootscripts.xml7
-rw-r--r--chapter07/chapter07.xml4
-rw-r--r--chapter07/hostname.xml10
-rw-r--r--chapter07/introduction.xml278
-rw-r--r--chapter07/network.xml61
-rw-r--r--chapter07/setclock.xml148
-rw-r--r--chapter07/site.xml4
-rw-r--r--chapter07/sysklogd.xml4
-rw-r--r--chapter07/usage.xml2
-rw-r--r--chapter08/kernel.xml25
-rw-r--r--general.ent6
-rw-r--r--packages.ent30
-rw-r--r--patches.ent4
-rw-r--r--udev-lfs/ChangeLog3
-rw-r--r--udev-lfs/Makefile.lfs352
-rw-r--r--udev-lfs/README14
-rw-r--r--udev-lfs/cfg.h64
-rw-r--r--udev-lfs/keyboard-keys-from-name.h923
-rw-r--r--udev-lfs/keyboard-keys-to-name.h394
-rw-r--r--udev-lfs/makefile-incl.gir51
-rw-r--r--udev-lfs/makefile-incl.gudev108
-rw-r--r--udev-lfs/makefile-incl.keymap54
-rw-r--r--udev-lfs/udev.7476
-rw-r--r--udev-lfs/udevadm.8372
-rw-r--r--udev-lfs/udevd.8124
48 files changed, 1339 insertions, 4130 deletions
diff --git a/appendices/scripts.xml b/appendices/scripts.xml
index 30f63752b..abe836cb7 100644
--- a/appendices/scripts.xml
+++ b/appendices/scripts.xml
@@ -5,7 +5,6 @@
<!ENTITY checkfs SYSTEM "checkfs.script">
<!ENTITY cleanfs SYSTEM "cleanfs.script">
<!ENTITY console SYSTEM "console.script">
- <!ENTITY functions SYSTEM "functions.script">
<!ENTITY halt SYSTEM "halt.script">
<!ENTITY initfunctions SYSTEM "init-functions.script">
<!ENTITY localnet SYSTEM "localnet.script">
@@ -62,11 +61,6 @@
<screen>&initfunctions;</screen>
</sect1>
- <sect1 id="functions" role="wrap">
- <title>/etc/rc.d/init.d/functions</title>
- <screen>&functions;</screen>
- </sect1>
-
<sect1 id="mountvirtfs" role="wrap">
<title>/etc/rc.d/init.d/mountvirtfs</title>
<screen>&mountvirtfs;</screen>
diff --git a/appendices/udev-rules.xml b/appendices/udev-rules.xml
index 2b9489bb7..7a901f361 100644
--- a/appendices/udev-rules.xml
+++ b/appendices/udev-rules.xml
@@ -14,7 +14,7 @@
<para>The rules from <!-- &eudev-lfs;.tar.bz2 -->in this appendix are listed for
convenience. Installation is normally done via instructions in <xref
- linkend='ch-system-eudev'/>. </para>
+ linkend='ch-system-systemd'/>. </para>
<sect1 id="lfsrules" role="wrap">
<title>55-lfs.rules</title>
diff --git a/bootscripts/ChangeLog b/bootscripts/ChangeLog
index a9e9806db..1a688b609 100644
--- a/bootscripts/ChangeLog
+++ b/bootscripts/ChangeLog
@@ -1,3 +1,6 @@
+2014-03-31 Bruce Dubbs <bdubbs@linuxfromscratch.org>
+ * Changes made to be consistent with common systemd functions
+
2013-08-21 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* Delete duplicate entry in rc.site file.
diff --git a/bootscripts/Makefile b/bootscripts/Makefile
index 76f43d711..70ce71365 100644
--- a/bootscripts/Makefile
+++ b/bootscripts/Makefile
@@ -1,5 +1,7 @@
-EXTDIR=${DESTDIR}/etc
-LIBDIR=${DESTDIR}/lib/services
+ETCDIR=${DESTDIR}/etc
+LIBDIR=${DESTDIR}/lib
+SERVICEDIR=${LIBDIR}/services
+UNITDIR=${LIBDIR}/systemd/system
MAN8=${DESTDIR}/usr/share/man/man8
SBIN=${DESTDIR}/sbin
MODE=754
@@ -11,120 +13,124 @@ all: links
install: all
create-dirs:
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc0.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc1.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc2.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc3.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc4.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc5.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc6.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rcS.d
- install -d -m ${DIRMODE} ${EXTDIR}/rc.d/init.d
- install -d -m ${DIRMODE} ${EXTDIR}/sysconfig
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rc0.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rc1.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rc2.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rc3.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rc4.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rc5.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rc6.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/rcS.d
+ install -d -m ${DIRMODE} ${ETCDIR}/rc.d/init.d
+ install -d -m ${DIRMODE} ${ETCDIR}/sysconfig
install -d -m ${DIRMODE} ${LIBDIR}
+ install -d -m ${DIRMODE} ${SERVICEDIR}
+ install -d -m ${DIRMODE} ${UNITDIR}
install -d -m ${DIRMODE} ${MAN8}
install -d -m ${DIRMODE} ${SBIN}
- ln -sfn services ${DESTDIR}/lib/lsb
- ln -sfn rc.d/init.d ${EXTDIR}/init.d
+ ln -sfn services ${LIBDIR}/lsb
+ ln -sfn rc.d/init.d ${ETCDIR}/init.d-sysv
+ ln -sfn init.d-sysv ${ETCDIR}/init.d
files: create-dirs
- install -m ${MODE} lfs/init.d/checkfs ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/cleanfs ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/halt ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/console ${EXTDIR}/rc.d/init.d/
- install -m ${CONFMODE} lfs/init.d/functions ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/localnet ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/modules ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/mountfs ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/mountvirtfs ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/network ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/rc ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/reboot ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/sendsignals ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/setclock ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/swap ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/sysctl ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/sysklogd ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/template ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/udev ${EXTDIR}/rc.d/init.d/
- install -m ${MODE} lfs/init.d/udev_retry ${EXTDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/checkfs ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/cleanfs ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/halt ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/console ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/localnet ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/modules ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/mountfs ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/mountvirtfs ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/network ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/rc ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/reboot ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/sendsignals ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/setclock ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/swap ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/sysctl ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/sysklogd ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/template ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/udev ${ETCDIR}/rc.d/init.d/
+ install -m ${MODE} lfs/init.d/udev_retry ${ETCDIR}/rc.d/init.d/
install -m ${MODE} lfs/sbin/ifup ${SBIN}
install -m ${MODE} lfs/sbin/ifdown ${SBIN}
- install -m ${MODE} lfs/sbin/ifup.8 ${MAN8}
+ install -m ${CONFMODE} lfs/sbin/ifup.8 ${MAN8}
ln -sf ifup.8 ${MAN8}/ifdown.8
- install -m ${MODE} lfs/lib/services/ipv4-static-route ${LIBDIR}
- install -m ${MODE} lfs/lib/services/ipv4-static ${LIBDIR}
- install -m ${CONFMODE} lfs/lib/services/init-functions ${LIBDIR}
- if [ ! -f ${EXTDIR}/sysconfig/createfiles ]; then \
- install -m ${CONFMODE} lfs/sysconfig/createfiles ${EXTDIR}/sysconfig/ ;\
+ install -m ${MODE} lfs/lib/services/ipv4-static-route ${SERVICEDIR}
+ install -m ${MODE} lfs/lib/services/ipv4-static ${SERVICEDIR}
+ install -m ${CONFMODE} lfs/lib/services/init-functions ${SERVICEDIR}
+ install -m ${CONFMODE} lfs/units/ifupdownat.service ${UNITDIR}/ifupdown@.service
+
+ if [ ! -f ${ETCDIR}/sysconfig/createfiles ]; then \
+ install -m ${CONFMODE} lfs/sysconfig/createfiles ${ETCDIR}/sysconfig/ ;\
fi
- if [ ! -f ${EXTDIR}/sysconfig/modules ]; then \
- install -m ${CONFMODE} lfs/sysconfig/modules ${EXTDIR}/sysconfig/ ;\
+ if [ ! -f ${ETCDIR}/sysconfig/modules ]; then \
+ install -m ${CONFMODE} lfs/sysconfig/modules ${ETCDIR}/sysconfig/ ;\
fi
- if [ ! -f ${EXTDIR}/sysconfig/udev_retry ]; then \
- install -m ${CONFMODE} lfs/sysconfig/udev_retry ${EXTDIR}/sysconfig/ ;\
+ if [ ! -f ${ETCDIR}/sysconfig/udev_retry ]; then \
+ install -m ${CONFMODE} lfs/sysconfig/udev_retry ${ETCDIR}/sysconfig/ ;\
fi
- if [ ! -f ${EXTDIR}/sysconfig/rc.site ]; then \
- install -m ${CONFMODE} lfs/sysconfig/rc.site ${EXTDIR}/sysconfig/ ;\
+ if [ ! -f ${ETCDIR}/sysconfig/rc.site ]; then \
+ install -m ${CONFMODE} lfs/sysconfig/rc.site ${ETCDIR}/sysconfig/ ;\
fi
links: rcS rc0 rc1 rc2 rc3 rc4 rc5 rc6
rcS: files
- ln -sf ../init.d/mountvirtfs ${EXTDIR}/rc.d/rcS.d/S00mountvirtfs
- ln -sf ../init.d/modules ${EXTDIR}/rc.d/rcS.d/S05modules
- ln -sf ../init.d/localnet ${EXTDIR}/rc.d/rcS.d/S08localnet
- ln -sf ../init.d/udev ${EXTDIR}/rc.d/rcS.d/S10udev
- ln -sf ../init.d/swap ${EXTDIR}/rc.d/rcS.d/S20swap
- ln -sf ../init.d/checkfs ${EXTDIR}/rc.d/rcS.d/S30checkfs
- ln -sf ../init.d/mountfs ${EXTDIR}/rc.d/rcS.d/S40mountfs
- ln -sf ../init.d/cleanfs ${EXTDIR}/rc.d/rcS.d/S45cleanfs
- ln -sf ../init.d/udev_retry ${EXTDIR}/rc.d/rcS.d/S50udev_retry
- ln -sf ../init.d/console ${EXTDIR}/rc.d/rcS.d/S70console
- ln -sf ../init.d/sysctl ${EXTDIR}/rc.d/rcS.d/S90sysctl
+ ln -sf ../init.d/mountvirtfs ${ETCDIR}/rc.d/rcS.d/S00mountvirtfs
+ ln -sf ../init.d/modules ${ETCDIR}/rc.d/rcS.d/S05modules
+ ln -sf ../init.d/localnet ${ETCDIR}/rc.d/rcS.d/S08localnet
+ ln -sf ../init.d/udev ${ETCDIR}/rc.d/rcS.d/S10udev
+ ln -sf ../init.d/swap ${ETCDIR}/rc.d/rcS.d/S20swap
+ ln -sf ../init.d/checkfs ${ETCDIR}/rc.d/rcS.d/S30checkfs
+ ln -sf ../init.d/mountfs ${ETCDIR}/rc.d/rcS.d/S40mountfs
+ ln -sf ../init.d/cleanfs ${ETCDIR}/rc.d/rcS.d/S45cleanfs
+ ln -sf ../init.d/udev_retry ${ETCDIR}/rc.d/rcS.d/S50udev_retry
+ ln -sf ../init.d/console ${ETCDIR}/rc.d/rcS.d/S70console
+ ln -sf ../init.d/sysctl ${ETCDIR}/rc.d/rcS.d/S90sysctl
rc0: files
- ln -sf ../init.d/network ${EXTDIR}/rc.d/rc0.d/K80network
- ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc0.d/K90sysklogd
- ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc0.d/S60sendsignals
- ln -sf ../init.d/swap ${EXTDIR}/rc.d/rc0.d/S65swap
- ln -sf ../init.d/mountfs ${EXTDIR}/rc.d/rc0.d/S70mountfs
- ln -sf ../init.d/localnet ${EXTDIR}/rc.d/rc0.d/S90localnet
- ln -sf ../init.d/halt ${EXTDIR}/rc.d/rc0.d/S99halt
+ ln -sf ../init.d/network ${ETCDIR}/rc.d/rc0.d/K80network
+ ln -sf ../init.d/sysklogd ${ETCDIR}/rc.d/rc0.d/K90sysklogd
+ ln -sf ../init.d/sendsignals ${ETCDIR}/rc.d/rc0.d/S60sendsignals
+ ln -sf ../init.d/swap ${ETCDIR}/rc.d/rc0.d/S65swap
+ ln -sf ../init.d/mountfs ${ETCDIR}/rc.d/rc0.d/S70mountfs
+ ln -sf ../init.d/localnet ${ETCDIR}/rc.d/rc0.d/S90localnet
+ ln -sf ../init.d/halt ${ETCDIR}/rc.d/rc0.d/S99halt
rc1: files
- ln -sf ../init.d/network ${EXTDIR}/rc.d/rc1.d/K80network
- ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc1.d/K90sysklogd
+ ln -sf ../init.d/network ${ETCDIR}/rc.d/rc1.d/K80network
+ ln -sf ../init.d/sysklogd ${ETCDIR}/rc.d/rc1.d/K90sysklogd
rc2: files
- ln -sf ../init.d/network ${EXTDIR}/rc.d/rc2.d/K80network
- ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc2.d/K90sysklogd
+ ln -sf ../init.d/network ${ETCDIR}/rc.d/rc2.d/K80network
+ ln -sf ../init.d/sysklogd ${ETCDIR}/rc.d/rc2.d/K90sysklogd
rc3: files
- ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc3.d/S10sysklogd
- ln -sf ../init.d/network ${EXTDIR}/rc.d/rc3.d/S20network
+ ln -sf ../init.d/sysklogd ${ETCDIR}/rc.d/rc3.d/S10sysklogd
+ ln -sf ../init.d/network ${ETCDIR}/rc.d/rc3.d/S20network
rc4: files
- ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc4.d/S10sysklogd
- ln -sf ../init.d/network ${EXTDIR}/rc.d/rc4.d/S20network
+ ln -sf ../init.d/sysklogd ${ETCDIR}/rc.d/rc4.d/S10sysklogd
+ ln -sf ../init.d/network ${ETCDIR}/rc.d/rc4.d/S20network
rc5: files
- ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc5.d/S10sysklogd
- ln -sf ../init.d/network ${EXTDIR}/rc.d/rc5.d/S20network
+ ln -sf ../init.d/sysklogd ${ETCDIR}/rc.d/rc5.d/S10sysklogd
+ ln -sf ../init.d/network ${ETCDIR}/rc.d/rc5.d/S20network
rc6: files
- ln -sf ../init.d/network ${EXTDIR}/rc.d/rc6.d/K80network
- ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc6.d/K90sysklogd
- ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc6.d/S60sendsignals
- ln -sf ../init.d/swap ${EXTDIR}/rc.d/rc6.d/S65swap
- ln -sf ../init.d/mountfs ${EXTDIR}/rc.d/rc6.d/S70mountfs
- ln -sf ../init.d/localnet ${EXTDIR}/rc.d/rc6.d/S90localnet
- ln -sf ../init.d/reboot ${EXTDIR}/rc.d/rc6.d/S99reboot
+ ln -sf ../init.d/network ${ETCDIR}/rc.d/rc6.d/K80network
+ ln -sf ../init.d/sysklogd ${ETCDIR}/rc.d/rc6.d/K90sysklogd
+ ln -sf ../init.d/sendsignals ${ETCDIR}/rc.d/rc6.d/S60sendsignals
+ ln -sf ../init.d/swap ${ETCDIR}/rc.d/rc6.d/S65swap
+ ln -sf ../init.d/mountfs ${ETCDIR}/rc.d/rc6.d/S70mountfs
+ ln -sf ../init.d/localnet ${ETCDIR}/rc.d/rc6.d/S90localnet
+ ln -sf ../init.d/reboot ${ETCDIR}/rc.d/rc6.d/S99reboot
uninstall:
- rm -rf ${DESTDIR}/lib/services ${DESTDIR}/lib/lsb ${EXTDIR}/rc.d ${EXTDIR}/init.d \
- ${SBIN}/ifup ${SBIN}/ifdown ${MAN8}/ifup.8 ${MAN8}/ifdown.8 \
- ${EXTDIR}/sysconfig/rc
+ rm -rf ${DESTDIR}/lib/services ${DESTDIR}/lib/lsb ${ETCDIR}/rc.d ${ETCDIR}/init.d \
+ ${SBIN}/ifup ${SBIN}/ifdown ${MAN8}/ifup.8 ${MAN8}/ifdown.8 \
+ ${ETCDIR}/sysconfig/rc
.PHONY: all create-dirs install files links rcS rc0 rc1 rc2 rc3 rc4 rc5 rc6 uninstall
diff --git a/bootscripts/lfs/init.d/functions b/bootscripts/lfs/init.d/functions
deleted file mode 100644
index 58165a3bf..000000000
--- a/bootscripts/lfs/init.d/functions
+++ /dev/null
@@ -1,793 +0,0 @@
-#!/bin/sh
-########################################################################
-# Begin boot functions
-#
-# Description : Run Level Control Functions
-#
-# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
-# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version : LFS 7.0
-#
-# Notes : With code based on Matthias Benkmann's simpleinit-msb
-# http://winterdrache.de/linux/newboot/index.html
-#
-# This file is only present for backward BLFS compatibility
-#
-########################################################################
-
-## Environmental setup
-# Setup default values for environment
-umask 022
-export PATH="/bin:/usr/bin:/sbin:/usr/sbin"
-
-# Signal sent to running processes to refresh their configuration
-RELOADSIG="HUP"
-
-# Number of seconds between STOPSIG and FALLBACK when stopping processes
-KILLDELAY="3"
-
-## Screen Dimensions
-# Find current screen size
-if [ -z "${COLUMNS}" ]; then
- COLUMNS=$(stty size)
- COLUMNS=${COLUMNS##* }
-fi
-
-# When using remote connections, such as a serial port, stty size returns 0
-if [ "${COLUMNS}" = "0" ]; then
- COLUMNS=80
-fi
-
-## Measurements for positioning result messages
-COL=$((${COLUMNS} - 8))
-WCOL=$((${COL} - 2))
-
-## Provide an echo that supports -e and -n
-# If formatting is needed, $ECHO should be used
-case "`echo -e -n test`" in
- -[en]*)
- ECHO=/bin/echo
- ;;
- *)
- ECHO=echo
- ;;
-esac
-
-## Set Cursor Position Commands, used via $ECHO
-SET_COL="\\033[${COL}G" # at the $COL char
-SET_WCOL="\\033[${WCOL}G" # at the $WCOL char
-CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char
-
-## Set color commands, used via $ECHO
-# Please consult `man console_codes for more information
-# under the "ECMA-48 Set Graphics Rendition" section
-#
-# Warning: when switching from a 8bit to a 9bit font,
-# the linux console will reinterpret the bold (1;) to
-# the top 256 glyphs of the 9bit font. This does
-# not affect framebuffer consoles
-NORMAL="\\033[0;39m" # Standard console grey
-SUCCESS="\\033[1;32m" # Success is green
-WARNING="\\033[1;33m" # Warnings are yellow
-FAILURE="\\033[1;31m" # Failures are red
-INFO="\\033[1;36m" # Information is light cyan
-BRACKET="\\033[1;34m" # Brackets are blue
-
-STRING_LENGTH="0" # the length of the current message
-
-#*******************************************************************************
-# Function - boot_mesg()
-#
-# Purpose: Sending information from bootup scripts to the console
-#
-# Inputs: $1 is the message
-# $2 is the colorcode for the console
-#
-# Outputs: Standard Output
-#
-# Dependencies: - sed for parsing strings.
-# - grep for counting string length.
-#
-# Todo:
-#*******************************************************************************
-boot_mesg()
-{
- local ECHOPARM=""
-
- while true
- do
- case "${1}" in
- -n)
- ECHOPARM=" -n "
- shift 1
- ;;
- -*)
- echo "Unknown Option: ${1}"
- return 1
- ;;
- *)
- break
- ;;
- esac
- done
-
- ## Figure out the length of what is to be printed to be used
- ## for warning messages.
- STRING_LENGTH=$((${#1} + 1))
-
- # Print the message to the screen
- ${ECHO} ${ECHOPARM} -e "${2}${1}"
-
- # Log the message
- [ -d /run/var ] || return
- ${ECHO} ${ECHOPARM} -e "${2}${1}" >> /run/var/bootlog
-}
-
-boot_mesg_flush()
-{
- # Reset STRING_LENGTH for next message
- STRING_LENGTH="0"
-}
-
-echo_ok()
-{
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${SUCCESS} OK ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
-
- [ -d /run/var ] || return
- ${ECHO} -e "[ OK ]" >> /run/var/bootlog
-}
-
-echo_failure()
-{
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${FAILURE} FAIL ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
-
- [ -d /run/var ] || return
- ${ECHO} -e "[ FAIL]" >> /run/var/bootlog
-}
-
-echo_warning()
-{
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${WARNING} WARN ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
-
- [ -d /run/var ] || return
- ${ECHO} -e "[ WARN ]" >> /run/var/bootlog
-}
-
-echo_skipped()
-{
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${WARNING} SKIP ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
-
- [ -d /run/var ] || return
- ${ECHO} -e " [ SKIP ]" >> /run/var/bootlog
-}
-
-wait_for_user()
-{
- # Wait for the user by default
- [ "${HEADLESS=0}" = "0" ] && read ENTER
-}
-
-evaluate_retval()
-{
- error_value="${?}"
-
- if [ ${error_value} = 0 ]; then
- echo_ok
- else
- echo_failure
- fi
-
- # This prevents the 'An Unexpected Error Has Occurred' from trivial
- # errors.
- return 0
-}
-
-print_status()
-{
- if [ "${#}" = "0" ]; then
- echo "Usage: ${0} {success|warning|failure}"
- return 1
- fi
-
- case "${1}" in
-
- success)
- echo_ok
- ;;
-
- warning)
- # Leave this extra case in because old scripts
- # may call it this way.
- case "${2}" in
- running)
- ${ECHO} -e -n "${CURS_UP}"
- ${ECHO} -e -n "\\033[${STRING_LENGTH}G "
- boot_mesg "Already running." ${WARNING}
- echo_warning
- ;;
- not_running)
- ${ECHO} -e -n "${CURS_UP}"
- ${ECHO} -e -n "\\033[${STRING_LENGTH}G "
- boot_mesg "Not running." ${WARNING}
- echo_warning
- ;;
- not_available)
- ${ECHO} -e -n "${CURS_UP}"
- ${ECHO} -e -n "\\033[${STRING_LENGTH}G "
- boot_mesg "Not available." ${WARNING}
- echo_warning
- ;;
- *)
- # This is how it is supposed to
- # be called
- echo_warning
- ;;
- esac
- ;;
-
- failure)
- echo_failure
- ;;
-
- esac
-
-}
-
-reloadproc()
-{
- local pidfile=""
- local failure=0
-
- while true
- do
- case "${1}" in
- -p)
- pidfile="${2}"
- shift 2
- ;;
- -*)
- log_failure_msg "Unknown Option: ${1}"
- return 2
- ;;
- *)
- break
- ;;
- esac
- done
-
- if [ "${#}" -lt "1" ]; then
- log_failure_msg "Usage: reloadproc [-p pidfile] pathname"
- return 2
- fi
-
- # This will ensure compatibility with previous LFS Bootscripts
- if [ -n "${PIDFILE}" ]; then
- pidfile="${PIDFILE}"
- fi
-
- # Is the process running?
- if [ -z "${pidfile}" ]; then
- pidofproc -s "${1}"
- else
- pidofproc -s -p "${pidfile}" "${1}"
- fi
-
- # Warn about stale pid file
- if [ "$?" = 1 ]; then
- boot_mesg -n "Removing stale pid file: ${pidfile}. " ${WARNING}
- rm -f "${pidfile}"
- fi
-
- if [ -n "${pidlist}" ]; then
- for pid in ${pidlist}
- do
- kill -"${RELOADSIG}" "${pid}" || failure="1"
- done
-
- (exit ${failure})
- evaluate_retval
-
- else
- boot_mesg "Process ${1} not running." ${WARNING}
- echo_warning
- fi
-}
-
-statusproc()
-{
- local pidfile=""
- local base=""
- local ret=""
-
- while true
- do
- case "${1}" in
- -p)
- pidfile="${2}"
- shift 2
- ;;
- -*)
- log_failure_msg "Unknown Option: ${1}"
- return 2
- ;;
- *)
- break
- ;;
- esac
- done
-
- if [ "${#}" != "1" ]; then
- shift 1
- log_failure_msg "Usage: statusproc [-p pidfile] pathname"
- return 2
- fi
-
- # Get the process basename
- base="${1##*/}"
-
- # This will ensure compatibility with previous LFS Bootscripts
- if [ -n "${PIDFILE}" ]; then
- pidfile="${PIDFILE}"
- fi
-
- # Is the process running?
- if [ -z "${pidfile}" ]; then
- pidofproc -s "${1}"
- else
- pidofproc -s -p "${pidfile}" "${1}"
- fi
-
- # Store the return status
- ret=$?
-
- if [ -n "${pidlist}" ]; then
- ${ECHO} -e "${INFO}${base} is running with Process"\
- "ID(s) ${pidlist}.${NORMAL}"
- else
- if [ -n "${base}" -a -e "/var/run/${base}.pid" ]; then
- ${ECHO} -e "${WARNING}${1} is not running but"\
- "/var/run/${base}.pid exists.${NORMAL}"
- else
- if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
- ${ECHO} -e "${WARNING}${1} is not running"\
- "but ${pidfile} exists.${NORMAL}"
- else
- ${ECHO} -e "${INFO}${1} is not running.${NORMAL}"
- fi
- fi
- fi
-
- # Return the status from pidofproc
- return $ret
-}
-
-# The below functions are documented in the LSB-generic 2.1.0
-
-#*******************************************************************************
-# Function - pidofproc [-s] [-p pidfile] pathname
-#
-# Purpose: This function returns one or more pid(s) for a particular daemon
-#
-# Inputs: -p pidfile, use the specified pidfile instead of pidof
-# pathname, path to the specified program
-#
-# Outputs: return 0 - Success, pid's in stdout
-# return 1 - Program is dead, pidfile exists
-# return 2 - Invalid or excessive number of arguments,
-# warning in stdout
-# return 3 - Program is not running
-#
-# Dependencies: pidof, echo, head
-#
-# Todo: Remove dependency on head
-# This replaces getpids
-# Test changes to pidof
-#
-#*******************************************************************************
-pidofproc()
-{
- local pidfile=""
- local lpids=""
- local silent=""
- pidlist=""
- while true
- do
- case "${1}" in
- -p)
- pidfile="${2}"
- shift 2
- ;;
-
- -s)
- # Added for legacy opperation of getpids
- # eliminates several '> /dev/null'
- silent="1"
- shift 1
- ;;
- -*)
- log_failure_msg "Unknown Option: ${1}"
- return 2
- ;;
- *)
- break
- ;;
- esac
- done
-
- if [ "${#}" != "1" ]; then
- shift 1
- log_failure_msg "Usage: pidofproc [-s] [-p pidfile] pathname"
- return 2
- fi
-
- if [ -n "${pidfile}" ]; then
- if [ ! -r "${pidfile}" ]; then
- return 3 # Program is not running
- fi
-
- lpids=`head -n 1 ${pidfile}`
- for pid in ${lpids}
- do
- if [ "${pid}" -ne "$$" -a "${pid}" -ne "${PPID}" ]; then
- kill -0 "${pid}" 2>/dev/null &&
- pidlist="${pidlist} ${pid}"
- fi
-
- if [ "${silent}" != "1" ]; then
- echo "${pidlist}"
- fi
-
- test -z "${pidlist}" &&
- # Program is dead, pidfile exists
- return 1
- # else
- return 0
- done
-
- else
- pidlist=`pidof -o $$ -o $PPID -x "$1"`
- if [ "${silent}" != "1" ]; then
- echo "${pidlist}"
- fi
-
- # Get provide correct running status
- if [ -n "${pidlist}" ]; then
- return 0
- else
- return 3
- fi
-
- fi
-
- if [ "$?" != "0" ]; then
- return 3 # Program is not running
- fi
-}
-
-#*******************************************************************************
-# Function - loadproc [-f] [-n nicelevel] [-p pidfile] pathname [args]
-#
-# Purpose: This runs the specified program as a daemon
-#
-# Inputs: -f, run the program even if it is already running
-# -n nicelevel, specifies a nice level. See nice(1).
-# -p pidfile, uses the specified pidfile
-# pathname, pathname to the specified program
-# args, arguments to pass to specified program
-#
-# Outputs: return 0 - Success
-# return 2 - Invalid of excessive number of arguments,
-# warning in stdout
-# return 4 - Program or service status is unknown
-#
-# Dependencies: nice, rm
-#
-# Todo: LSB says this should be called start_daemon
-# LSB does not say that it should call evaluate_retval
-# It checks for PIDFILE, which is deprecated.
-# Will be removed after BLFS 6.0
-# loadproc returns 0 if program is already running, not LSB compliant
-#
-#*******************************************************************************
-loadproc()
-{
- local pidfile=""
- local forcestart=""
- local nicelevel="10"
-
-# This will ensure compatibility with previous LFS Bootscripts
- if [ -n "${PIDFILE}" ]; then
- pidfile="${PIDFILE}"
- fi
-
- while true
- do
- case "${1}" in
- -f)
- forcestart="1"
- shift 1
- ;;
- -n)
- nicelevel="${2}"
- shift 2
- ;;
- -p)
- pidfile="${2}"
- shift 2
- ;;
- -*)
- log_failure_msg "Unknown Option: ${1}"
- return 2 #invalid or excess argument(s)
- ;;
- *)
- break
- ;;
- esac
- done
-
- if [ "${#}" = "0" ]; then
- log_failure_msg "Usage: loadproc [-f] [-n nicelevel] [-p pidfile] pathname [args]"
- return 2 #invalid or excess argument(s)
- fi
-
- if [ -z "${forcestart}" ]; then
- if [ -z "${pidfile}" ]; then
- pidofproc -s "${1}"
- else
- pidofproc -s -p "${pidfile}" "${1}"
- fi
-
- case "${?}" in
- 0)
- log_warning_msg "Unable to continue: ${1} is running"
- return 0 # 4
- ;;
- 1)
- boot_mesg "Removing stale pid file: ${pidfile}" ${WARNING}
- rm -f "${pidfile}"
- ;;
- 3)
- ;;
- *)
- log_failure_msg "Unknown error code from pidofproc: ${?}"
- return 4
- ;;
- esac
- fi
-
- nice -n "${nicelevel}" "${@}"
- evaluate_retval # This is "Probably" not LSB compliant,
-# but required to be compatible with older bootscripts
- return 0
-}
-
-#*******************************************************************************
-# Function - killproc [-p pidfile] pathname [signal]
-#
-# Purpose:
-#
-# Inputs: -p pidfile, uses the specified pidfile
-# pathname, pathname to the specified program
-# signal, send this signal to pathname
-#
-# Outputs: return 0 - Success
-# return 2 - Invalid of excessive number of arguments,
-# warning in stdout
-# return 4 - Unknown Status
-#
-# Dependencies: kill, rm
-#
-# Todo: LSB does not say that it should call evaluate_retval
-# It checks for PIDFILE, which is deprecated.
-# Will be removed after BLFS 6.0
-#
-#*******************************************************************************
-killproc()
-{
- local pidfile=""
- local killsig=TERM # default signal is SIGTERM
- pidlist=""
-
- # This will ensure compatibility with previous LFS Bootscripts
- if [ -n "${PIDFILE}" ]; then
- pidfile="${PIDFILE}"
- fi
-
- while true
- do
- case "${1}" in
- -p)
- pidfile="${2}"
- shift 2
- ;;
- -*)
- log_failure_msg "Unknown Option: ${1}"
- return 2
- ;;
- *)
- break
- ;;
- esac
- done
-
- if [ "${#}" = "2" ]; then
- killsig="${2}"
- elif [ "${#}" != "1" ]; then
- shift 2
- log_failure_msg "Usage: killproc [-p pidfile] pathname [signal]"
- return 2
- fi
-
- # Is the process running?
- if [ -z "${pidfile}" ]; then
- pidofproc -s "${1}"
- else
- pidofproc -s -p "${pidfile}" "${1}"
- fi
-
- # Remove stale pidfile
- if [ "$?" = 1 ]; then
- boot_mesg "Removing stale pid file: ${pidfile}." ${WARNING}
- rm -f "${pidfile}"
- fi
-
- # If running, send the signal
- if [ -n "${pidlist}" ]; then
- for pid in ${pidlist}
- do
- kill -${killsig} ${pid} 2>/dev/null
-
- # Wait up to 3 seconds, for ${pid} to terminate
- case "${killsig}" in
- TERM|SIGTERM|KILL|SIGKILL)
- # sleep in 1/10ths of seconds and
- # multiply KILLDELAY by 10
- local dtime="${KILLDELAY}0"
- while [ "${dtime}" != "0" ]
- do
- kill -0 ${pid} 2>/dev/null || break
- sleep 0.1
- dtime=$(( ${dtime} - 1))
- done
- # If ${pid} is still running, kill it
- kill -0 ${pid} 2>/dev/null && kill -KILL ${pid} 2>/dev/null
- ;;
- esac
- done
-
- # Check if the process is still running if we tried to stop it
- case "${killsig}" in
- TERM|SIGTERM|KILL|SIGKILL)
- if [ -z "${pidfile}" ]; then
- pidofproc -s "${1}"
- else
- pidofproc -s -p "${pidfile}" "${1}"
- fi
-
- # Program was terminated
- if [ "$?" != "0" ]; then
- # Remove the pidfile if necessary
- if [ -f "${pidfile}" ]; then
- rm -f "${pidfile}"
- fi
- echo_ok
- return 0
- else # Program is still running
- echo_failure
- return 4 # Unknown Status
- fi
- ;;
- *)
- # Just see if the kill returned successfully
- evaluate_retval
- ;;
- esac
- else # process not running
- print_status warning not_running
- fi
-}
-
-
-#*******************************************************************************
-# Function - log_success_msg "message"
-#
-# Purpose: Print a success message
-#
-# Inputs: $@ - Message
-#
-# Outputs: Text output to screen
-#
-# Dependencies: echo
-#
-# Todo: logging
-#
-#*******************************************************************************
-log_success_msg()
-{
- ${ECHO} -n -e "${BOOTMESG_PREFIX}${@}"
- ${ECHO} -e "${SET_COL}""${BRACKET}""[""${SUCCESS}"" OK ""${BRACKET}""]""${NORMAL}"
-
- [ -d /run/var ] || return 0
- ${ECHO} -n -e "${@} [ OK ]" >> /run/var/bootlog
- return 0
-}
-
-#*******************************************************************************
-# Function - log_failure_msg "message"
-#
-# Purpose: Print a failure message
-#
-# Inputs: $@ - Message
-#
-# Outputs: Text output to screen
-#
-# Dependencies: echo
-#
-# Todo: logging
-#
-#*******************************************************************************
-log_failure_msg() {
- ${ECHO} -n -e "${BOOTMESG_PREFIX}${@}"
- ${ECHO} -e "${SET_COL}""${BRACKET}""[""${FAILURE}"" FAIL ""${BRACKET}""]""${NORMAL}"
-
- [ -d /run/var ] || return 0
- ${ECHO} -e "${@} [ FAIL ]" >> /run/var/bootlog
- return 0
-}
-
-#*******************************************************************************
-# Function - log_warning_msg "message"
-#
-# Purpose: print a warning message
-#
-# Inputs: $@ - Message
-#
-# Outputs: Text output to screen
-#
-# Dependencies: echo
-#
-# Todo: logging
-#
-#*******************************************************************************
-log_warning_msg() {
- ${ECHO} -n -e "${BOOTMESG_PREFIX}${@}"
- ${ECHO} -e "${SET_COL}""${BRACKET}""[""${WARNING}"" WARN ""${BRACKET}""]""${NORMAL}"
-
- [ -d /run/var ] || return 0
- ${ECHO} -e "${@} [ WARN ]" >> /run/var/bootlog
- return 0
-}
-
-#*******************************************************************************
-# Function - log_skipped_msg "message"
-#
-# Purpose: print a message that the script was skipped
-#
-# Inputs: $@ - Message
-#
-# Outputs: Text output to screen
-#
-# Dependencies: echo
-#
-# Todo: logging
-#
-#*******************************************************************************
-log_skipped_msg() {
- ${ECHO} -n -e "${BOOTMESG_PREFIX}${@}"
- ${ECHO} -e "${SET_COL}""${BRACKET}""[""${WARNING}"" SKIP ""${BRACKET}""]""${NORMAL}"
-
- [ -d /run/var ] || return 0
- ${ECHO} -e "${@} [ SKIP ]" >> /run/var/bootlog
- return 0
-}
-
-# End boot functions
diff --git a/bootscripts/lfs/init.d/localnet b/bootscripts/lfs/init.d/localnet
index 7afcb72dd..4b85a987f 100644
--- a/bootscripts/lfs/init.d/localnet
+++ b/bootscripts/lfs/init.d/localnet
@@ -28,6 +28,7 @@
. /lib/lsb/init-functions
[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network
+[ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname`
case "${1}" in
start)
diff --git a/bootscripts/lfs/init.d/mountfs b/bootscripts/lfs/init.d/mountfs
index 6784a6943..4605d6096 100644
--- a/bootscripts/lfs/init.d/mountfs
+++ b/bootscripts/lfs/init.d/mountfs
@@ -39,6 +39,9 @@ case "${1}" in
# Remove fsck-related file system watermarks.
rm -f /fastboot /forcefsck
+ # Make sure /dev/pts exists
+ mkdir -p /dev/pts
+
# This will mount all filesystems that do not have _netdev in
# their option list. _netdev denotes a network filesystem.
diff --git a/bootscripts/lfs/init.d/mountvirtfs b/bootscripts/lfs/init.d/mountvirtfs
index 9c0d0f24d..efbb29d87 100644
--- a/bootscripts/lfs/init.d/mountvirtfs
+++ b/bootscripts/lfs/init.d/mountvirtfs
@@ -31,12 +31,12 @@
case "${1}" in
start)
- # Make sure /run/var is available before logging any messages
+ # Make sure /run is available before logging any messages
if ! mountpoint /run >/dev/null; then
mount /run || failed=1
fi
- mkdir -p /run/var /run/lock /run/shm
+ mkdir -p /run/lock /run/shm
chmod 1777 /run/shm
log_info_msg "Mounting virtual file systems: ${INFO}/run"
diff --git a/bootscripts/lfs/init.d/rc b/bootscripts/lfs/init.d/rc
index 30b5fe059..93d6ea942 100644
--- a/bootscripts/lfs/init.d/rc
+++ b/bootscripts/lfs/init.d/rc
@@ -217,13 +217,13 @@ fi
# Copy the boot log on initial boot only
if [ "${previous}" == "N" -a "${runlevel}" != "S" ]; then
- cat /run/var/bootlog >> /var/log/boot.log
+ cat $BOOTLOG >> /var/log/boot.log
# Mark the end of boot
echo "--------" >> /var/log/boot.log
# Remove the temporary file
- rm -f /run/var/bootlog 2> /dev/null
+ rm -f $BOOTLOG 2> /dev/null
fi
# End rc
diff --git a/bootscripts/lfs/init.d/udev b/bootscripts/lfs/init.d/udev
index ab56ab9e3..9e784ccb2 100644
--- a/bootscripts/lfs/init.d/udev
+++ b/bootscripts/lfs/init.d/udev
@@ -49,17 +49,17 @@ case "${1}" in
# Start the udev daemon to continually watch for, and act on,
# uevents
- /sbin/udevd --daemon
+ /lib/systemd-udevd --daemon
# Now traverse /sys in order to "coldplug" devices that have
# already been discovered
- /sbin/udevadm trigger --action=add --type=subsystems
- /sbin/udevadm trigger --action=add --type=devices
- /sbin/udevadm trigger --action=change --type=devices
+ /bin/udevadm trigger --action=add --type=subsystems
+ /bin/udevadm trigger --action=add --type=devices
+ /bin/udevadm trigger --action=change --type=devices
# Now wait for udevd to process the uevents we triggered
if ! is_true "$OMIT_UDEV_SETTLE"; then
- /sbin/udevadm settle
+ /bin/udevadm settle
fi
# If any LVM based partitions are on the system, ensure they
diff --git a/bootscripts/lfs/init.d/udev_retry b/bootscripts/lfs/init.d/udev_retry
index c921fc451..5db644a8b 100644
--- a/bootscripts/lfs/init.d/udev_retry
+++ b/bootscripts/lfs/init.d/udev_retry
@@ -35,7 +35,7 @@ case "${1}" in
log_info_msg "Retrying failed uevents, if any..."
# As of udev-186, the --run option is no longer valid
- #rundir=$(/sbin/udevadm info --run)
+ #rundir=$(/bin/udevadm info --run)
rundir=/run/udev
# From Debian: "copy the rules generated before / was mounted
# read-write":
@@ -52,13 +52,13 @@ case "${1}" in
/bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \
while read line ; do
for subsystem in $line ; do
- /sbin/udevadm trigger --subsystem-match=$subsystem --action=add
+ /bin/udevadm trigger --subsystem-match=$subsystem --action=add
done
done
# Now wait for udevd to process the uevents we triggered
if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then
- /sbin/udevadm settle
+ /bin/udevadm settle
fi
evaluate_retval
diff --git a/bootscripts/lfs/lib/services/init-functions b/bootscripts/lfs/lib/services/init-functions
index 06a7f588c..a09f6188b 100644
--- a/bootscripts/lfs/lib/services/init-functions
+++ b/bootscripts/lfs/lib/services/init-functions
@@ -71,7 +71,7 @@ SUCCESS_SUFFIX="${BRACKET}[${SUCCESS} OK ${BRACKET}]${NORMAL}"
FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}"
WARNING_SUFFIX="${BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}"
-BOOTLOG=/run/var/bootlog
+BOOTLOG=/run/bootlog
KILLDELAY=3
# Set any user specified environment variables e.g. HEADLESS
diff --git a/bootscripts/lfs/lib/systemd/ifupdown@.service b/bootscripts/lfs/lib/systemd/ifupdown@.service
new file mode 100644
index 000000000..963b8731c
--- /dev/null
+++ b/bootscripts/lfs/lib/systemd/ifupdown@.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Start ifupdown for %I
+BindTo=sys-subsystem-net-devices-%i.device
+ConditionPathExists=/etc/sysconfig/ifconfig.%i
+
+[Service]
+ExecStart=/sbin/ifup %I
+ExecStop=/sbin/ifdown %I
+RemainAfterExit=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/bootscripts/lfs/units/ifupdownat.service b/bootscripts/lfs/units/ifupdownat.service
new file mode 100644
index 000000000..963b8731c
--- /dev/null
+++ b/bootscripts/lfs/units/ifupdownat.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Start ifupdown for %I
+BindTo=sys-subsystem-net-devices-%i.device
+ConditionPathExists=/etc/sysconfig/ifconfig.%i
+
+[Service]
+ExecStart=/sbin/ifup %I
+ExecStop=/sbin/ifdown %I
+RemainAfterExit=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 471e10ae4..534fb41c2 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,6 +39,19 @@
<para>2014-03-31</para>
<itemizedlist>
<listitem>
+ <para>[bdubbs] - THIS IS A MAJOR CHANGE.
+ Added systemd and dbus to the book.
+ Rewrote Chapters 6 and 7 to install systemd and
+ SystemV side by side with the option to reconfigure
+ and come up in the other boot method upon reboot.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>2014-03-31</para>
+ <itemizedlist>
+ <listitem>
<para>[ken] - Remove remaining references to headers-check when
installing the linux API headers.</para>
</listitem>
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index 1349afc72..67ebbf051 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -233,10 +233,7 @@
<para>attr-&attr-version;</para>
</listitem>
<listitem>
- <para>eudev-&eudev-version;</para>
- </listitem>
- <listitem>
- <para>eudev-&eudev-version;-manpages</para>
+ <para>dbus-&dbus-version;</para>
</listitem>
<listitem>
<para>expat-&expat-version;</para>
@@ -251,6 +248,9 @@
<para>libcap-&libcap-version;</para>
</listitem>
<listitem>
+ <para>systemd-&systemd-version;</para>
+ </listitem>
+ <listitem>
<para>XML::Parser-&xml-parser-version;</para>
</listitem>
</itemizedlist>
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index 5f21589c1..954558afd 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -114,6 +114,15 @@
</varlistentry>
<varlistentry>
+ <term>D-Bus (&dbus-version;) - <token>&dbus-size;</token>:</term>
+ <listitem>
+ <para>Home page: <ulink url="&dbus-home;"/></para>
+ <para>Download: <ulink url="&dbus-url;"/></para>
+ <para>MD5 sum: <literal>&dbus-md5;</literal></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>DejaGNU (&dejagnu-version;) - <token>&dejagnu-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&dejagnu-home;"/></para>
@@ -157,7 +166,7 @@
<para>MD5 sum: <literal>&expect-md5;</literal></para>
</listitem>
</varlistentry>
-
+<!--
<varlistentry>
<term>Eudev (&eudev-version;) - <token>&eudev-size;</token>:</term>
<listitem>
@@ -174,7 +183,7 @@
<para>MD5 sum: <literal>&eudev-manpages-md5;</literal></para>
</listitem>
</varlistentry>
-
+-->
<varlistentry>
<term>File (&file-version;) - <token>&file-size;</token>:</term>
<listitem>
@@ -596,6 +605,15 @@
</varlistentry>
<varlistentry>
+ <term>Systemd (&systemd-version;) - <token>&systemd-size;</token>:</term>
+ <listitem>
+ <para>Home page: <ulink url="&systemd-home;"/></para>
+ <para>Download: <ulink url="&systemd-url;"/></para>
+ <para>MD5 sum: <literal>&systemd-md5;</literal></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>Sysvinit (&sysvinit-version;) - <token>&sysvinit-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&sysvinit-home;"/></para>
@@ -639,24 +657,15 @@
<para>MD5 sum: <literal>&texinfo-md5;</literal></para>
</listitem>
</varlistentry>
-<!--
- <varlistentry>
- <term>Systemd (&systemd-version;) - <token>&systemd-size;</token>:</term>
- <listitem>
- <para>Home page: <ulink url="&systemd-home;"/></para>
- <para>Download: <ulink url="&systemd-url;"/></para>
- <para>MD5 sum: <literal>&systemd-md5;</literal></para>
- </listitem>
- </varlistentry>
<varlistentry>
- <term>Udev-lfs Tarball (&systemd-version;) - <token>&udev-lfs-size;</token>:</term>
+ <term>Udev-lfs Tarball (&udev-lfs-version;) - <token>&udev-lfs-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&udev-lfs-url;"/></para>
<para>MD5 sum: <literal>&udev-lfs-md5;</literal></para>
</listitem>
</varlistentry>
--->
+
<varlistentry>
<term>Util-linux (&util-linux-version;) - <token>&util-linux-size;</token>:</term>
<listitem>
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index b7f0f617d..bfc133159 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -65,15 +65,15 @@
<para>MD5 sum: <literal>&perl-libc-patch-md5;</literal></para>
</listitem>
</varlistentry>
-<!--
+
<varlistentry>
- <term>Readline Upstream Fixes Patch - <token>&readline-fixes-patch-size;</token>:</term>
+ <term>Systemd Compat Patch - <token>&systemd-compat-patch-size;</token>:</term>
<listitem>
- <para>Download: <ulink url="&patches-root;&readline-fixes-patch;"/></para>
- <para>MD5 sum: <literal>&readline-fixes-patch-md5;</literal></para>
+ <para>Download: <ulink url="&patches-root;&systemd-compat-patch;"/></para>
+ <para>MD5 sum: <literal>&systemd-compat-patch-md5;</literal></para>
</listitem>
</varlistentry>
--->
+
<varlistentry>
<term>Sysvinit Consolidated Patch - <token>&sysvinit-consolidated-patch-size;</token>:</term>
<listitem>
diff --git a/chapter06/chapter06.xml b/chapter06/chapter06.xml
index 51d5a932f..a7e866f75 100644
--- a/chapter06/chapter06.xml
+++ b/chapter06/chapter06.xml
@@ -84,14 +84,14 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="patch.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sysklogd.xml"/>
-
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sysvinit-header.xml"/>
-
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sysvinit.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tar.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="texinfo.xml"/>
- <!--<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="systemd.xml"/>-->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="eudev.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="systemd.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dbus.xml"/>
+
+ <!--<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="eudev.xml"/>-->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="util-linux.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="man-db.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="vim.xml"/>
diff --git a/chapter06/dbus.xml b/chapter06/dbus.xml
new file mode 100644
index 000000000..476baf41d
--- /dev/null
+++ b/chapter06/dbus.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY % general-entities SYSTEM "../general.ent">
+ %general-entities;
+]>
+
+<sect1 id="ch-system-dbus" role="wrap">
+ <?dbhtml filename="dbus.html"?>
+
+ <sect1info condition="script">
+ <productname>dbus</productname>
+ <productnumber>&dbus-version;</productnumber>
+ <address>&dbus-url;</address>
+ </sect1info>
+
+ <title>D-Bus-&dbus-version;</title>
+
+ <indexterm zone="ch-system-dbus">
+ <primary sortas="a-dbus">D-Bus</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
+
+ <para>D-Bus is a message bus system, a simple way for applications to talk
+ to one another. D-Bus supplies both a system daemon (for events such as
+ "new hardware device added" or "printer queue changed") and a
+ per-user-login-session daemon (for general IPC needs among user
+ applications). Also, the message bus is built on top of a general one-to-one
+ message passing framework, which can be used by any two applications to
+ communicate directly (without going through the message bus daemon).</para>
+
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
+
+ <seglistitem>
+ <seg>&dbus-ch6-sbu;</seg>
+ <seg>&dbus-ch6-du;</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ </sect2>
+
+ <sect2 role="installation">
+ <title>Installation of D-Bus</title>
+
+ <para>Prepare D-Bus for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --docdir=/usr/share/doc/dbus-&dbus-version; \
+ --with-console-auth-dir=/run/console</userinput></screen>
+
+ <variablelist>
+ <title>The meaning of the configure options:</title>
+
+ <varlistentry>
+ <term><parameter>--with-console-auth-dir=/run/console</parameter></term>
+ <listitem>
+ <para>This specifies the location of the ConsoleKit auth
+ directory.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+ <para>This package does come with a testsuite, but it requires several
+ packages that are not included in LFS. Instructions for running the
+ testsuite can be found in the BLFS book at
+ <ulink url="&blfs-root;/view/svn/general/dbus.html"/>.</para>
+
+ <para>Install the package:</para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+ <para>The shared library needs to be moved to
+ <filename class="directory">/lib</filename>, and as a result the
+ <filename class="extension">.so</filename> file in
+ <filename class="directory">/usr/lib</filename> will need to be recreated:</para>
+
+<screen><userinput remap="install">mv -v /usr/lib/libdbus-1.so.* /lib
+ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so</userinput></screen>
+
+ <para>Create a symlink, so that D-Bus and Systemd can use the same
+ <filename>machine-id</filename> file:</para>
+
+<screen><userinput remap="install">ln -sv /etc/machine-id /var/lib/dbus</userinput></screen>
+
+ </sect2>
+
+ <sect2 id="contents-dbus" role="content">
+ <title>Contents of D-Bus</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+ <segtitle>Installed libraries</segtitle>
+ <segtitle>Installed directories</segtitle>
+
+ <seglistitem>
+ <seg>dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor,
+ dbus-send, and dbus-uuidgen</seg>
+ <seg>libdbus-1.{a,so}</seg>
+ <seg>/etc/dbus-1, /usr/include/dbus-1.0, /usr/lib/dbus-1.0,
+ /usr/share/dbus-1, /usr/share/doc/dbus-&dbus-version;,
+ /var/lib/dbus</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="dbus-cleanup-sockets">
+ <term><command>dbus-cleanup-sockets</command></term>
+ <listitem>
+ <para>Used to clean up leftover sockets in a directory.</para>
+ <indexterm zone="ch-system-dbus dbus-cleanup-sockets">
+ <primary sortas="b-dbus-cleanup-sockets">dbus-cleanup-sockets</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dbus-daemon">
+ <term><command>dbus-daemon</command></term>
+ <listitem>
+ <para>The D-Bus message bus daemon.</para>
+ <indexterm zone="ch-system-dbus dbus-daemon">
+ <primary sortas="b-dbus-daemon">dbus-daemon</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dbus-launch">
+ <term><command>dbus-launch</command></term>
+ <listitem>
+ <para>Starts <command>dbus-daemon</command> from a shell
+ script.</para>
+ <indexterm zone="ch-system-dbus dbus-launch">
+ <primary sortas="b-dbus-launch">dbus-launch</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dbus-monitor">
+ <term><command>dbus-monitor</command></term>
+ <listitem>
+ <para>Monitors messages passing through a D-Bus message bus.</para>
+ <indexterm zone="ch-system-dbus dbus-monitor">
+ <primary sortas="b-dbus-monitor">dbus-monitor</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dbus-send">
+ <term><command>dbus-send</command></term>
+ <listitem>
+ <para>Sends a message to a D-Bus message bus.</para>
+ <indexterm zone="ch-system-dbus dbus-send">
+ <primary sortas="b-dbus-send">dbus-send</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dbus-uuidgen">
+ <term><command>dbus-uuidgen</command></term>
+ <listitem>
+ <para>Generates a universally unique ID.</para>
+ <indexterm zone="ch-system-dbus dbus-uuidgen">
+ <primary sortas="b-dbus-uuidgen">dbus-uuidgen</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
+
+</sect1>
diff --git a/chapter06/systemd.xml b/chapter06/systemd.xml
index 23314e563..8e669f1d2 100644
--- a/chapter06/systemd.xml
+++ b/chapter06/systemd.xml
@@ -5,28 +5,26 @@
%general-entities;
]>
-<sect1 id="ch-system-udev" role="wrap">
- <?dbhtml filename="udev.html"?>
+<sect1 id="ch-system-systemd" role="wrap">
+ <?dbhtml filename="systemd.html"?>
<sect1info condition="script">
- <productname>udev</productname>
+ <productname>systemd</productname>
<productnumber>&systemd-version;</productnumber>
<address>&systemd-url;</address>
</sect1info>
- <title>Udev-&systemd-version; (Extracted from systemd-&systemd-version;)</title>
+ <title>Systemd-&systemd-version;</title>
- <indexterm zone="ch-system-udev">
- <primary sortas="a-Udev">Udev</primary>
+ <indexterm zone="ch-system-systemd">
+ <primary sortas="a-Systemd">Systemd</primary>
</indexterm>
<sect2 role="package">
<title/>
- <para>The Udev package contains programs for dynamic creation of device
- nodes. The development of udev has been merged with systemd, but
- most of systemd is incompatible with LFS. Here we build and install just
- the needed udev files.</para>
+ <para>The Systemd package contains programs for controlling the startup,
+ running, and shutdown of the system.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@@ -40,63 +38,155 @@
</sect2>
<sect2 role="installation">
- <title>Installation of Udev</title>
+ <title>Installation of Systemd</title>
- <note><para>This package is a little different from other packages. The
- initial package that is extracted is
- <filename>systemd-&systemd-version;.tar.xz</filename> even though the
- application we are installing is udev. After changing to the
- systemd directory, follow the instructions below.</para></note>
+ <para>First, create a file to allow Systemd to build when using Util-Linux
+ built in Chapter 5:</para>
- <para>The udev-lfs tarball contains LFS-specific files used to build
- Udev. Unpack it into the systemd source directory:</para>
+<screen><userinput remap="pre">cat &gt; config.cache &lt;&lt; "EOF"
+<literal>KILL=/bin/kill
+HAVE_BLKID=1
+BLKID_LIBS="-lblkid"
+BLKID_CFLAGS="-I/tools/include/blkid"</literal>
+EOF</userinput></screen>
-<screen><userinput remap="pre">tar -xvf ../&udev-lfs;.tar.bz2</userinput></screen>
+ <para>Aditionally, fix a build error when using Util-Linux built in
+ Chapter 5:</para>
- <para>Create two symbolic links to header files and set an
- environment variable to properly use <xref linkend="ch-tools-util-linux"/>.</para>
+<screen><userinput remap="pre">sed -i "s:blkid/::" $(grep -rl "blkid/blkid.h")</userinput></screen>
-<screen><userinput remap="pre">ln -svf /tools/include/blkid /usr/include
-ln -svf /tools/include/uuid /usr/include
-export LD_LIBRARY_PATH=/tools/lib</userinput></screen>
+ <para>Apply a patch so that compat <command>pkg-config</command> files get
+ installed without installing compat libs which are useless on LFS:</para>
- <para>Build the package:</para>
+<screen><userinput remap="pre">patch -Np1 -i ../&systemd-compat-patch;</userinput></screen>
-<screen><userinput remap="make">make -f &udev-lfs;/Makefile.lfs</userinput></screen>
+ <para>Prepare Systemd for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --config-cache \
+ --with-rootprefix= \
+ --with-rootlibdir=/lib \
+ --enable-split-usr \
+ --disable-gudev \
+ --without-python \
+ --docdir=/usr/share/doc/systemd-&systemd-version; \
+ --with-dbuspolicydir=/etc/dbus-1/system.d \
+ --with-dbusinterfacedir=/usr/share/dbus-1/interfaces \
+ --with-dbussessionservicedir=/usr/share/dbus-1/services \
+ --with-dbussystemservicedir=/usr/share/dbus-1/system-services</userinput></screen>
+
+ <variablelist>
+ <title>The meaning of the configure options:</title>
+
+ <varlistentry>
+ <term><parameter>--config-cache</parameter></term>
+ <listitem>
+ <para>This switch tells the build system to use
+ the <filename>config.cache</filename> file which
+ was created earlier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><parameter>--with-root*</parameter></term>
+ <listitem>
+ <para>These switches ensure that core programs and
+ shared libraries are installed in the subdirectories
+ of the root partition.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><parameter>--enable-split-usr</parameter></term>
+ <listitem>
+ <para>This switch ensures that Systemd will work on
+ systems where /bin, /lib and /sbin directories are not
+ symlinks to their /usr counterparts.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><parameter>--disable-gudev --without-python</parameter></term>
+ <listitem>
+ <para>These switches disable optional features because
+ LFS does not provide their dependencies.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><parameter>--with-dbus*</parameter></term>
+ <listitem>
+ <para>These switches ensure that D-Bus configuratil files
+ get installed in the correct locations.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>Compile the package:</para>
+
+<screen><userinput remap="make">make LIBRARY_PATH=/tools/lib</userinput></screen>
+
+ <para>First prevent few broken test cases from running:</para>
+
+<screen><userinput remap="test">sed -e "s:test/udev-test.pl::g" \
+ -e "s:test-bus-cleanup\$(EXEEXT) ::g" \
+ -e "s:test-bus-gvariant\$(EXEEXT) ::g" \
+ -i Makefile</userinput></screen>
+
+ <para>To test the results, issue:</para>
+
+<screen><userinput remap="test">make -k check</userinput></screen>
+
+ <para>Note that some tests might fail because the test are being run in a
+ chroot environment. For full test coverage, the test suite should be run
+ from a system booted using Systemd.</para>
<para>Install the package:</para>
-<screen><userinput remap="install">make -f &udev-lfs;/Makefile.lfs install</userinput></screen>
+<screen><userinput remap="install">make LD_LIBRARY_PATH=/tools/lib install</userinput></screen>
+
+ <para>Move NSS myhostname library to <filename
+ class="directory">/lib</filename>:</para>
+
+<screen><userinput remap="install">mv -v /usr/lib/libnss_myhostname.so.2 /lib</userinput></screen>
+
+ <para>Remove an unnecessary directory:</para>
+
+<screen><userinput remap="install">rm -rfv /usr/lib/rpm</userinput></screen>
- <caution><para>There are several places within the
- <application>systemd</application> source code that have explicit directory
- paths embedded. For instance, the binary version of the hardware
- database's path and file name used at run time,
- <filename>/etc/udev/hwdb.bin</filename>, cannot be changed without explicit
- changes to the source code.</para></caution>
+ <para>Create the Sysvinit compatibility symlinks, and move some man pages
+ and a library that conflict with <xref linkend="ch-system-sysvinit"/> so
+ both systems can be installed side-by-side:</para>
- <para>Now initialize the hardware database:</para>
+<screen><userinput remap="install">for tool in runlevel reboot shutdown poweroff halt telinit; do
+ ln -sfv ../bin/systemctl /sbin/${tool}-systemd
+ mv -v /usr/share/man/man8/${tool}.8 /usr/share/man/man8/${tool}-systemd.8
+done
-<screen><userinput remap="install">build/udevadm hwdb --update</userinput></screen>
+ln -sfv ../lib/systemd/systemd /sbin/init-systemd
+mv -v /etc/init.d /etc/init.d-systemd</userinput></screen>
- <para>Finally set up the persistent network udev rules. This task will be
- explained in detail in <xref linkend='stable-net-names'/>. Note that the
- <filename class='directory'>/sys</filename> and <filename
- class='directory'>/proc</filename> filesystems must be mounted in the
- chroot environment as explained at the beginning of this chapter for the
- following script to work.</para>
+ <para>Remove a reference to a non-existent group:</para>
-<screen><userinput remap="install">bash &udev-lfs;/init-net-rules.sh</userinput></screen>
+<screen><userinput remap="install">sed -i "s:0775 root lock:0755 root root:g" /usr/lib/tmpfiles.d/legacy.conf</userinput></screen>
- <para>Do some cleanup:</para>
+ <para>Create the <filename>/etc/machine-id</filename> file needed by
+ Journald:</para>
-<screen><userinput remap="install">rm -fv /usr/include/{uuid,blkid}
-unset LD_LIBRARY_PATH</userinput></screen>
+<screen><userinput remap="install">systemd-machine-id-setup</userinput></screen>
+
+ <para>Finally install some LFS specific udev rules:</para>
+
+<screen><userinput remap="install">tar -xf ../&udev-lfs-version;.tar.bz2
+make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
</sect2>
- <sect2 id="contents-udev" role="content">
- <title>Contents of Udev</title>
+ <sect2 id="contents-systemd" role="content">
+ <title>Contents of Systemd</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
@@ -104,12 +194,22 @@ unset LD_LIBRARY_PATH</userinput></screen>
<segtitle>Installed directories</segtitle>
<seglistitem>
- <seg>accelerometer, ata_id, cdrom_id, collect, mtd_probe,
- scsi_id, v4l_id, udevadm, and udevd</seg>
-
- <seg>libudev.so</seg>
-
- <seg>/etc/udev, /lib/udev, /lib/firmware, /usr/share/doc/udev</seg>
+ <seg>bootctl, busctl, halt, hostnamectl, init, journalctl, kernel-install,
+ localectl, loginctl, machinectl, poweroff, reboot, runlevel, shutdown,
+ systemctl, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls,
+ systemd-cgtop, systemd-coredumpctl, systemd-delta, systemd-detect-virt,
+ systemd-inhibit, systemd-machine-id-setup, systemd-notify, systemd-nspawn,
+ systemd-run, systemd-stdio-bridge, systemd-tmpfiles, systemd-tty-ask-password-agent,
+ telinit, timedatectl, and udevadm</seg>
+
+ <seg>libnss_myhostname.so.2, libsystemd.so, libudev.so</seg>
+ <seg>/etc/binfmt.d, /etc/init.d, /etc/kernel, /etc/modules-load.d,
+ /etc/sysctl.d, /etc/systemd, /etc/tmpfiles.d, /etc/udev,
+ /etc/xdg/systemd, /lib/systemd, /lib/udev, /usr/include/systemd,
+ /usr/lib/binfmt.d, /usr/lib/kernel, /usr/lib/modules-load.d,
+ /usr/lib/sysctl.d, /usr/lib/systemd, /usr/lib/tmpfiles.d,
+ /usr/share/doc/systemd-&systemd-version;, /usr/share/systemd,
+ /var/lib/systemd, /var/log/journal</seg>
</seglistitem>
</segmentedlist>
@@ -118,48 +218,363 @@ unset LD_LIBRARY_PATH</userinput></screen>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
- <varlistentry id="ata_id">
- <term><command>ata_id</command></term>
+ <varlistentry id="bootctl">
+ <term><command>bootctl</command></term>
+ <listitem>
+ <para>used to query the firmware and boot manager settings.</para>
+ <indexterm zone="ch-system-systemd bootctl">
+ <primary sortas="b-bootctl">bootctl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="busctl">
+ <term><command>busctl</command></term>
+ <listitem>
+ <para>used to introspect and monitor the D-Bus bus.</para>
+ <indexterm zone="ch-system-systemd busctl">
+ <primary sortas="b-busctl">busctl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="halt">
+ <term><command>halt</command></term>
+ <listitem>
+ <para>Normally invokes <command>shutdown</command> with the
+ <parameter>-h</parameter> option, except when already in run-level 0,
+ then it tells the kernel to halt the system; it notes in the
+ file <filename>/var/log/wtmp</filename> that the system is being
+ brought down.</para>
+ <indexterm zone="ch-system-systemd halt">
+ <primary sortas="b-halt">halt</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="hostnamectl">
+ <term><command>hostnamectl</command></term>
+ <listitem>
+ <para>used to query and change the system hostname and related
+ settings.</para>
+ <indexterm zone="ch-system-systemd hostnamectl">
+ <primary sortas="b-hostnamectl">hostnamectl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="init">
+ <term><command>init</command></term>
+ <listitem>
+ <para>The first process to be started when the kernel has initialized
+ the hardware which takes over the boot process and starts all the
+ proceses it is instructed to.</para>
+ <indexterm zone="ch-system-systemd init">
+ <primary sortas="b-init">init</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="journalctl">
+ <term><command>journalctl</command></term>
+ <listitem>
+ <para>used to query the contents of the Systemd Journal.</para>
+ <indexterm zone="ch-system-systemd journalctl">
+ <primary sortas="b-journalctl">journalctl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="kernel-install">
+ <term><command>kernel-install</command></term>
+ <listitem>
+ <para>used to add and remove kernel and initramfs images to and
+ from /boot.</para>
+ <indexterm zone="ch-system-systemd kernel-install">
+ <primary sortas="b-kernel-install">kernel-install</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="localectl">
+ <term><command>localectl</command></term>
+ <listitem>
+ <para>used to query and change the system locale and keyboard layout
+ settings.</para>
+ <indexterm zone="ch-system-systemd localectl">
+ <primary sortas="b-localectl">localectl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="loginctl">
+ <term><command>loginctl</command></term>
+ <listitem>
+ <para>used to introspect and control the state of the Systemd Login
+ Manager.</para>
+ <indexterm zone="ch-system-systemd loginctl">
+ <primary sortas="b-loginctl">loginctl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="machinectl">
+ <term><command>machinectl</command></term>
+ <listitem>
+ <para>used to introspect and control the state of the Systemd Virtual
+ Machine and Container Registration Manager</para>
+ <indexterm zone="ch-system-systemd machinectl">
+ <primary sortas="b-machinectl">machinectl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="poweroff">
+ <term><command>poweroff</command></term>
+ <listitem>
+ <para>Tells the kernel to halt the system and switch off the computer
+ (see <command>halt</command>).</para>
+ <indexterm zone="ch-system-systemd poweroff">
+ <primary sortas="b-poweroff">poweroff</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="reboot">
+ <term><command>reboot</command></term>
<listitem>
- <para>Provides Udev with a unique string and
- additional information (uuid, label) for an ATA drive</para>
- <indexterm zone="ch-system-udev ata_id">
- <primary sortas="b-ata_id">ata_id</primary>
+ <para>Tells the kernel to reboot the system (see
+ <command>halt</command>).</para>
+ <indexterm zone="ch-system-systemd reboot">
+ <primary sortas="b-reboot">reboot</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="cdrom_id">
- <term><command>cdrom_id</command></term>
+ <varlistentry id="runlevel">
+ <term><command>runlevel</command></term>
<listitem>
- <para>Provides Udev with the capabilities of a
- CD-ROM or DVD-ROM drive</para>
- <indexterm zone="ch-system-udev cdrom_id">
- <primary sortas="b-cdrom_id">cdrom_id</primary>
+ <para>Reports the previous and the current run-level, as noted in the
+ last run-level record in <filename>/var/run/utmp</filename>.</para>
+ <indexterm zone="ch-system-systemd runlevel">
+ <primary sortas="b-runlevel">runlevel</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="collect">
- <term><command>collect</command></term>
+ <varlistentry id="shutdown">
+ <term><command>shutdown</command></term>
<listitem>
- <para>Given an ID for the current uevent and a list of
- IDs (for all target uevents), registers the current ID
- and indicates whether all target IDs have been registered</para>
- <indexterm zone="ch-system-udev collect">
- <primary sortas="b-collect">collect</primary>
+ <para>Brings the system down in a secure way, signaling all processes
+ and notifying all logged-in users.</para>
+ <indexterm zone="ch-system-systemd shutdown">
+ <primary sortas="b-shutdown">shutdown</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="scsi_id">
- <term><command>scsi_id</command></term>
+ <varlistentry id="systemctl">
+ <term><command>systemctl</command></term>
<listitem>
- <para>Provides Udev with a unique SCSI identifier
- based on the data returned from sending a SCSI INQUIRY command to
- the specified device</para>
- <indexterm zone="ch-system-udev scsi_id">
- <primary sortas="b-scsi_id">scsi_id</primary>
+ <para>used to introspect and control the state of the Systemd system and
+ service manager.</para>
+ <indexterm zone="ch-system-systemd systemctl">
+ <primary sortas="b-systemctl">systemctl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-analyze">
+ <term><command>systemd-analyze</command></term>
+ <listitem>
+ <para>used to determine system boot-up performance of the current boot.
+ </para>
+ <indexterm zone="ch-system-systemd systemd-analyze">
+ <primary sortas="b-systemd-analyze">systemd-analyze</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-ask-password">
+ <term><command>systemd-ask-password</command></term>
+ <listitem>
+ <para>used to query a system password or passphrase from the user, using a
+ question message specified on the command line.</para>
+ <indexterm zone="ch-system-systemd systemd-ask-password">
+ <primary sortas="b-systemd-ask-password">systemd-ask-password</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-cat">
+ <term><command>systemd-cat</command></term>
+ <listitem>
+ <para>used to connect STDOUT and STDERR of a process with the Journal.
+ </para>
+ <indexterm zone="ch-system-systemd systemd-cat">
+ <primary sortas="b-systemd-cat">systemd-cat</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-cgls">
+ <term><command>systemd-cgls</command></term>
+ <listitem>
+ <para>recursively shows the contents of the selected Linux control group
+ hierarchy in a tree.</para>
+ <indexterm zone="ch-system-systemd systemd-cgls">
+ <primary sortas="b-systemd-cgls">systemd-cgls</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-cgtop">
+ <term><command>systemd-cgtop</command></term>
+ <listitem>
+ <para>shows the top control groups of the local Linux control group hierarchy,
+ ordered by their CPU, memory and disk I/O load.</para>
+ <indexterm zone="ch-system-systemd systemd-cgtop">
+ <primary sortas="b-systemd-cgtop">systemd-cgtop</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-coredumpctl">
+ <term><command>systemd-coredumpctl</command></term>
+ <listitem>
+ <para>used to retrieve coredumps from the Systemd Journal</para>
+ <indexterm zone="ch-system-systemd systemd-coredumpctl">
+ <primary sortas="b-systemd-coredumpctl">systemd-coredumpctl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-delta">
+ <term><command>systemd-delta</command></term>
+ <listitem>
+ <para>used to identify and compare configuration files in
+ <filename class="directory">/etc</filename> that override default
+ counterparts in <filename class="directory">/usr</filename>.</para>
+ <indexterm zone="ch-system-systemd systemd-delta">
+ <primary sortas="b-systemd-delta">systemd-delta</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-detect-virt">
+ <term><command>systemd-detect-virt</command></term>
+ <listitem>
+ <para>detects execution in a virtualized environment.</para>
+ <indexterm zone="ch-system-systemd systemd-detect-virt">
+ <primary sortas="b-systemd-detect-virt">systemd-detect-virt</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-inhibit">
+ <term><command>systemd-inhibit</command></term>
+ <listitem>
+ <para>used to execute a program with a shutdown, sleep or idle inhibitor lock
+ taken.</para>
+ <indexterm zone="ch-system-systemd systemd-inhibit">
+ <primary sortas="b-systemd-inhibit">systemd-inhibit</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-machine-id-setup">
+ <term><command>systemd-machine-id-setup</command></term>
+ <listitem>
+ <para>used by system installer tools to initialize the machine ID stored in
+ <filename>/etc/machine-id</filename> at install time with a randomly
+ generated ID.</para>
+ <indexterm zone="ch-system-systemd systemd-machine-id-setup">
+ <primary sortas="b-systemd-machine-id-setup">systemd-machine-id-setup</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-notify">
+ <term><command>systemd-notify</command></term>
+ <listitem>
+ <para>used by daemon scripts to notify the init system about status changes.
+ </para>
+ <indexterm zone="ch-system-systemd systemd-notify">
+ <primary sortas="b-systemd-notify">systemd-notify</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-nspawn">
+ <term><command>systemd-nspawn</command></term>
+ <listitem>
+ <para>used to run a command or OS in a light-weight namespace container.</para>
+ <indexterm zone="ch-system-systemd systemd-nspawn">
+ <primary sortas="b-systemd-nspawn">systemd-nspawn</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-run">
+ <term><command>systemd-run</command></term>
+ <listitem>
+ <para>used to create and start a transient .service or a .scope unit and
+ run the specified command in it.</para>
+ <indexterm zone="ch-system-systemd systemd-run">
+ <primary sortas="b-systemd-run">systemd-run</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+<!-- <varlistentry id="systemd-stdio-bridge">
+ <term><command>systemd-stdio-bridge</command></term>
+ <listitem>
+ <para>To be completed</para>
+ <indexterm zone="ch-system-systemd systemd-stdio-bridge">
+ <primary sortas="b-systemd-stdio-bridge">systemd-stdio-bridge</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry> -->
+
+ <varlistentry id="systemd-tmpfiles">
+ <term><command>systemd-tmpfiles</command></term>
+ <listitem>
+ <para>creates, deletes and cleans up volatile and temporary files and directories,
+ based on the configuration file format and location specified in
+ <filename class="directory">tmpfiles.d</filename> directories.</para>
+ <indexterm zone="ch-system-systemd systemd-tmpfiles">
+ <primary sortas="b-systemd-tmpfiles">systemd-tmpfiles</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="systemd-tty-ask-password-agent">
+ <term><command>systemd-tty-ask-password-agent</command></term>
+ <listitem>
+ <para>used to list or process pending Systemd password requests</para>
+ <indexterm zone="ch-system-systemd systemd-tty-ask-password-agent">
+ <primary sortas="b-systemd-tty-ask-password-agent">systemd-tty-ask-password-agent</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="telinit">
+ <term><command>telinit</command></term>
+ <listitem>
+ <para>Tells <command>init</command> which run-level to change to.</para>
+ <indexterm zone="ch-system-systemd telinit">
+ <primary sortas="b-telinit">telinit</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="timedatectl">
+ <term><command>timedatectl</command></term>
+ <listitem>
+ <para>used to query and change the system clock and its settings.
+ </para>
+ <indexterm zone="ch-system-systemd timedatectl">
+ <primary sortas="b-timedatectl">timedatectl</primary>
</indexterm>
</listitem>
</varlistentry>
@@ -167,24 +582,22 @@ unset LD_LIBRARY_PATH</userinput></screen>
<varlistentry id="udevadm">
<term><command>udevadm</command></term>
<listitem>
- <para>Generic udev administration tool: controls the udevd daemon,
+ <para>Generic Udev administration tool: controls the udevd daemon,
provides info from the Udev database, monitors uevents, waits for
uevents to finish, tests Udev configuration, and triggers uevents
- for a given device</para>
- <indexterm zone="ch-system-udev udevadm">
+ for a given device.</para>
+ <indexterm zone="ch-system-systemd udevadm">
<primary sortas="b-udevadm">udevadm</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="udevd">
- <term><command>udevd</command></term>
+ <varlistentry id="libsystemd">
+ <term><filename class="libraryfile">libsystemd</filename></term>
<listitem>
- <para>A daemon that listens for uevents on the netlink socket,
- creates devices and runs the configured external programs in
- response to these uevents</para>
- <indexterm zone="ch-system-udev udevd">
- <primary sortas="b-udevd">udevd</primary>
+ <para>Systemd utility library.</para>
+ <indexterm zone="ch-system-systemd libsystemd">
+ <primary sortas="c-libsystemd">libsystemd</primary>
</indexterm>
</listitem>
</varlistentry>
@@ -192,24 +605,13 @@ unset LD_LIBRARY_PATH</userinput></screen>
<varlistentry id="libudev">
<term><filename class="libraryfile">libudev</filename></term>
<listitem>
- <para>A library interface to udev device information</para>
- <indexterm zone="ch-system-udev libudev">
+ <para>A library to access Udev device information.</para>
+ <indexterm zone="ch-system-systemd libudev">
<primary sortas="c-libudev">libudev</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="etc-udev">
- <term><filename class="directory">/etc/udev</filename></term>
- <listitem>
- <para>Contains Udev configuration files,
- device permissions, and rules for device naming</para>
- <indexterm zone="ch-system-udev etc-udev">
- <primary sortas="e-/etc/udev">/etc/udev</primary>
- </indexterm>
- </listitem>
- </varlistentry>
-
</variablelist>
</sect2>
diff --git a/chapter06/sysvinit-header.xml b/chapter06/sysvinit-header.xml
deleted file mode 100644
index e42fad79e..000000000
--- a/chapter06/sysvinit-header.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-
-<sect1 role="dummy">
-
- <sect1info>
- <othername>$LastChangedBy$</othername>
- <date>$Date$</date>
- </sect1info>
-
- <title>System V</title>
- <para/>
-</sect1>
-
diff --git a/chapter06/sysvinit.xml b/chapter06/sysvinit.xml
index b1fac46db..c77f77ca1 100644
--- a/chapter06/sysvinit.xml
+++ b/chapter06/sysvinit.xml
@@ -82,6 +82,14 @@
<screen><userinput remap="install">make -C src install</userinput></screen>
+ <para>Move files that have a name conflict with <xref linkend="ch-system-systemd"/>
+ so that both packages can be installed side-by-side:</para>
+
+<screen><userinput remap="install">for p in init halt poweroff reboot runlevel shutdown telinit; do
+ mv -v /sbin/$p /sbin/$p-sysv
+ mv -v /usr/share/man/man8/$p.8 /usr/share/man/man8/$p-sysv.8
+done</userinput></screen>
+
</sect2>
<sect2 id="contents-sysvinit" role="content">
@@ -122,7 +130,7 @@
</listitem>
</varlistentry>
- <varlistentry id="halt">
+ <varlistentry id="halt-sysv">
<term><command>halt</command></term>
<listitem>
<para>Normally invokes <command>shutdown</command> with the
@@ -130,19 +138,19 @@
then it tells the kernel to halt the system; it notes in the
file <filename>/var/log/wtmp</filename> that the system is being
brought down</para>
- <indexterm zone="ch-system-sysvinit halt">
+ <indexterm zone="ch-system-sysvinit halt-sysv">
<primary sortas="b-halt">halt</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="init">
+ <varlistentry id="init-sysv">
<term><command>init</command></term>
<listitem>
<para>The first process to be started when the kernel has initialized
the hardware which takes over the boot process and starts all the
proceses it is instructed to</para>
- <indexterm zone="ch-system-sysvinit init">
+ <indexterm zone="ch-system-sysvinit init-sysv">
<primary sortas="b-init">init</primary>
</indexterm>
</listitem>
@@ -160,55 +168,55 @@
</listitem>
</varlistentry>
- <varlistentry id="poweroff">
+ <varlistentry id="poweroff-sysv">
<term><command>poweroff</command></term>
<listitem>
<para>Tells the kernel to halt the system and switch off the computer
(see <command>halt</command>)</para>
- <indexterm zone="ch-system-sysvinit poweroff">
+ <indexterm zone="ch-system-sysvinit poweroff-sysv">
<primary sortas="b-poweroff">poweroff</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="reboot">
+ <varlistentry id="reboot-sysv">
<term><command>reboot</command></term>
<listitem>
<para>Tells the kernel to reboot the system (see
<command>halt</command>)</para>
- <indexterm zone="ch-system-sysvinit reboot">
+ <indexterm zone="ch-system-sysvinit reboot-sysv">
<primary sortas="b-reboot">reboot</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="runlevel">
+ <varlistentry id="runlevel-sysv">
<term><command>runlevel</command></term>
<listitem>
<para>Reports the previous and the current run-level, as noted in the
last run-level record in <filename>/var/run/utmp</filename></para>
- <indexterm zone="ch-system-sysvinit runlevel">
+ <indexterm zone="ch-system-sysvinit runlevel-sysv">
<primary sortas="b-runlevel">runlevel</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="shutdown">
+ <varlistentry id="shutdown-sysv">
<term><command>shutdown</command></term>
<listitem>
<para>Brings the system down in a secure way, signaling all processes
and notifying all logged-in users</para>
- <indexterm zone="ch-system-sysvinit shutdown">
+ <indexterm zone="ch-system-sysvinit shutdown-sysv">
<primary sortas="b-shutdown">shutdown</primary>
</indexterm>
</listitem>
</varlistentry>
- <varlistentry id="telinit">
+ <varlistentry id="telinit-sysv">
<term><command>telinit</command></term>
<listitem>
<para>Tells <command>init</command> which run-level to change to</para>
- <indexterm zone="ch-system-sysvinit telinit">
+ <indexterm zone="ch-system-sysvinit telinit-sysv">
<primary sortas="b-telinit">telinit</primary>
</indexterm>
</listitem>
diff --git a/chapter07/bootscripts.xml b/chapter07/bootscripts.xml
index 7c2979f99..64e244d79 100644
--- a/chapter07/bootscripts.xml
+++ b/chapter07/bootscripts.xml
@@ -23,8 +23,9 @@
<sect2 role="package">
<title/>
- <para>The LFS-Bootscripts package contains a set of scripts to start/stop the
- LFS system at bootup/shutdown.</para>
+ <para>The LFS-Bootscripts package contains a set of scripts to start/stop
+ the LFS system at bootup/shutdown. The networking systemd unit file is
+ also installed.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@@ -51,6 +52,7 @@
<title>Contents of LFS-Bootscripts</title>
<segmentedlist>
<segtitle>Installed scripts</segtitle>
+ <segtitle>Installed unit</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
@@ -58,6 +60,7 @@
ifup, localnet, modules, mountfs, mountvirtfs, network, rc, reboot,
sendsignals, setclock, ipv4-static, swap, sysctl, sysklogd, template,
udev, and udev_retry</seg>
+ <seg>ifupdown@.service</seg>
<seg>/etc/rc.d, /etc/init.d (symbolic link), /etc/sysconfig,
/lib/services, /lib/lsb (symbolic link)</seg>
</seglistitem>
diff --git a/chapter07/chapter07.xml b/chapter07/chapter07.xml
index d312ef9ad..08c6e32b8 100644
--- a/chapter07/chapter07.xml
+++ b/chapter07/chapter07.xml
@@ -9,14 +9,14 @@
<?dbhtml dir="chapter07"?>
<?dbhtml filename="chapter07.html"?>
- <title>Setting Up System Bootscripts</title>
+ <title>System Configuration and Bootscripts</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bootscripts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="network.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hosts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="udev.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="symlinks.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bootscripts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="usage.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hostname.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="setclock.xml"/>
diff --git a/chapter07/hostname.xml b/chapter07/hostname.xml
index 9addc0f2a..c508d5372 100644
--- a/chapter07/hostname.xml
+++ b/chapter07/hostname.xml
@@ -15,14 +15,14 @@
<secondary>configuring</secondary>
</indexterm>
- <para>Part of the job of the <command>localnet</command> script is setting the
- system's hostname. This needs to be configured in the
- <filename>/etc/sysconfig/network</filename> file.</para>
+ <para>Durein gthe boot process, both Systemd and System V use the same
+ file for establixhg the system's hostname.This needs to be configured by
+ creating <filename>/etc/hostname</filename>.</para>
- <para>Create the <filename>/etc/sysconfig/network</filename> file and enter a
+ <para>Create the <filename>/etc/hostname</filename> file and enter a
hostname by running:</para>
-<screen><userinput>echo "HOSTNAME=<replaceable>&lt;lfs&gt;</replaceable>" &gt; /etc/sysconfig/network</userinput></screen>
+<screen><userinput>echo "<replaceable>&lt;lfs&gt;</replaceable>" &gt; /etc/hostname</userinput></screen>
<para><replaceable>&lt;lfs&gt;</replaceable> needs to be replaced with the name given
to the computer. Do not enter the Fully Qualified Domain Name (FQDN) here. That
diff --git a/chapter07/introduction.xml b/chapter07/introduction.xml
index f05f02515..780c36a42 100644
--- a/chapter07/introduction.xml
+++ b/chapter07/introduction.xml
@@ -10,82 +10,208 @@
<title>Introduction</title>
- <para>This chapter discusses configuration files and boot scripts.
- First, the general configuration files needed to set up networking are
- presented.</para>
-
- <itemizedlist>
- <listitem>
- <para><xref linkend="ch-scripts-network" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-hosts" role="."/></para>
- </listitem>
- </itemizedlist>
-
- <para>Second, issues that affect the proper setup of devices are
- discussed.</para>
-
- <itemizedlist>
- <listitem>
- <para><xref linkend="ch-scripts-udev" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-symlinks" role="."/></para>
- </listitem>
- </itemizedlist>
-
- <para>The next sections detail how to install and configure the LFS system
- scripts needed during the boot process. Most of these scripts will work
- without modification, but a few require additional configuration files
- because they deal with hardware-dependent information.</para>
-
- <para>System-V style init scripts are employed in this book because they are
- widely used and relatively simple. For additional options, a hint detailing
- the BSD style init setup is available at <ulink
- url="&hints-root;bsd-init.txt"/>. Searching the LFS mailing lists for
- <quote>depinit</quote>, <quote>upstart</quote>, or <quote>systemd</quote>
- will also offer additional information.</para>
-
- <para>If using an alternative style of init scripts, skip these sections.</para>
-
- <para>A listing of the boot scripts are found in <xref linkend="scripts"
- role="."/>.</para>
-
-
- <itemizedlist>
- <listitem>
- <para><xref linkend="ch-scripts-bootscripts" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-usage" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-hostname" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-setclock" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-console" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-sysklogd" role="."/></para>
- </listitem>
- </itemizedlist>
-
-
- <para>Finally, there is a brief introduction to the scripts and configuration
- files used when the user logs into the system.</para>
-
- <itemizedlist>
- <listitem>
- <para><xref linkend="ch-scripts-profile" role="."/></para>
- </listitem>
- <listitem>
- <para><xref linkend="ch-scripts-inputrc" role="."/></para>
- </listitem>
- </itemizedlist>
+ <para>Booting a Linux system involves several tasks. The process must
+ mount both virtual and real file systems, initialize devices, activate swap,
+ check file systems for integrity, mount any swap partitions or files, set
+ the system clock, bring up networking, start any daemons required by the
+ system, and accomplish any other custom tasks needed by the user. This
+ process must be organized to ensure the tasks are performed in the correct
+ order but, at the same time, be executed as fast as possible.</para>
+
+ <para>In the packages that were installed in Chapter 6, there were two
+ different boot systems installed. LFS provides the ability to easily
+ select which system the user wants to use and to compare and contrast the
+ two systems by actually running each system on the local computer. The
+ advantages and disadvantages of these systems is presented below.</para>
+
+ <sect2 id='sysv-desc'>
+ <title>System V</title>
+
+ <para>System V is the classic boot process that has been used in Unix and
+ Unix-like systems such as Linux since about 1983. It consists of a small
+ program, <command>init</command>, that sets up basic programs such as
+ <command>login</command> (via getty) and runs a script. This script,
+ usually named <command>rc</command>, controls the execution of a set of
+ additional scripts that perform the tasks required to initialize the
+ system.</para>
+
+ <para>The <command>init</command> program is controlled by the
+ <filename>/etc/inittab</filename> file and is organized into run levels that
+ can be run by the user:</para>
+
+ <itemizedlist>
+ <listitem><para>0 &mdash; halt</para></listitem>
+ <listitem><para>1 &mdash; Single user mode</para></listitem>
+ <listitem><para>2 &mdash; Multiuser, without networking</para></listitem>
+ <listitem><para>3 &mdash; Full multiuser mode</para></listitem>
+ <listitem><para>4 &mdash; User definable</para></listitem>
+ <listitem><para>5 &mdash; Full multiuser mode with display manager</para></listitem>
+ <listitem><para>6 &mdash; reboot</para></listitem>
+ </itemizedlist>
+
+ <para>The usual default run level is 3 or 5.</para>
+
+ <bridgehead renderas="sect3">Advantages</bridgehead>
+
+ <itemizedlist>
+ <listitem>
+ <para>Established, well understood system.</para>
+ </listitem>
+
+ <listitem>
+ <para>Easy to customize.</para>
+ </listitem>
+
+ </itemizedlist>
+
+
+ <bridgehead renderas="sect3">Disadvantages</bridgehead>
+
+ <itemizedlist>
+ <listitem>
+ <para>Slower to boot. A medium speed base LFS system
+ takes 8-12 seconds where the boot time is measured from the
+ first kernel message to the login prompt. Network
+ connectivity is typically established about 2 seconds
+ after the login prompt.</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial processing of boot tasks. This is related to the previous
+ point. A delay in any process such as a file system check, will
+ delay the entire boot process.</para>
+ </listitem>
+
+ <listitem>
+ <para>Does not directly support advanced features like
+ control groups (cgroups), and per-user fair share scheduling.</para>
+ </listitem>
+
+ <listitem>
+ <para>Adding scripts requires manual, static sequencing decisions.</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id='sysd-desc'>
+ <title>Systemd</title>
+
+ <para>Systemd is a group of interconnected programs that handles system and
+ individual process requests. It provides a dependency system between
+ various entities called "units". It automatically addresses dependencies
+ between units and can execute several startup tasks in parallel. It
+ provides login, inetd, logging, time, and networking services. </para>
+
+ <bridgehead renderas="sect3">Advantages</bridgehead>
+
+ <itemizedlist>
+ <listitem>
+ <para>Used on many established distributions by default.</para>
+ </listitem>
+
+ <listitem>
+ <para>There is extensive documentation.
+ See <ulink url="http://www.freedesktop.org/wiki/Software/systemd/"/>.</para>
+ </listitem>
+ <listitem>
+ <para>Parallel execution of boot processes. A medium speed
+ base LFS system takes 6-10 seconds from kernel start to a
+ login prompt. Network connectivity is typically established
+ about 2 seconds after the login prompt. More complex startup
+ procedures may show a greater speedup when compared to System V.</para>
+ </listitem>
+
+ <listitem>
+ <para>Implements advanced features such as control groups to
+ manage related processes.</para>
+ </listitem>
+
+ <listitem>
+ <para>Maintains backward compatibility with System V programs
+ and scripts.</para>
+ </listitem>
+ </itemizedlist>
+
+ <bridgehead renderas="sect3">Disadvantages</bridgehead>
+
+ <itemizedlist>
+ <listitem>
+ <para>There is a substantial learning curve.</para>
+ </listitem>
+
+ <listitem>
+ <para>Some advanced features such as dbus or cgroups cannot be
+ disabled if they are not otherwise needed.</para>
+ </listitem>
+
+ <listitem>
+ <para>Although implemented as several executable programs
+ the user cannot choose to implement only the portions desired.</para>
+ </listitem>
+
+ <listitem>
+ <para>Due to the nature of using compiled programs, systemd is
+ more difficult to debug.</para>
+ </listitem>
+
+ <listitem>
+ <para>Logging is done in a binary format. Extra tools must
+ be used to process logs or additional processes must be implemented
+ to duplicate traditional logging programs.</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id='sysv'>
+ <title>Selecting a Boot Method</title>
+
+ <para>Selecting a boot method in LFS is relatively easy.
+ Both systems are installed side-by-side. The only task needed is to
+ ensure the files that are needed by the system have the correct names.
+ The following scripts do that.</para>
+
+<screen><userinput remap="install">cat &gt; /usr/local/sbin/set-systemd &lt;&lt; "EOF"
+#! /bin/bash
+
+ln -svfn init-systemd /sbin/init
+ln -svfn init.d-systemd /etc/init.d
+
+for tool in halt poweroff reboot runlevel shutdown telinit; do
+ ln -sfvn $(tool}-systemd /sbin/${tool}
+ ln -svfn ${tool}-systemd.8 /usr/share/man/man8/${tool}.8
+done
+
+echo "Now reboot with /sbin/reboot-sysv"
+EOF
+
+chmod 0744 /usr/local/sbin/set-systemd
+
+cat &gt; /usr/local/sbin/set-sysv &lt;&lt; "EOF"
+ln -sfvn init-sysv /sbin/init
+ln -svfn init.d-sysv /etc/init.d
+
+for tool in halt poweroff reboot runlevel shutdown telinit; do
+ ln -sfvn ${tool}-sysv /sbin/${tool}
+ ln -svfn ${tool}-sysv.8 /usr/share/man/man8/${tool}.8
+done
+
+echo "Now reboot with /sbin/reboot-systemd"
+EOF
+
+chmod 0744 /usr/local/sbin/set-sysv</userinput></screen>
+
+ <para>Now set the desired boot system. The default is System V:</para>
+
+<screen><userinput remap="install">/usr/local/sbin/set-sysv</userinput></screen>
+
+ <para>Changing the boot system can be done at any time by running the
+ appropriate script above and rebooting.</para>
+
+ </sect2>
</sect1>
diff --git a/chapter07/network.xml b/chapter07/network.xml
index 4e3dd43e0..f776aad7a 100644
--- a/chapter07/network.xml
+++ b/chapter07/network.xml
@@ -42,8 +42,12 @@
avoid this, Udev comes with a script and some rules to assign stable names
to network cards based on their MAC address.</para>
- <para>The rules were pre-generated in the build instructions for
- <application>udev (systemd)</application> in the last chapter. Inspect the
+ <para>If using the traditional network interface names such as eth0 is desired,
+ generate a custom Udev rule:</para>
+
+<screen><userinput>bash /lib/udev/init-net-rules.sh</userinput></screen>
+
+ <para> Now, inspect the
<filename>/etc/udev/rules.d/70-persistent-net.rules</filename> file, to
find out which name was assigned to which network device:</para>
@@ -122,11 +126,20 @@
depends on the files in <filename
class="directory">/etc/sysconfig/</filename>. This directory should
contain a file for each interface to be configured, such as
- <filename>ifconfig.xyz</filename>, where <quote>xyz</quote> is
- meaningful to the administrator such as the device name (e.g. eth0).
- Inside this file are attributes to this interface, such as its IP
- address(es), subnet masks, and so forth. It is necessary that
- the stem of the filename be <emphasis>ifconfig</emphasis>.</para>
+ <filename>ifconfig.xyz</filename>, where <quote>xyz</quote> is required to
+ be a Network Card Interface name (e.g. eth0). Inside this file are
+ attributes to this interface, such as its IP address(es), subnet masks, and
+ so forth. It is necessary that the stem of the filename be
+ <emphasis>ifconfig</emphasis>.</para>
+
+ <note><para>If the procedure in the previous section was not used, Udev
+ will assign network card interface names based on system physical
+ characteristics such as enp2s1. If you are not sure what your interface
+ name is, you can always run <command>ip link</command> after you have
+ booted your system. Again, it is important that ifconfig.xyz is named
+ after correct network card interface name (e.g. ifconfig.enp2s1 or
+ ifconfig.eth0) or your network interface will not be initialized during
+ the boot process.</para></note>
<para>The following command creates a sample file for the
<emphasis>eth0</emphasis> device with a static IP address:</para>
@@ -136,8 +149,8 @@ cat &gt; ifconfig.eth0 &lt;&lt; "EOF"
<literal>ONBOOT=yes
IFACE=eth0
SERVICE=ipv4-static
-IP=192.168.1.1
-GATEWAY=192.168.1.2
+IP=192.168.1.2
+GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255</literal>
EOF</userinput></screen>
@@ -146,7 +159,7 @@ EOF</userinput></screen>
the proper setup.</para>
<para>If the <envar>ONBOOT</envar> variable is set to <quote>yes</quote> the
- network script will bring up the Network Interface Card (NIC) during
+ System V network script will bring up the Network Interface Card (NIC) during
booting of the system. If set to anything but <quote>yes</quote> the NIC
will be ignored by the network script and not be automatically brought up.
The interface can be manually started or stopped with the
@@ -181,6 +194,34 @@ EOF</userinput></screen>
</sect2>
+ <sect2 id="systemd-net-enable">
+ <title>Configuring the Network Interface Card at boot (systemd)</title>
+
+ <para>Enabling of the network interface card configuration
+ in systemd is done per interface. To enable network interface card
+ configuration at boot, run:</para>
+
+<screen><userinput>systemctl enable ifupdown@eth0</userinput></screen>
+
+ <para>To disable a previously enabled network interface
+ card configuration at boot, run:</para>
+
+<screen><userinput>systemctl disable ifupdown@eth0</userinput></screen>
+
+ <para>To manually start the network interface card configuration,
+ run:</para>
+
+<screen><userinput>systemctl start ifupdown@eth0</userinput></screen>
+
+ <para>Replace eth0 with the correct network interface card
+ name as described on the beginning of this page.</para>
+
+ <note><para>The network card can also be started or stopped
+ with the traditional <command>ifup &lt;device&gt;</command> or
+ <command>ifdown &lt;device&gt;</command> commands.</para></note>
+
+ </sect2>
+
<sect2 id="resolv.conf">
<title>Creating the /etc/resolv.conf File</title>
diff --git a/chapter07/setclock.xml b/chapter07/setclock.xml
index 1daa445ef..729c447f6 100644
--- a/chapter07/setclock.xml
+++ b/chapter07/setclock.xml
@@ -5,46 +5,53 @@
%general-entities;
]>
-<sect1 id="ch-scripts-setclock">
- <?dbhtml filename="setclock.html"?>
+<sect1 id="ch-scripts-clock">
+ <?dbhtml filename="clock.html"?>
- <title>Configuring the setclock Script</title>
+ <title>Configuring the System Clock</title>
- <indexterm zone="ch-scripts-setclock">
- <primary sortas="d-setclock">setclock</primary>
- <secondary>configuring</secondary></indexterm>
+ <para>Procedures for setting the system clock differ between systemd and
+ System V, however the separate procedures do not conflict so both
+ procedures should be accomplished to allow switching between systems.</para>
+
+ <sect2 id="ch-scripts-setclock">
+ <title>System V Clock Configuration</title>
+
+ <indexterm zone="ch-scripts-setclock">
+ <primary sortas="d-setclock">setclock</primary>
+ <secondary>configuring</secondary></indexterm>
+
+ <para>The <command>setclock</command> script reads the time from the hardware
+ clock, also known as the BIOS or the Complementary Metal Oxide Semiconductor
+ (CMOS) clock. If the hardware clock is set to UTC, this script will convert the
+ hardware clock's time to the local time using the
+ <filename>/etc/localtime</filename> file (which tells the
+ <command>hwclock</command> program which timezone the user is in). There is no
+ way to detect whether or not the hardware clock is set to UTC, so this
+ needs to be configured manually.</para>
+
+ <para>The <command>setclock</command> is run via
+ <application>udev</application> when the kernel detects the hardware
+ capability upon boot. It can also be run manually with the stop parameter to
+ store the system time to the CMOS clock.</para>
+
+ <para>If you cannot remember whether or not the hardware clock is set to UTC,
+ find out by running the <userinput>hwclock --localtime --show</userinput>
+ command. This will display what the current time is according to the hardware
+ clock. If this time matches whatever your watch says, then the hardware clock is
+ set to local time. If the output from <command>hwclock</command> is not local
+ time, chances are it is set to UTC time. Verify this by adding or subtracting
+ the proper amount of hours for the timezone to the time shown by
+ <command>hwclock</command>. For example, if you are currently in the MST
+ timezone, which is also known as GMT -0700, add seven hours to the local
+ time.</para>
+
+ <para>Change the value of the <envar>UTC</envar> variable below
+ to a value of <parameter>0</parameter> (zero) if the hardware clock
+ is <emphasis>not</emphasis> set to UTC time.</para>
- <para>The <command>setclock</command> script reads the time from the hardware
- clock, also known as the BIOS or the Complementary Metal Oxide Semiconductor
- (CMOS) clock. If the hardware clock is set to UTC, this script will convert the
- hardware clock's time to the local time using the
- <filename>/etc/localtime</filename> file (which tells the
- <command>hwclock</command> program which timezone the user is in). There is no
- way to detect whether or not the hardware clock is set to UTC, so this
- needs to be configured manually.</para>
-
- <para>The <command>setclock</command> is run via
- <application>udev</application> when the kernel detects the hardware
- capability upon boot. It can also be run manually with the stop parameter to
- store the system time to the CMOS clock.</para>
-
- <para>If you cannot remember whether or not the hardware clock is set to UTC,
- find out by running the <userinput>hwclock --localtime --show</userinput>
- command. This will display what the current time is according to the hardware
- clock. If this time matches whatever your watch says, then the hardware clock is
- set to local time. If the output from <command>hwclock</command> is not local
- time, chances are it is set to UTC time. Verify this by adding or subtracting
- the proper amount of hours for the timezone to the time shown by
- <command>hwclock</command>. For example, if you are currently in the MST
- timezone, which is also known as GMT -0700, add seven hours to the local
- time.</para>
-
- <para>Change the value of the <envar>UTC</envar> variable below
- to a value of <parameter>0</parameter> (zero) if the hardware clock
- is <emphasis>not</emphasis> set to UTC time.</para>
-
- <para>Create a new file <filename>/etc/sysconfig/clock</filename> by running
- the following:</para>
+ <para>Create a new file <filename>/etc/sysconfig/clock</filename> by running
+ the following:</para>
<screen><userinput>cat &gt; /etc/sysconfig/clock &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/clock
@@ -58,11 +65,68 @@ CLOCKPARAMS=
# End /etc/sysconfig/clock</literal>
EOF</userinput></screen>
- <para>A good hint explaining how to deal with time on LFS is available
- at <ulink url="&hints-root;time.txt"/>. It explains issues such as
- time zones, UTC, and the <envar>TZ</envar> environment variable.</para>
+ <para>A good hint explaining how to deal with time on LFS is available
+ at <ulink url="&hints-root;time.txt"/>. It explains issues such as
+ time zones, UTC, and the <envar>TZ</envar> environment variable.</para>
+
+ <note><para>The CLOCKPARAMS and UTC paramaters may be alternatively set
+ in the <filename>/etc/sysconfig/rc.site</filename> file.</para></note>
+
+ </sect2>
+
+ <sect2 id="ch-scripts-systemd-clock">
+ <title>Systemd Clock Configuration</title>
+
+ <indexterm zone="ch-scripts-clock">
+ <primary sortas="d-clock">clock</primary>
+ <secondary>configuring</secondary></indexterm>
+
+ <para>This section discusses how to configure the
+ <command>systemd-timedated</command> system service, which configures
+ system clock and timezone.</para>
+
+ <para><command>systemd-timedated</command> reads
+ <filename>/etc/adjtime</filename>, and depending on the contents of the file,
+ it sets the clock to either UTC or local time. Create the
+ <filename>/etc/adjtime</filename> file with the following contents <emphasis>if your
+ hardware clock is set to local time</emphasis>:</para>
+
+<screen role="nodump"><userinput>cat &gt; /etc/adjtime &lt;&lt; "EOF"
+<literal>0.0 0 0.0
+0
+LOCAL</literal>
+EOF</userinput></screen>
+
+ <para>If <filename>/etc/adjtime</filename> isn't present at first boot,
+ <command>systemd-timedated</command> will assume that hardware clock is
+ set to UTC and create the file using that setting.</para>
+
+ <para>You can also use the <command>timedatectl</command> utility to tell
+ <command>systemd-timedated</command> if your hardware clock is set to
+ UTC or local time:</para>
+
+<screen role="nodump"><userinput>timedatectl set-local-rtc 1</userinput></screen>
+
+ <para><command>timedatectl</command> can also be used to change system time and
+ time zone.</para>
+
+ <para>To change your current system time, issue:</para>
+
+<screen role="nodump"><userinput>timedatectl set-time YYYY:MM:DD HH:MM:SS</userinput></screen>
+
+ <para>Hardware clock will also be updated accordingly.</para>
+
+ <para>To change your current time zone, issue:</para>
+
+<screen role="nodump"><userinput>timedatectl set-timezone TIMEZONE</userinput></screen>
+
+ <para>You can get list of available time zones by running:</para>
+
+<screen role="nodump"><userinput>timedatectl list-timezones</userinput></screen>
+
+ <note><para>Please note that <command>timedatectl</command> command can
+ be used only on a system booted with Systemd.</para></note>
- <note><para>The CLOCKPARAMS and UTC paramaters may be alternatively set
- in the <filename>/etc/sysconfig/rc.site</filename> file.</para></note>
+ </sect2>
</sect1>
diff --git a/chapter07/site.xml b/chapter07/site.xml
index 374b94f32..1dd6df9a1 100644
--- a/chapter07/site.xml
+++ b/chapter07/site.xml
@@ -16,8 +16,8 @@
</indexterm>
<para>The optional <filename>/etc/sysconfig/rc.site</filename> file contains
- settings that are automatically set for each boot script. It can alternatively
- set the values specified in the <filename>hostname</filename>,
+ settings that are automatically set for each SystemV boot script. It can
+ alternatively set the values specified in the <filename>hostname</filename>,
<filename>console</filename>, and <filename>clock</filename> files in the
<filename class='directory'>/etc/sysconfig/</filename> directory. If the
associated variables are present in both these separate files and
diff --git a/chapter07/sysklogd.xml b/chapter07/sysklogd.xml
index c2d784b67..a3747478a 100644
--- a/chapter07/sysklogd.xml
+++ b/chapter07/sysklogd.xml
@@ -16,8 +16,8 @@
</indexterm>
<para>The <filename>sysklogd</filename> script invokes the
- <command>syslogd</command> program with the <parameter>-m 0</parameter>
- option. This option turns off the periodic timestamp mark that
+ <command>syslogd</command> program as a part of System V initialization. The
+ <parameter>-m 0</parameter> option turns off the periodic timestamp mark that
<command>syslogd</command> writes to the log files every 20 minutes by
default. If you want to turn on this periodic timestamp mark, edit
<filename>/etc/sysconfig/rc.site</filename> and define the variable
diff --git a/chapter07/usage.xml b/chapter07/usage.xml
index 10d48b6e8..3250cd328 100644
--- a/chapter07/usage.xml
+++ b/chapter07/usage.xml
@@ -8,7 +8,7 @@
<sect1 id="ch-scripts-usage">
<?dbhtml filename="usage.html"?>
- <title>How Do These Bootscripts Work?</title>
+ <title>How Do the System V Bootscripts Work?</title>
<indexterm zone="ch-scripts-usage">
<primary sortas="a-Bootscripts">Bootscripts</primary>
diff --git a/chapter08/kernel.xml b/chapter08/kernel.xml
index 71a26b1d8..7d9747aec 100644
--- a/chapter08/kernel.xml
+++ b/chapter08/kernel.xml
@@ -70,12 +70,27 @@
configuration to a good state that takes your current system architecture
into account.</para>
- <para>Due to recent changes in <application>udev</application>, be sure to
- select:</para>
-
- <screen role="nodump">Device Drivers ---&gt;
+ <para>Be sure to enable or disable following features:</para>
+
+ <screen role="nodump">General setup ---&gt;
+ [*] open by fhandle syscalls
+ [*] Control Group support
+Processor type and features ---&gt;
+ [*] Enable seccomp to safely compute untrusted bytecode
+Networking support ---&gt;
+ Networking options ---&gt;
+ &lt;*&gt; The IPv6 protocol
+Device Drivers ---&gt;
Generic Driver Options ---&gt;
- Maintain a devtmpfs filesystem to mount at /dev</screen></note>
+ () path to uevent helper
+ [*] Maintain a devtmpfs filesystem to mount at /dev
+ [ ] Fallback user-helper invocation for firmware loading
+File systems ---&gt;
+ [*] Inotify support for userspace
+ &lt;*&gt; Kernel automounter version 4 support (also supports v3)
+ Pseudo filesystems ---&gt;
+ [*] Tmpfs POSIX Access Control Lists
+ [*] Tmpfs extended attributes</screen></note>
<screen role="nodump"><userinput>make LANG=<replaceable>&lt;host_LANG_value&gt;</replaceable> LC_ALL= menuconfig</userinput></screen>
diff --git a/general.ent b/general.ent
index 6bcb1d001..124767608 100644
--- a/general.ent
+++ b/general.ent
@@ -1,7 +1,7 @@
-<!ENTITY version "SVN-20140331">
-<!ENTITY releasedate "March 31, 2014">
+<!ENTITY version "SVN-20140403">
+<!ENTITY releasedate "April 3, 2014">
<!ENTITY copyrightdate "1999-2014"><!-- jhalfs needs a literal dash, not &ndash; -->
-<!ENTITY milestone "7.6">
+<!ENTITY milestone "8.0">
<!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->
<!ENTITY lfs-root "http://www.linuxfromscratch.org/">
diff --git a/packages.ent b/packages.ent
index 8c4d0531c..04b7ef235 100644
--- a/packages.ent
+++ b/packages.ent
@@ -128,6 +128,14 @@
<!ENTITY diffutils-ch6-du "25 MB">
<!ENTITY diffutils-ch6-sbu "0.5 SBU">
+<!ENTITY dbus-version "1.8.0">
+<!ENTITY dbus-size "1,820 KB">
+<!ENTITY dbus-url "http://dbus.freedesktop.org/releases/dbus/dbus-&dbus-version;.tar.gz">
+<!ENTITY dbus-md5 "059fbe84e39fc99c67a14f15b1f39dff">
+<!ENTITY dbus-home "http://www.freedesktop.org/wiki/Software/dbus">
+<!ENTITY dbus-ch6-du "35 MB">
+<!ENTITY dbus-ch6-sbu "less than 0.4 SBU">
+
<!-- NOTE: When updating e2fsprogs, remember to check the list
of acceptable features that can be shown by debugfs in
chapter02/creatingfilesystem.xml -->
@@ -362,7 +370,7 @@
<!ENTITY less-ch6-du "3.6 MB">
<!ENTITY less-ch6-sbu "less than 0.1 SBU">
-<!ENTITY lfs-bootscripts-version "20140321"> <!-- Scripts depend on this format -->
+<!ENTITY lfs-bootscripts-version "20140331"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB"> <!-- Updated in Makefile -->
<!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.bz2">
<!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM"> <!-- Updated in Makefile -->
@@ -598,13 +606,13 @@
<!ENTITY texinfo-ch6-du "101 MB">
<!ENTITY texinfo-ch6-sbu "0.6 SBU">
-<!ENTITY systemd-version "208">
-<!ENTITY systemd-size "2,328 KB">
+<!ENTITY systemd-version "211">
+<!ENTITY systemd-size "2,604 KB">
<!ENTITY systemd-url "http://www.freedesktop.org/software/systemd/systemd-&systemd-version;.tar.xz">
-<!ENTITY systemd-md5 "df64550d92afbffb4f67a434193ee165">
+<!ENTITY systemd-md5 "0a70c382b6089526f98073b4ee85ef75">
<!ENTITY systemd-home "http://www.freedesktop.org/wiki/Software/systemd/">
-<!ENTITY systemd-ch6-du "29 MB">
-<!ENTITY systemd-ch6-sbu "0.1 SBU">
+<!ENTITY systemd-ch6-du "410 MB">
+<!ENTITY systemd-ch6-sbu "4.5 SBU">
<!ENTITY tzdata-version "2014a">
<!ENTITY tzdata-size "215 KB">
@@ -614,11 +622,11 @@
<!ENTITY tzdata-ch6-du "6.4 MB">
<!ENTITY tzdata-ch6-sbu "less than 0.1 SBU">
-<!ENTITY udev-lfs "udev-lfs-&systemd-version;-3">
-<!ENTITY udev-lfs-size "29 KB">
-<!ENTITY udev-lfs-url "&anduin-other;&udev-lfs;.tar.bz2">
-<!ENTITY udev-lfs-md5 "c0231ff619e567a9b11f912d8a7a404a">
-<!ENTITY udev-lfs-home " ">
+<!ENTITY udev-lfs-version "udev-lfs-20140302">
+<!ENTITY udev-lfs-size "11 KB">
+<!ENTITY udev-lfs-url "&anduin-other;&udev-lfs-version;.tar.bz2">
+<!ENTITY udev-lfs-md5 "81fd93e43e2c232932f38223ba2b740c">
+<!ENTITY udev-lfs-home " ">
<!ENTITY util-linux-version "2.24.1">
<!ENTITY util-linux-size "3,461 KB">
diff --git a/patches.ent b/patches.ent
index 7ea1e19e9..8565a4ab4 100644
--- a/patches.ent
+++ b/patches.ent
@@ -26,6 +26,10 @@
<!ENTITY sysvinit-consolidated-patch-md5 "0b7b5ea568a878fdcc4057b2bf36e5cb">
<!ENTITY sysvinit-consolidated-patch-size "3.9 KB">
+<!ENTITY systemd-compat-patch "systemd-&systemd-version;-compat-1.patch">
+<!ENTITY systemd-compat-patch-md5 "0edc54bbe9391cfb072bc737312e6b7a">
+<!ENTITY systemd-compat-patch-size "12 KB">
+
<!ENTITY tar-manpage-patch "tar-&tar-version;-manpage-1.patch">
<!ENTITY tar-manpage-patch-md5 "321f85ec32733b1a9399e788714a5156">
<!ENTITY tar-manpage-patch-size "7.8 KB">
diff --git a/udev-lfs/ChangeLog b/udev-lfs/ChangeLog
index 0604f6f30..9a854b302 100644
--- a/udev-lfs/ChangeLog
+++ b/udev-lfs/ChangeLog
@@ -1,3 +1,6 @@
+2014-03-02 <bdubbs@linuxfromscratch.org>
+ * Makefile.lfs: Remove build procedures leaving only LFS rules
+
2014-02-16 <bdubbs@linuxfromscratch.org>
* Makefile.lfs: Adjust warning flags. Adjust linking rules to
allow build with util-linux in LFS's /tools directory.
diff --git a/udev-lfs/Makefile.lfs b/udev-lfs/Makefile.lfs
index 12ca65559..0bbc66584 100644
--- a/udev-lfs/Makefile.lfs
+++ b/udev-lfs/Makefile.lfs
@@ -1,11 +1,10 @@
-# Custom systemd Makefile that builds/installs udev only for LFS
-# Bruce Dubbs 2012-07-11
+# Custom systemd Makefile that installs udev rules for LFS
+# Bruce Dubbs 2014-04-02
# vim: tabstop=3
+VERSION=20140302
SHELL=/bin/bash
-SYSTEMD_VERSION=208
-VERSION=$(SYSTEMD_VERSION)-3
ifeq ($(V),)
VB = @
@@ -13,340 +12,19 @@ else
VB =
endif
-WARN = -Wall -W -Wextra -Wno-inline -Wvla -Wundef -Wformat=2 \
--Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs \
--Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self \
--Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes \
--Wstrict-prototypes -Wredundant-decls -Wmissing-declarations \
--Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align \
--Wstrict-aliasing=2 -Wwrite-strings -Wno-overlength-strings \
--Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-result \
--Werror=overflow -Wp,-D_FORTIFY_SOURCE=2 -Wno-long-long -Wno-vla
+all:
+ @echo "Use the install target"
-OPTIONS = -O2 -pipe -ffast-math -fno-common -fdiagnostics-show-option \
--fno-strict-aliasing -ffunction-sections -fdata-sections -fPIC -std=gnu99
+install:
+ @mkdir -pv $(DESTDIR)/lib/udev/rules.d \
+ $(DESTDIR)/etc/udev/rules.d \
+ $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs
-OPTIONS2 := $(OPTIONS) -fvisibility=hidden
-
-LDFLAGS1 = -pthread -lrt -Wl,--as-needed -Wl,--gc-sections -Wl,--no-undefined
-LDFLAGS2 := $(LDFLAGS1) -L /tools/lib -lblkid -lkmod
-
-DEF = -include cfg.h \
- -DSYSCONFDIR=\"/etc\" \
- -DFIRMWARE_PATH="\"/lib/firmware/updates/\", \"/lib/firmware/\"" \
- -DHWDB_BIN=\"/etc/udev/hwdb.bin\" \
- -DROOTPREFIX= \
- -DUDEVLIBEXECDIR=\"/lib/udev\" \
- -D_LARGEFILE_SOURCE \
- -D_FILE_OFFSET_BITS=64 \
- -DHAVE_FIRMWARE
-
-INCLUDE = -I src/libudev -I src/shared -I src -I src/login -I src/systemd \
- -I src/core -I udev-lfs-$(VERSION)
-
-LIBUDEV_SRCS = libudev-device-private.c \
- libudev-device.c \
- libudev-enumerate.c \
- libudev-hwdb.c \
- libudev-list.c \
- libudev-monitor.c \
- libudev-queue-private.c \
- libudev-queue.c \
- libudev-util.c \
- libudev.c \
- test-device-nodes.c \
- device-nodes.c
-
-LIBUDEV_OBJS := $(addprefix build/, $(LIBUDEV_SRCS:.c=.o))
-
-LIBUDEV = libudev
-LIBUDEV_MAJOR = .1
-LIBUDEV_MINOR = .3
-LIBUDEV_PATCH = .2
-LIBUDEV_SONAME := $(LIBUDEV).so
-LIBUDEV_LINK_NAME := $(LIBUDEV_SONAME)$(LIBUDEV_MAJOR)
-LIBUDEV_REAL_NAME := $(LIBUDEV_LINK_NAME)$(LIBUDEV_MINOR)$(LIBUDEV_PATCH)
-
-COMMON_LIB = udev-local.a
-
-COMMON_SRCS = log.c \
- label.c \
- mkdir.c \
- cgroup-util.c \
- strv.c \
- strbuf.c \
- path-util.c \
- conf-files.c \
- hashmap.c \
- set.c \
- exit-status.c \
- util.c \
- mkdir-label.c \
- dev-setup.c \
- sd-login.c \
- sd-daemon.c \
- time-util.c \
- fileio.c \
- strxcpyx.c \
- env-util.c \
- utf8.c
-
-COMMON_OBJS := $(addprefix build/, $(COMMON_SRCS:.c=.o))
-
-UDEVD_SRCS = udev-ctrl.c \
- udev-rules.c \
- udev-watch.c \
- udev-event.c \
- udev-node.c \
- udev-builtin.c \
- udev-builtin-blkid.c \
- udev-builtin-firmware.c \
- udev-builtin-keyboard.c \
- udev-builtin-path_id.c \
- udev-builtin-hwdb.c \
- udev-builtin-kmod.c \
- udev-builtin-uaccess.c \
- udev-builtin-net_id.c \
- udev-builtin-usb_id.c \
- udev-builtin-input_id.c \
- udev-builtin-btrfs.c
-
-UDEVD_OBJS := $(addprefix build/, $(UDEVD_SRCS:.c=.o))
-
-UDEV_ADMIN_SRCS = udevadm.c \
- udevadm-test.c \
- udevadm-monitor.c \
- udevadm-settle.c \
- udevadm-hwdb.c \
- udevadm-info.c \
- udevadm-test-builtin.c \
- udevadm-trigger.c \
- udevadm-control.c \
- udev-rules.c \
- udev-ctrl.c \
- udev-event.c \
- udev-node.c \
- udev-watch.c \
- udev-builtin.c \
- udev-builtin-blkid.c \
- udev-builtin-keyboard.c \
- udev-builtin-firmware.c \
- udev-builtin-path_id.c \
- udev-builtin-hwdb.c \
- udev-builtin-kmod.c \
- udev-builtin-uaccess.c \
- udev-builtin-net_id.c \
- udev-builtin-usb_id.c \
- udev-builtin-input_id.c \
- udev-builtin-btrfs.c
-
-UDEV_ADMIN_OBJS := $(addprefix build/, $(UDEV_ADMIN_SRCS:.c=.o))
-
-LFS_RULES = 55-lfs.rules
-
-VPATH = src/login src/udev src/udev/accelerometer \
- src/udev/scsi_id src/udev/cdrom_id src/udev/v4l_id \
- src/udev/mtd_probe src/udev/collect src/udev/ata_id \
- src/libudev src/test src/libsystemd-daemon
-
-SED_PROCESS = \
- sed -e 's|@VERSION@|$(SYSTEMD_VERSION)|g' \
- -e 's|@prefix@|/usr|g' \
- -e 's|@udevlibexecdir@|/lib/udev|g' \
- -e 's|@libdir@|/usr/lib|g' \
- -e 's|@includedir@|/usr/include|g' \
- < $< > $@
-
-SECURE = $(shell if objdump -T /lib/libc.so.6 | grep -q " secure_getenv"; \
-then echo yes; fi)
-
-ifeq "$(SECURE)" "yes"
- SECURE_GETENV = SECURE_GETENV
-else
- SECURE_GETENV = __SECURE_GETENV
-endif
-
-udev: common \
- build/$(COMMON_LIB) \
- build/$(LIBUDEV_REAL_NAME) \
- build/udevd \
- build/udevadm \
- build/accelerometer \
- build/ata_id \
- build/cdrom_id \
- build/scsi_id \
- build/v4l_id \
- build/mtd_probe \
- build/collect \
- build/udev.pc \
- build/libudev.pc
-
-cfg.h: udev-lfs-$(VERSION)/cfg.h
- sed -e 's/LFS-VERSION/$(SYSTEMD_VERSION)/' \
- -e 's/SECURE_GETENV/$(SECURE_GETENV)/' \
- udev-lfs-$(VERSION)/cfg.h > ./cfg.h
- @mkdir -p build
-
-common: cfg.h
- @touch common
-
-build/%o: %c common
- @echo CC $<
- $(VB)gcc -c $(WARN) $(OPTIONS2) $(INCLUDE) $(DEF) -o $@ $<
-
-# Sources from src/libudev use -fvisibility=hidden
-build/%o: src/libudev/%c common
- @echo CC $<
- $(VB)gcc -c $(WARN) $(OPTIONS) $(INCLUDE) $(DEF) -o $@ $<
-
-# Sources from src/shared use -fvisibility=hidden
-build/%o: src/shared/%c common
- @echo CC $<
- $(VB)gcc -c $(WARN) $(OPTIONS) $(INCLUDE) $(DEF) -o $@ $<
-
-# Build the dynamic library
-build/$(LIBUDEV_REAL_NAME): $(LIBUDEV_OBJS) build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc -shared -fPIC -DPIC \
- $(LIBUDEV_OBJS) \
- build/$(COMMON_LIB) \
- -Wl,--no-whole-archive -ldl -lrt -O2 \
- -Wl,--as-needed \
- -Wl,--gc-sections \
- -Wl,--no-undefined \
- -Wl,-soname,$(LIBUDEV_LINK_NAME) \
- -o build/$(LIBUDEV_REAL_NAME)
-
- ln -sfn $(LIBUDEV_REAL_NAME) build/$(LIBUDEV_LINK_NAME)
- ln -sfn $(LIBUDEV_REAL_NAME) build/$(LIBUDEV_SONAME)
-
- #-Wl,--whole-archive \
- #-Wl,--version-script=./src/libudev/libudev.sym \
-
-# Build the static library for internal use
-build/$(COMMON_LIB): $(COMMON_OBJS) $(LIBUDEV_OBJS) $(UDEVD_OBJS)
- @echo AR $@
- $(VB)ar rcs build/$(COMMON_LIB) $(COMMON_OBJS) $(LIBUDEV_OBJS)
-
-build/udevd: build/$(COMMON_LIB) build/udevd.o
- @echo LINK $@
- $(VB)gcc build/udevd.o $(UDEVD_OBJS) -o $@ $(LDFLAGS2) \
- build/udev-local.a build/$(COMMON_LIB)
- $(VB)strip --strip-unneeded $@
-
-build/udevadm: $(UDEV_ADMIN_OBJS) build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc $(UDEV_ADMIN_OBJS) -o $@ $(LDFLAGS2) build/$(COMMON_LIB)
- $(VB)strip --strip-unneeded $@
-
-build/accelerometer: build/accelerometer.o build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc build/accelerometer.o -o $@ \
- build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS1) -lm
- $(VB)strip --strip-unneeded $@
-
-build/scsi_id: build/scsi_id.o build/scsi_serial.o build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc build/scsi_id.o build/scsi_serial.o -o $@ \
- build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS1)
- $(VB)strip --strip-unneeded $@
-
-build/ata_id: build/ata_id.o build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc build/ata_id.o -o $@ build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS1)
- $(VB)strip --strip-unneeded $@
-
-build/cdrom_id: build/cdrom_id.o build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc build/cdrom_id.o -o $@ build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS1)
- $(VB)strip --strip-unneeded $@
-
-build/v4l_id: build/v4l_id.o build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc build/v4l_id.o -o $@ build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS1)
- $(VB)strip --strip-unneeded $@
-
-build/mtd_probe: build/mtd_probe.o build/probe_smartmedia.o build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc build/mtd_probe.o build/probe_smartmedia.o -o $@ \
- build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS1)
- $(VB)strip --strip-unneeded $@
-
-build/collect: build/collect.o build/$(COMMON_LIB)
- @echo LINK $@
- $(VB)gcc build/collect.o -o $@ build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS1)
- $(VB)strip --strip-unneeded $@
-
-build/%pc: %pc.in common
- @echo GEN $@
- @$(SED_PROCESS)
-
-install: udev
- @mkdir -pv $(DESTDIR)/lib/udev/devices/pts $(DESTDIR)/lib/udev/rules.d \
- $(DESTDIR){,/usr}/lib/firmware $(DESTDIR)/sbin \
- $(DESTDIR)/usr/lib/pkgconfig $(DESTDIR)/etc/udev/rules.d \
- $(DESTDIR)/usr/share/man/man{7,8} $(DESTDIR)/usr/include \
- $(DESTDIR)/usr/share/doc/udev-$(SYSTEMD_VERSION)/lfs \
- $(DESTDIR)/usr/share/gtk-doc/html/libudev
-
- # Copy executables
- @cp -v build/udevadm $(DESTDIR)/sbin
- @cp -v build/{udevd,accelerometer,ata_id,cdrom_id,collect,mtd_probe,scsi_id,v4l_id} \
- $(DESTDIR)/lib/udev
- @cp -v udev-lfs-$(VERSION)/write* $(DESTDIR)/lib/udev
- @cp -v udev-lfs-$(VERSION)/*functions $(DESTDIR)/lib/udev
-
- # Copy and set up library and associated files
- @cp -v build/{lib,}udev.pc $(DESTDIR)/usr/lib/pkgconfig
- @cp -v build/$(LIBUDEV_REAL_NAME) $(DESTDIR)/lib
-
- ln -svfn ../../lib/$(LIBUDEV_REAL_NAME) $(DESTDIR)/usr/lib/$(LIBUDEV_SONAME)
- ln -svfn $(LIBUDEV_REAL_NAME) $(DESTDIR)/lib/$(LIBUDEV_LINK_NAME)
-
- # Copy the libudev header
- @cp -v src/libudev/libudev.h $(DESTDIR)/usr/include
-
- # Create null device and copy rules
- @cp -v rules/* $(DESTDIR)/lib/udev/rules.d
- @rm -v $(DESTDIR)/lib/udev/rules.d/99*
- @cp -v udev-lfs-$(VERSION)/*.rules $(DESTDIR)/etc/udev/rules.d
-
- # Set up hardware DB
- @mkdir -pv $(DESTDIR)/lib/udev/hwdb.d
- @cp hwdb/* $(DESTDIR)/lib/udev/hwdb.d
- # @build/udevadm hwdb --update
-
- # Copy documentation
- @cp -v udev-lfs-$(VERSION)/udev.7 $(DESTDIR)/usr/share/man/man7
- @cp -v udev-lfs-$(VERSION)/udevadm.8 $(DESTDIR)/usr/share/man/man8
- @cp -v udev-lfs-$(VERSION)/udevd.8 $(DESTDIR)/usr/share/man/man8
- @cp -v udev-lfs-$(VERSION)/README $(DESTDIR)/usr/share/doc/udev-$(SYSTEMD_VERSION)/lfs
- @cp -v udev-lfs-$(VERSION)/*.txt $(DESTDIR)/usr/share/doc/udev-$(SYSTEMD_VERSION)/lfs
- @cp -v docs/libudev/*.{txt,types} $(DESTDIR)/usr/share/doc/udev-$(SYSTEMD_VERSION)
- @cp -v docs/libudev/html/* $(DESTDIR)/usr/share/gtk-doc/html/libudev
-
- # Copy misc
+ # Copy rules
+ @cp -v udev-lfs-$(VERSION)/*.rules $(DESTDIR)/etc/udev/rules.d
+ @cp -v udev-lfs-$(VERSION)/*_rules $(DESTDIR)/lib/udev
@cp -v udev-lfs-$(VERSION)/init-net-rules.sh $(DESTDIR)/lib/udev
-include udev-lfs-$(VERSION)/makefile-incl.gudev
-include udev-lfs-$(VERSION)/makefile-incl.gir
-include udev-lfs-$(VERSION)/makefile-incl.keymap
-
-all : udev keymap gudev gir-data
-install-all: install install-keymap install-gudev install-gir-data
-
-clean:
- rm -rf build
- rm -f cfg.h
- rm -f common
- rm -f src/gudev/gudevmarshal.h
- rm -f src/gudev/gudevmarshal.c
- rm -f src/gudev/gudevenumtypes.h
- rm -f src/gudev/gudevenumtypes.c
- rm -f src/udev/keymap/keys.txt
- rm -f src/udev/keymap/keys-from-name.gperf
- rm -f src/udev/keymap/keys-from-name.h
- rm -f src/udev/keymap/keys-to-name.h
-
-.PHONY: clean
-
+ # Copy documentation
+ @cp -v udev-lfs-$(VERSION)/README $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs
+ @cp -v udev-lfs-$(VERSION)/*.txt $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs
diff --git a/udev-lfs/README b/udev-lfs/README
index d9e39c159..61d0e86bc 100644
--- a/udev-lfs/README
+++ b/udev-lfs/README
@@ -1,7 +1,7 @@
The udev-lfs set of files is a customization of systemd.
In 2012, udev was merged with systemd and a build methodology
-incompatible with LFS. These files extract the udev
-code from systemd for LFS.
+incompatible with LFS. These files add cusom udev rules
+for LFS.
These files are distributed in the form of a tar file available
from the LFS file mirrors. The tarball is created with:
@@ -10,13 +10,7 @@ mkdir /tmp/udev-lfs-$VERSION
cp -av * /tmp/udev-lfs-$VERSION
tar -jcf /tmp/udev-lfs-$VERSION.tar.bz2 -C /tmp udev-lfs-$VERSION
-Makefile.lfs - The main LFS Makefile. Builds and installs
- udev from systemd sources.
-
-makefile-incl.keymap - BLFS makefile for keymap and supporting files
-makefile-incl.gudev - BLFS makefile for libgudev
-makefile-incl.gir - BLFS makefile for GObject files
-
+Makefile.lfs - The LFS Makefile. Installs udev rules for LFS.
contrib - Useful rules from debian
contrib/debian
@@ -31,8 +25,6 @@ rule_generator.functions
55-lfs.txt - Documentation for LFS installed rules
-cfg.h - Basic info needed for udev compilation
-
ChangeLog - Log of changes to 55-lfs-rules
init-net-rules.sh - A script for establishing persistent network
diff --git a/udev-lfs/cfg.h b/udev-lfs/cfg.h
deleted file mode 100644
index cec845d6c..000000000
--- a/udev-lfs/cfg.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Custom udev (from systemd) configuration header file for LFS */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define if kmod is available */
-#define HAVE_KMOD 1
-
-/* Define if blkid is available */
-#define HAVE_BLKID 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `secure_getenv' function. */
-/* For glibc before 2.17, this should be HAVE___SECURE_GETENV */
-#define HAVE_SECURE_GETENV 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the declaration of `name_to_handle_at', and to 0 if
- * you don't. */
-#define HAVE_DECL_NAME_TO_HANDLE_AT 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define if XZ is available */
-#define HAVE_XZ 1
-
-/* Name of package */
-#define PACKAGE "udev"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Enable GNU extensions on systems that have them. */
-# define _GNU_SOURCE 1
-
-/* Version number of package */
-#define VERSION "LFS-VERSION"
-
-#define HAVE_DECL_PIVOT_ROOT 0
-#define HAVE_DECL_GETTID 0
-#define HAVE_NAME_TO_HANDLE_AT 1
diff --git a/udev-lfs/keyboard-keys-from-name.h b/udev-lfs/keyboard-keys-from-name.h
deleted file mode 100644
index e47cb2a95..000000000
--- a/udev-lfs/keyboard-keys-from-name.h
+++ /dev/null
@@ -1,923 +0,0 @@
-/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -L ANSI-C -t -N keyboard_lookup_key -H hash_key_name -p -C */
-/* Computed positions: -k'1-4,$' */
-
-#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
- && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
- && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
- && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
- && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
- && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
- && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
- && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
- && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
- && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
- && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
- && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
- && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
- && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
- && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
- && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
- && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
- && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
- && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
- && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
- && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
- && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
- && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
-/* The character set is not based on ISO-646. */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
-#endif
-
-struct key { const char* name; unsigned short id; };
-
-#define TOTAL_KEYWORDS 392
-#define MIN_WORD_LENGTH 1
-#define MAX_WORD_LENGTH 16
-#define MIN_HASH_VALUE 1
-#define MAX_HASH_VALUE 1503
-/* maximum key range = 1503, duplicates = 0 */
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static unsigned int
-hash_key_name (register const char *str, register unsigned int len)
-{
- static const unsigned short asso_values[] =
- {
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 130, 165,
- 295, 285, 310, 370, 335, 220, 215, 75, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 75, 1504, 10, 330, 25,
- 80, 5, 395, 260, 345, 185, 50, 300, 110, 30,
- 145, 35, 15, 45, 65, 20, 0, 210, 455, 375,
- 55, 95, 85, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504
- };
- register int hval = len;
-
- switch (hval)
- {
- default:
- hval += asso_values[(unsigned char)str[3]];
- /*FALLTHROUGH*/
- case 3:
- hval += asso_values[(unsigned char)str[2]];
- /*FALLTHROUGH*/
- case 2:
- hval += asso_values[(unsigned char)str[1]];
- /*FALLTHROUGH*/
- case 1:
- hval += asso_values[(unsigned char)str[0]];
- break;
- }
- return hval + asso_values[(unsigned char)str[len - 1]];
-}
-
-#ifdef __GNUC__
-__inline
-#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
-const struct key *
-keyboard_lookup_key (register const char *str, register unsigned int len)
-{
- static const struct key wordlist[] =
- {
- {(char*)0},
- {"t", KEY_T},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"e", KEY_E},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"a", KEY_A},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"p", KEY_P},
- {(char*)0},
- {"sat", KEY_SAT},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"tape", KEY_TAPE},
- {(char*)0},
- {"s", KEY_S},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"c", KEY_C},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"paste", KEY_PASTE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"m", KEY_M},
- {(char*)0}, {(char*)0},
- {"text", KEY_TEXT},
- {(char*)0}, {(char*)0},
- {"pc", KEY_PC},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"o", KEY_O},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"esc", KEY_ESC},
- {(char*)0},
- {"space", KEY_SPACE},
- {"camera_left", KEY_CAMERA_LEFT},
- {"camera_right", KEY_CAMERA_RIGHT},
- {(char*)0},
- {"camera_zoomout", KEY_CAMERA_ZOOMOUT},
- {(char*)0},
- {"camera", KEY_CAMERA},
- {(char*)0}, {(char*)0},
- {"stop", KEY_STOP},
- {(char*)0},
- {"q", KEY_Q},
- {(char*)0}, {(char*)0},
- {"camera_up", KEY_CAMERA_UP},
- {"apostrophe", KEY_APOSTROPHE},
- {(char*)0},
- {"restart", KEY_RESTART},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"j", KEY_J},
- {"camera_focus", KEY_CAMERA_FOCUS},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"x", KEY_X},
- {(char*)0},
- {"database", KEY_DATABASE},
- {(char*)0}, {(char*)0},
- {"spreadsheet", KEY_SPREADSHEET},
- {"compose", KEY_COMPOSE},
- {"dot", KEY_DOT},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"r", KEY_R},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"comma", KEY_COMMA},
- {(char*)0},
- {"ro", KEY_RO},
- {"alterase", KEY_ALTERASE},
- {"memo", KEY_MEMO},
- {"sport", KEY_SPORT},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"last", KEY_LAST},
- {(char*)0},
- {"select", KEY_SELECT},
- {(char*)0}, {(char*)0},
- {"messenger", KEY_MESSENGER},
- {(char*)0},
- {"9", KEY_9},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"props", KEY_PROPS},
- {"stopcd", KEY_STOPCD},
- {(char*)0}, {(char*)0},
- {"mode", KEY_MODE},
- {"sleep", KEY_SLEEP},
- {"d", KEY_D},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"scrollup", KEY_SCROLLUP},
- {(char*)0},
- {"macro", KEY_MACRO},
- {"z", KEY_Z},
- {"ejectcd", KEY_EJECTCD},
- {(char*)0}, {(char*)0},
- {"scale", KEY_SCALE},
- {(char*)0},
- {"ejectclosecd", KEY_EJECTCLOSECD},
- {"computer", KEY_COMPUTER},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"reserved", KEY_RESERVED},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"cd", KEY_CD},
- {(char*)0}, {(char*)0},
- {"msdos", KEY_MSDOS},
- {"y", KEY_Y},
- {"zoomout", KEY_ZOOMOUT},
- {(char*)0},
- {"zoomreset", KEY_ZOOMRESET},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"calc", KEY_CALC},
- {"close", KEY_CLOSE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"next", KEY_NEXT},
- {(char*)0},
- {"delete", KEY_DELETE},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"deletefile", KEY_DELETEFILE},
- {"record", KEY_RECORD},
- {(char*)0}, {(char*)0},
- {"zoom", KEY_ZOOM},
- {"clear", KEY_CLEAR},
- {"l", KEY_L},
- {(char*)0},
- {"calendar", KEY_CALENDAR},
- {"redo", KEY_REDO},
- {"enter", KEY_ENTER},
- {"camera_down", KEY_CAMERA_DOWN},
- {(char*)0},
- {"camera_zoomin", KEY_CAMERA_ZOOMIN},
- {"time", KEY_TIME},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"red", KEY_RED},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"cut", KEY_CUT},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"up", KEY_UP},
- {(char*)0},
- {"playpause", KEY_PLAYPAUSE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"exit", KEY_EXIT},
- {"sysrq", KEY_SYSRQ},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"mute", KEY_MUTE},
- {"setup", KEY_SETUP},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"0", KEY_0},
- {"presentation", KEY_PRESENTATION},
- {"sendfile", KEY_SENDFILE},
- {(char*)0},
- {"pause", KEY_PAUSE},
- {"screen", KEY_SCREEN},
- {(char*)0}, {(char*)0},
- {"copy", KEY_COPY},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"edit", KEY_EDIT},
- {(char*)0}, {(char*)0},
- {"closecd", KEY_CLOSECD},
- {"iso", KEY_ISO},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"micmute", KEY_MICMUTE},
- {"del_line", KEY_DEL_LINE},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"cyclewindows", KEY_CYCLEWINDOWS},
- {(char*)0}, {(char*)0},
- {"touchpad_toggle", KEY_TOUCHPAD_TOGGLE},
- {"n", KEY_N},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"reply", KEY_REPLY},
- {(char*)0},
- {"del_eos", KEY_DEL_EOS},
- {(char*)0}, {(char*)0},
- {"scrolldown", KEY_SCROLLDOWN},
- {"player", KEY_PLAYER},
- {(char*)0}, {(char*)0},
- {"teen", KEY_TEEN},
- {"title", KEY_TITLE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"pageup", KEY_PAGEUP},
- {"media_repeat", KEY_MEDIA_REPEAT},
- {"end", KEY_END},
- {(char*)0},
- {"media", KEY_MEDIA},
- {"playcd", KEY_PLAYCD},
- {(char*)0},
- {"displaytoggle", KEY_DISPLAYTOGGLE},
- {"list", KEY_LIST},
- {(char*)0},
- {"cancel", KEY_CANCEL},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"play", KEY_PLAY},
- {"games", KEY_GAMES},
- {"1", KEY_1},
- {(char*)0},
- {"aux", KEY_AUX},
- {"send", KEY_SEND},
- {(char*)0},
- {"zoomin", KEY_ZOOMIN},
- {(char*)0},
- {"katakana", KEY_KATAKANA},
- {(char*)0}, {(char*)0},
- {"editor", KEY_EDITOR},
- {"pausecd", KEY_PAUSECD},
- {(char*)0}, {(char*)0},
- {"email", KEY_EMAIL},
- {"katakanahiragana", KEY_KATAKANAHIRAGANA},
- {(char*)0}, {(char*)0},
- {"open", KEY_OPEN},
- {(char*)0}, {(char*)0},
- {"suspend", KEY_SUSPEND},
- {(char*)0},
- {"euro", KEY_EURO},
- {(char*)0}, {(char*)0},
- {"connect", KEY_CONNECT},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"insert", KEY_INSERT},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"goto", KEY_GOTO},
- {(char*)0},
- {"i", KEY_I},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"hp", KEY_HP},
- {"capslock", KEY_CAPSLOCK},
- {"documents", KEY_DOCUMENTS},
- {"radio", KEY_RADIO},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"chat", KEY_CHAT},
- {"equal", KEY_EQUAL},
- {"option", KEY_OPTION},
- {"del_eol", KEY_DEL_EOL},
- {(char*)0},
- {"bassboost", KEY_BASSBOOST},
- {(char*)0}, {(char*)0},
- {"kpcomma", KEY_KPCOMMA},
- {"yen", KEY_YEN},
- {"semicolon", KEY_SEMICOLON},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"kpjpcomma", KEY_KPJPCOMMA},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"dollar", KEY_DOLLAR},
- {(char*)0},
- {"mhp", KEY_MHP},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"program", KEY_PROGRAM},
- {(char*)0}, {(char*)0},
- {"print", KEY_PRINT},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"u", KEY_U},
- {(char*)0}, {(char*)0},
- {"home", KEY_HOME},
- {"screenlock", KEY_SCREENLOCK},
- {"touchpad_on", KEY_TOUCHPAD_ON},
- {"context_menu", KEY_CONTEXT_MENU},
- {"homepage", KEY_HOMEPAGE},
- {"graphicseditor", KEY_GRAPHICSEDITOR},
- {"tuner", KEY_TUNER},
- {"8", KEY_8},
- {(char*)0},
- {"question", KEY_QUESTION},
- {"shop", KEY_SHOP},
- {"kpdot", KEY_KPDOT},
- {(char*)0}, {(char*)0},
- {"ins_line", KEY_INS_LINE},
- {"directory", KEY_DIRECTORY},
- {(char*)0},
- {"7", KEY_7},
- {"battery", KEY_BATTERY},
- {"pagedown", KEY_PAGEDOWN},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"mail", KEY_MAIL},
- {(char*)0},
- {"search", KEY_SEARCH},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"scrolllock", KEY_SCROLLLOCK},
- {(char*)0},
- {"archive", KEY_ARCHIVE},
- {(char*)0}, {(char*)0},
- {"spellcheck", KEY_SPELLCHECK},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"kpplus", KEY_KPPLUS},
- {"numeric_star", KEY_NUMERIC_STAR},
- {"kp9", KEY_KP9},
- {(char*)0}, {(char*)0},
- {"kpplusminus", KEY_KPPLUSMINUS},
- {(char*)0},
- {"nextsong", KEY_NEXTSONG},
- {"numeric_9", KEY_NUMERIC_9},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"kpequal", KEY_KPEQUAL},
- {"numeric_pound", KEY_NUMERIC_POUND},
- {(char*)0},
- {"green", KEY_GREEN},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"direction", KEY_DIRECTION},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"help", KEY_HELP},
- {"sound", KEY_SOUND},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"save", KEY_SAVE},
- {"power", KEY_POWER},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"undo", KEY_UNDO},
- {"slash", KEY_SLASH},
- {"images", KEY_IMAGES},
- {(char*)0}, {(char*)0},
- {"left", KEY_LEFT},
- {(char*)0},
- {"fastforward", KEY_FASTFORWARD},
- {"leftalt", KEY_LEFTALT},
- {(char*)0},
- {"leftshift", KEY_LEFTSHIFT},
- {(char*)0},
- {"g", KEY_G},
- {(char*)0}, {(char*)0},
- {"leftbrace", KEY_LEFTBRACE},
- {"audio", KEY_AUDIO},
- {(char*)0}, {(char*)0},
- {"leftmeta", KEY_LEFTMETA},
- {"numeric_0", KEY_NUMERIC_0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"linefeed", KEY_LINEFEED},
- {"move", KEY_MOVE},
- {"angle", KEY_ANGLE},
- {(char*)0},
- {"kpenter", KEY_KPENTER},
- {"language", KEY_LANGUAGE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"epg", KEY_EPG},
- {"dashboard", KEY_DASHBOARD},
- {"prog1", KEY_PROG1},
- {"addressbook", KEY_ADDRESSBOOK},
- {"f9", KEY_F9},
- {(char*)0},
- {"channelup", KEY_CHANNELUP},
- {"phone", KEY_PHONE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"kpminus", KEY_KPMINUS},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"numeric_1", KEY_NUMERIC_1},
- {"hanja", KEY_HANJA},
- {(char*)0}, {(char*)0},
- {"previous", KEY_PREVIOUS},
- {"news", KEY_NEWS},
- {(char*)0},
- {"3", KEY_3},
- {(char*)0},
- {"subtitle", KEY_SUBTITLE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"kp0", KEY_KP0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"kpleftparen", KEY_KPLEFTPAREN},
- {(char*)0}, {(char*)0},
- {"xfer", KEY_XFER},
- {(char*)0},
- {"2", KEY_2},
- {"frameforward", KEY_FRAMEFORWARD},
- {(char*)0}, {(char*)0},
- {"minus", KEY_MINUS},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"switchvideomode", KEY_SWITCHVIDEOMODE},
- {"k", KEY_K},
- {(char*)0},
- {"pvr", KEY_PVR},
- {"menu", KEY_MENU},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"vcr", KEY_VCR},
- {"numeric_8", KEY_NUMERIC_8},
- {"again", KEY_AGAIN},
- {(char*)0}, {(char*)0},
- {"mp3", KEY_MP3},
- {"numeric_7", KEY_NUMERIC_7},
- {(char*)0},
- {"4", KEY_4},
- {(char*)0},
- {"hiragana", KEY_HIRAGANA},
- {"sat2", KEY_SAT2},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"leftctrl", KEY_LEFTCTRL},
- {"fn_e", KEY_FN_E},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"wordprocessor", KEY_WORDPROCESSOR},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"ok", KEY_OK},
- {(char*)0}, {(char*)0},
- {"wps_button", KEY_WPS_BUTTON},
- {(char*)0},
- {"channel", KEY_CHANNEL},
- {(char*)0}, {(char*)0},
- {"front", KEY_FRONT},
- {(char*)0}, {(char*)0},
- {"kp1", KEY_KP1},
- {(char*)0}, {(char*)0},
- {"fn_esc", KEY_FN_ESC},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"kpasterisk", KEY_KPASTERISK},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"fn_s", KEY_FN_S},
- {"wimax", KEY_WIMAX},
- {"b", KEY_B},
- {(char*)0},
- {"brl_dot9", KEY_BRL_DOT9},
- {"blue", KEY_BLUE},
- {"prog3", KEY_PROG3},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"first", KEY_FIRST},
- {"6", KEY_6},
- {"ab", KEY_AB},
- {"tab", KEY_TAB},
- {"twen", KEY_TWEN},
- {"prog2", KEY_PROG2},
- {(char*)0},
- {"touchpad_off", KEY_TOUCHPAD_OFF},
- {(char*)0},
- {"backspace", KEY_BACKSPACE},
- {(char*)0},
- {"channeldown", KEY_CHANNELDOWN},
- {(char*)0}, {(char*)0},
- {"numeric_3", KEY_NUMERIC_3},
- {(char*)0}, {(char*)0},
- {"fn", KEY_FN},
- {(char*)0}, {(char*)0},
- {"prog4", KEY_PROG4},
- {"h", KEY_H},
- {"10channelsup", KEY_10CHANNELSUP},
- {(char*)0},
- {"numeric_2", KEY_NUMERIC_2},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"dvd", KEY_DVD},
- {(char*)0}, {(char*)0},
- {"yellow", KEY_YELLOW},
- {(char*)0}, {(char*)0},
- {"file", KEY_FILE},
- {(char*)0},
- {"display_off", KEY_DISPLAY_OFF},
- {(char*)0}, {(char*)0},
- {"numeric_4", KEY_NUMERIC_4},
- {(char*)0},
- {"wakeup", KEY_WAKEUP},
- {(char*)0},
- {"f19", KEY_F19},
- {(char*)0},
- {"break", KEY_BREAK},
- {"rewind", KEY_REWIND},
- {(char*)0}, {(char*)0},
- {"brl_dot10", KEY_BRL_DOT10},
- {(char*)0}, {(char*)0},
- {"kprightparen", KEY_KPRIGHTPAREN},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"f1", KEY_F1},
- {(char*)0},
- {"bookmarks", KEY_BOOKMARKS},
- {(char*)0},
- {"power2", KEY_POWER2},
- {(char*)0}, {(char*)0},
- {"numeric_6", KEY_NUMERIC_6},
- {"video_next", KEY_VIDEO_NEXT},
- {"digits", KEY_DIGITS},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"videophone", KEY_VIDEOPHONE},
- {"5", KEY_5},
- {(char*)0},
- {"muhenkan", KEY_MUHENKAN},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"finance", KEY_FINANCE},
- {"kp8", KEY_KP8},
- {(char*)0}, {(char*)0},
- {"w", KEY_W},
- {(char*)0},
- {"brl_dot1", KEY_BRL_DOT1},
- {(char*)0}, {(char*)0},
- {"vendor", KEY_VENDOR},
- {(char*)0},
- {"kp7", KEY_KP7},
- {"zenkakuhankaku", KEY_ZENKAKUHANKAKU},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"video", KEY_VIDEO},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"numeric_5", KEY_NUMERIC_5},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"fn_d", KEY_FN_D},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"down", KEY_DOWN},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"wlan", KEY_WLAN},
- {(char*)0},
- {"f", KEY_F},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"kpslash", KEY_KPSLASH},
- {(char*)0},
- {"info", KEY_INFO},
- {"grave", KEY_GRAVE},
- {(char*)0},
- {"numlock", KEY_NUMLOCK},
- {"brl_dot8", KEY_BRL_DOT8},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"brl_dot7", KEY_BRL_DOT7},
- {"frameback", KEY_FRAMEBACK},
- {(char*)0}, {(char*)0},
- {"previoussong", KEY_PREVIOUSSONG},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"keyboard", KEY_KEYBOARD},
- {"voicemail", KEY_VOICEMAIL},
- {"102nd", KEY_102ND},
- {(char*)0}, {(char*)0},
- {"f10", KEY_F10},
- {"10channelsdown", KEY_10CHANNELSDOWN},
- {(char*)0}, {(char*)0},
- {"f8", KEY_F8},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"volumeup", KEY_VOLUMEUP},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"f7", KEY_F7},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"logoff", KEY_LOGOFF},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"right", KEY_RIGHT},
- {"brightness_cycle", KEY_BRIGHTNESS_CYCLE},
- {(char*)0},
- {"rightalt", KEY_RIGHTALT},
- {(char*)0},
- {"rightshift", KEY_RIGHTSHIFT},
- {"config", KEY_CONFIG},
- {"brightnessup", KEY_BRIGHTNESSUP},
- {(char*)0}, {(char*)0},
- {"rightbrace", KEY_RIGHTBRACE},
- {(char*)0}, {(char*)0},
- {"brl_dot3", KEY_BRL_DOT3},
- {"rightmeta", KEY_RIGHTMETA},
- {(char*)0}, {(char*)0},
- {"hangeul", KEY_HANGEUL},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"refresh", KEY_REFRESH},
- {"brl_dot2", KEY_BRL_DOT2},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"kp3", KEY_KP3},
- {"find", KEY_FIND},
- {"brightness_zero", KEY_BRIGHTNESS_ZERO},
- {(char*)0}, {(char*)0},
- {"f11", KEY_F11},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"brl_dot4", KEY_BRL_DOT4},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"new", KEY_NEW},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"kp2", KEY_KP2},
- {(char*)0}, {(char*)0},
- {"v", KEY_V},
- {"tv", KEY_TV},
- {(char*)0},
- {"kbdillumtoggle", KEY_KBDILLUMTOGGLE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"slow", KEY_SLOW},
- {"kbdillumup", KEY_KBDILLUMUP},
- {(char*)0}, {(char*)0},
- {"brl_dot6", KEY_BRL_DOT6},
- {"favorites", KEY_FAVORITES},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"kp4", KEY_KP4},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"henkan", KEY_HENKAN},
- {(char*)0}, {(char*)0},
- {"fn_1", KEY_FN_1},
- {(char*)0}, {(char*)0},
- {"unknown", KEY_UNKNOWN},
- {"f20", KEY_F20},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"forward", KEY_FORWARD},
- {"brl_dot5", KEY_BRL_DOT5},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"volumedown", KEY_VOLUMEDOWN},
- {(char*)0},
- {"f3", KEY_F3},
- {(char*)0},
- {"back", KEY_BACK},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"rightctrl", KEY_RIGHTCTRL},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"shuffle", KEY_SHUFFLE},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"f2", KEY_F2},
- {"kp6", KEY_KP6},
- {(char*)0}, {(char*)0},
- {"forwardmail", KEY_FORWARDMAIL},
- {(char*)0},
- {"f18", KEY_F18},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"brightnessdown", KEY_BRIGHTNESSDOWN},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"f17", KEY_F17},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"bluetooth", KEY_BLUETOOTH},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"f4", KEY_F4},
- {(char*)0},
- {"backslash", KEY_BACKSLASH},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"f21", KEY_F21},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"tv2", KEY_TV2},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"kbdillumdown", KEY_KBDILLUMDOWN},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"kp5", KEY_KP5},
- {(char*)0}, {(char*)0},
- {"rfkill", KEY_RFKILL},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"f6", KEY_F6},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"fn_f9", KEY_FN_F9},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"f13", KEY_F13},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"f5", KEY_F5},
- {(char*)0},
- {"vcr2", KEY_VCR2},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"fn_f10", KEY_FN_F10},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"f12", KEY_F12},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"fn_f1", KEY_FN_F1},
- {"fn_f11", KEY_FN_F11},
- {(char*)0},
- {"f14", KEY_F14},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"video_prev", KEY_VIDEO_PREV},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"fn_2", KEY_FN_2},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"fn_f8", KEY_FN_F8},
- {(char*)0}, {(char*)0},
- {"f16", KEY_F16},
- {(char*)0},
- {"fn_f7", KEY_FN_F7},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"uwb", KEY_UWB},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"f23", KEY_F23},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"fn_b", KEY_FN_B},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"f22", KEY_F22},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"fn_f3", KEY_FN_F3},
- {(char*)0}, {(char*)0},
- {"f15", KEY_F15},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"fn_f2", KEY_FN_F2},
- {"fn_f12", KEY_FN_F12},
- {(char*)0},
- {"f24", KEY_F24},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"fn_f4", KEY_FN_F4},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {"fn_f6", KEY_FN_F6},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0},
- {"fn_f5", KEY_FN_F5},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0},
- {"fn_f", KEY_FN_F},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
- {(char*)0},
- {"www", KEY_WWW}
- };
-
- if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
- {
- register int key = hash_key_name (str, len);
-
- if (key <= MAX_HASH_VALUE && key >= 0)
- {
- register const char *s = wordlist[key].name;
-
- if (s && *str == *s && !strcmp (str + 1, s + 1))
- return &wordlist[key];
- }
- }
- return 0;
-}
diff --git a/udev-lfs/keyboard-keys-to-name.h b/udev-lfs/keyboard-keys-to-name.h
deleted file mode 100644
index f5a982ca2..000000000
--- a/udev-lfs/keyboard-keys-to-name.h
+++ /dev/null
@@ -1,394 +0,0 @@
-const char* const key_names[KEY_CNT] = {
-[KEY_HIRAGANA] = "KEY_HIRAGANA",
-[KEY_TOUCHPAD_TOGGLE] = "KEY_TOUCHPAD_TOGGLE",
-[KEY_DELETEFILE] = "KEY_DELETEFILE",
-[KEY_TITLE] = "KEY_TITLE",
-[KEY_GRAVE] = "KEY_GRAVE",
-[KEY_RESERVED] = "KEY_RESERVED",
-[KEY_DVD] = "KEY_DVD",
-[KEY_FN_F10] = "KEY_FN_F10",
-[KEY_FN_F11] = "KEY_FN_F11",
-[KEY_FN_F12] = "KEY_FN_F12",
-[KEY_FRAMEBACK] = "KEY_FRAMEBACK",
-[KEY_BRL_DOT10] = "KEY_BRL_DOT10",
-[KEY_SLEEP] = "KEY_SLEEP",
-[KEY_VCR2] = "KEY_VCR2",
-[KEY_ZENKAKUHANKAKU] = "KEY_ZENKAKUHANKAKU",
-[KEY_IMAGES] = "KEY_IMAGES",
-[KEY_LEFTMETA] = "KEY_LEFTMETA",
-[KEY_OPEN] = "KEY_OPEN",
-[KEY_BATTERY] = "KEY_BATTERY",
-[KEY_MACRO] = "KEY_MACRO",
-[KEY_MODE] = "KEY_MODE",
-[KEY_GREEN] = "KEY_GREEN",
-[KEY_SAT] = "KEY_SAT",
-[KEY_RIGHTMETA] = "KEY_RIGHTMETA",
-[KEY_COMPUTER] = "KEY_COMPUTER",
-[KEY_SELECT] = "KEY_SELECT",
-[KEY_PAGEDOWN] = "KEY_PAGEDOWN",
-[KEY_CAPSLOCK] = "KEY_CAPSLOCK",
-[KEY_REDO] = "KEY_REDO",
-[KEY_KBDILLUMDOWN] = "KEY_KBDILLUMDOWN",
-[KEY_SCROLLDOWN] = "KEY_SCROLLDOWN",
-[KEY_SWITCHVIDEOMODE] = "KEY_SWITCHVIDEOMODE",
-[KEY_LIST] = "KEY_LIST",
-[KEY_WORDPROCESSOR] = "KEY_WORDPROCESSOR",
-[KEY_CAMERA] = "KEY_CAMERA",
-[KEY_MOVE] = "KEY_MOVE",
-[KEY_CONNECT] = "KEY_CONNECT",
-[KEY_PROG1] = "KEY_PROG1",
-[KEY_PROG2] = "KEY_PROG2",
-[KEY_PROG3] = "KEY_PROG3",
-[KEY_PROG4] = "KEY_PROG4",
-[KEY_TWEN] = "KEY_TWEN",
-[KEY_INS_LINE] = "KEY_INS_LINE",
-[KEY_GAMES] = "KEY_GAMES",
-[KEY_KATAKANA] = "KEY_KATAKANA",
-[KEY_PROPS] = "KEY_PROPS",
-[KEY_CALENDAR] = "KEY_CALENDAR",
-[KEY_RESTART] = "KEY_RESTART",
-[KEY_KBDILLUMTOGGLE] = "KEY_KBDILLUMTOGGLE",
-[KEY_CLEAR] = "KEY_CLEAR",
-[KEY_CAMERA_FOCUS] = "KEY_CAMERA_FOCUS",
-[KEY_NUMLOCK] = "KEY_NUMLOCK",
-[KEY_ZOOMIN] = "KEY_ZOOMIN",
-[KEY_EDIT] = "KEY_EDIT",
-[KEY_AUX] = "KEY_AUX",
-[KEY_EQUAL] = "KEY_EQUAL",
-[KEY_DIRECTORY] = "KEY_DIRECTORY",
-[KEY_CAMERA_RIGHT] = "KEY_CAMERA_RIGHT",
-[KEY_ADDRESSBOOK] = "KEY_ADDRESSBOOK",
-[KEY_PASTE] = "KEY_PASTE",
-[KEY_CHANNELUP] = "KEY_CHANNELUP",
-[KEY_SHUFFLE] = "KEY_SHUFFLE",
-[KEY_MAIL] = "KEY_MAIL",
-[KEY_LEFTALT] = "KEY_LEFTALT",
-[KEY_WWW] = "KEY_WWW",
-[KEY_KPEQUAL] = "KEY_KPEQUAL",
-[KEY_HENKAN] = "KEY_HENKAN",
-[KEY_DISPLAYTOGGLE] = "KEY_DISPLAYTOGGLE",
-[KEY_RIGHTALT] = "KEY_RIGHTALT",
-[KEY_SPORT] = "KEY_SPORT",
-[KEY_POWER] = "KEY_POWER",
-[KEY_APOSTROPHE] = "KEY_APOSTROPHE",
-[KEY_SCREEN] = "KEY_SCREEN",
-[KEY_RADIO] = "KEY_RADIO",
-[KEY_DATABASE] = "KEY_DATABASE",
-[KEY_VOLUMEDOWN] = "KEY_VOLUMEDOWN",
-[KEY_SENDFILE] = "KEY_SENDFILE",
-[KEY_RIGHTSHIFT] = "KEY_RIGHTSHIFT",
-[KEY_ARCHIVE] = "KEY_ARCHIVE",
-[KEY_NUMERIC_POUND] = "KEY_NUMERIC_POUND",
-[KEY_EPG] = "KEY_EPG",
-[KEY_NEXTSONG] = "KEY_NEXTSONG",
-[KEY_FIRST] = "KEY_FIRST",
-[KEY_SPREADSHEET] = "KEY_SPREADSHEET",
-[KEY_KPSLASH] = "KEY_KPSLASH",
-[KEY_BACK] = "KEY_BACK",
-[KEY_KP3] = "KEY_KP3",
-[KEY_KP5] = "KEY_KP5",
-[KEY_PAGEUP] = "KEY_PAGEUP",
-[KEY_ESC] = "KEY_ESC",
-[KEY_DELETE] = "KEY_DELETE",
-[KEY_HOME] = "KEY_HOME",
-[KEY_WPS_BUTTON] = "KEY_WPS_BUTTON",
-[KEY_AUDIO] = "KEY_AUDIO",
-[KEY_NEW] = "KEY_NEW",
-[KEY_SAT2] = "KEY_SAT2",
-[KEY_LINEFEED] = "KEY_LINEFEED",
-[KEY_PVR] = "KEY_PVR",
-[KEY_KPPLUSMINUS] = "KEY_KPPLUSMINUS",
-[KEY_SHOP] = "KEY_SHOP",
-[KEY_LEFTSHIFT] = "KEY_LEFTSHIFT",
-[KEY_BASSBOOST] = "KEY_BASSBOOST",
-[KEY_BRIGHTNESS_CYCLE] = "KEY_BRIGHTNESS_CYCLE",
-[KEY_TAB] = "KEY_TAB",
-[KEY_UNKNOWN] = "KEY_UNKNOWN",
-[KEY_KPLEFTPAREN] = "KEY_KPLEFTPAREN",
-[KEY_EDITOR] = "KEY_EDITOR",
-[KEY_EMAIL] = "KEY_EMAIL",
-[KEY_102ND] = "KEY_102ND",
-[KEY_MENU] = "KEY_MENU",
-[KEY_VOICEMAIL] = "KEY_VOICEMAIL",
-[KEY_SPACE] = "KEY_SPACE",
-[KEY_INFO] = "KEY_INFO",
-[KEY_WAKEUP] = "KEY_WAKEUP",
-[KEY_BLUE] = "KEY_BLUE",
-[KEY_HOMEPAGE] = "KEY_HOMEPAGE",
-[KEY_KPCOMMA] = "KEY_KPCOMMA",
-[KEY_ZOOMRESET] = "KEY_ZOOMRESET",
-[KEY_FAVORITES] = "KEY_FAVORITES",
-[KEY_TOUCHPAD_ON] = "KEY_TOUCHPAD_ON",
-[KEY_FN_1] = "KEY_FN_1",
-[KEY_FN_2] = "KEY_FN_2",
-[KEY_ISO] = "KEY_ISO",
-[KEY_FN_D] = "KEY_FN_D",
-[KEY_FN_E] = "KEY_FN_E",
-[KEY_FN_F] = "KEY_FN_F",
-[KEY_FN_S] = "KEY_FN_S",
-[KEY_HANJA] = "KEY_HANJA",
-[KEY_BREAK] = "KEY_BREAK",
-[KEY_FORWARD] = "KEY_FORWARD",
-[KEY_TV2] = "KEY_TV2",
-[KEY_PAUSECD] = "KEY_PAUSECD",
-[KEY_RIGHT] = "KEY_RIGHT",
-[KEY_F21] = "KEY_F21",
-[KEY_SLOW] = "KEY_SLOW",
-[KEY_F10] = "KEY_F10",
-[KEY_F11] = "KEY_F11",
-[KEY_F12] = "KEY_F12",
-[KEY_F13] = "KEY_F13",
-[KEY_F14] = "KEY_F14",
-[KEY_F15] = "KEY_F15",
-[KEY_F16] = "KEY_F16",
-[KEY_F17] = "KEY_F17",
-[KEY_F18] = "KEY_F18",
-[KEY_F19] = "KEY_F19",
-[KEY_SEMICOLON] = "KEY_SEMICOLON",
-[KEY_F20] = "KEY_F20",
-[KEY_F22] = "KEY_F22",
-[KEY_F23] = "KEY_F23",
-[KEY_F24] = "KEY_F24",
-[KEY_SAVE] = "KEY_SAVE",
-[KEY_1] = "KEY_1",
-[KEY_2] = "KEY_2",
-[KEY_3] = "KEY_3",
-[KEY_4] = "KEY_4",
-[KEY_5] = "KEY_5",
-[KEY_6] = "KEY_6",
-[KEY_7] = "KEY_7",
-[KEY_8] = "KEY_8",
-[KEY_9] = "KEY_9",
-[KEY_B] = "KEY_B",
-[KEY_C] = "KEY_C",
-[KEY_D] = "KEY_D",
-[KEY_E] = "KEY_E",
-[KEY_F] = "KEY_F",
-[KEY_G] = "KEY_G",
-[KEY_H] = "KEY_H",
-[KEY_I] = "KEY_I",
-[KEY_K] = "KEY_K",
-[KEY_L] = "KEY_L",
-[KEY_M] = "KEY_M",
-[KEY_O] = "KEY_O",
-[KEY_P] = "KEY_P",
-[KEY_R] = "KEY_R",
-[KEY_S] = "KEY_S",
-[KEY_T] = "KEY_T",
-[KEY_U] = "KEY_U",
-[KEY_W] = "KEY_W",
-[KEY_X] = "KEY_X",
-[KEY_Z] = "KEY_Z",
-[KEY_MHP] = "KEY_MHP",
-[KEY_F5] = "KEY_F5",
-[KEY_RECORD] = "KEY_RECORD",
-[KEY_F7] = "KEY_F7",
-[KEY_CHANNEL] = "KEY_CHANNEL",
-[KEY_EJECTCD] = "KEY_EJECTCD",
-[KEY_VIDEOPHONE] = "KEY_VIDEOPHONE",
-[KEY_VIDEO] = "KEY_VIDEO",
-[KEY_VENDOR] = "KEY_VENDOR",
-[KEY_MP3] = "KEY_MP3",
-[KEY_0] = "KEY_0",
-[KEY_AGAIN] = "KEY_AGAIN",
-[KEY_DIGITS] = "KEY_DIGITS",
-[KEY_SEND] = "KEY_SEND",
-[KEY_MICMUTE] = "KEY_MICMUTE",
-[KEY_COMMA] = "KEY_COMMA",
-[KEY_GRAPHICSEDITOR] = "KEY_GRAPHICSEDITOR",
-[KEY_A] = "KEY_A",
-[KEY_J] = "KEY_J",
-[KEY_YELLOW] = "KEY_YELLOW",
-[KEY_LEFTBRACE] = "KEY_LEFTBRACE",
-[KEY_N] = "KEY_N",
-[KEY_QUESTION] = "KEY_QUESTION",
-[KEY_LANGUAGE] = "KEY_LANGUAGE",
-[KEY_XFER] = "KEY_XFER",
-[KEY_Q] = "KEY_Q",
-[KEY_LOGOFF] = "KEY_LOGOFF",
-[KEY_SOUND] = "KEY_SOUND",
-[KEY_V] = "KEY_V",
-[KEY_PRINT] = "KEY_PRINT",
-[KEY_Y] = "KEY_Y",
-[KEY_COPY] = "KEY_COPY",
-[KEY_CAMERA_ZOOMOUT] = "KEY_CAMERA_ZOOMOUT",
-[KEY_BRL_DOT1] = "KEY_BRL_DOT1",
-[KEY_BRL_DOT2] = "KEY_BRL_DOT2",
-[KEY_BRL_DOT3] = "KEY_BRL_DOT3",
-[KEY_BRL_DOT4] = "KEY_BRL_DOT4",
-[KEY_BRL_DOT5] = "KEY_BRL_DOT5",
-[KEY_BRL_DOT6] = "KEY_BRL_DOT6",
-[KEY_BRL_DOT7] = "KEY_BRL_DOT7",
-[KEY_BRL_DOT8] = "KEY_BRL_DOT8",
-[KEY_BRL_DOT9] = "KEY_BRL_DOT9",
-[KEY_BRIGHTNESSUP] = "KEY_BRIGHTNESSUP",
-[KEY_FN_F7] = "KEY_FN_F7",
-[KEY_YEN] = "KEY_YEN",
-[KEY_PLAY] = "KEY_PLAY",
-[KEY_REWIND] = "KEY_REWIND",
-[KEY_VIDEO_NEXT] = "KEY_VIDEO_NEXT",
-[KEY_DIRECTION] = "KEY_DIRECTION",
-[KEY_TOUCHPAD_OFF] = "KEY_TOUCHPAD_OFF",
-[KEY_HELP] = "KEY_HELP",
-[KEY_NUMERIC_STAR] = "KEY_NUMERIC_STAR",
-[KEY_BACKSLASH] = "KEY_BACKSLASH",
-[KEY_SYSRQ] = "KEY_SYSRQ",
-[KEY_END] = "KEY_END",
-[KEY_RFKILL] = "KEY_RFKILL",
-[KEY_LEFTCTRL] = "KEY_LEFTCTRL",
-[KEY_KPRIGHTPAREN] = "KEY_KPRIGHTPAREN",
-[KEY_KPASTERISK] = "KEY_KPASTERISK",
-[KEY_REFRESH] = "KEY_REFRESH",
-[KEY_RIGHTCTRL] = "KEY_RIGHTCTRL",
-[KEY_SEARCH] = "KEY_SEARCH",
-[KEY_PHONE] = "KEY_PHONE",
-[KEY_KBDILLUMUP] = "KEY_KBDILLUMUP",
-[KEY_STOP] = "KEY_STOP",
-[KEY_BRIGHTNESS_ZERO] = "KEY_BRIGHTNESS_ZERO",
-[KEY_CHAT] = "KEY_CHAT",
-[KEY_VOLUMEUP] = "KEY_VOLUMEUP",
-[KEY_CLOSECD] = "KEY_CLOSECD",
-[KEY_CAMERA_ZOOMIN] = "KEY_CAMERA_ZOOMIN",
-[KEY_UNDO] = "KEY_UNDO",
-[KEY_TUNER] = "KEY_TUNER",
-[KEY_ANGLE] = "KEY_ANGLE",
-[KEY_PRESENTATION] = "KEY_PRESENTATION",
-[KEY_CAMERA_DOWN] = "KEY_CAMERA_DOWN",
-[KEY_REPLY] = "KEY_REPLY",
-[KEY_CALC] = "KEY_CALC",
-[KEY_EXIT] = "KEY_EXIT",
-[KEY_FN_B] = "KEY_FN_B",
-[KEY_DOLLAR] = "KEY_DOLLAR",
-[KEY_CAMERA_LEFT] = "KEY_CAMERA_LEFT",
-[KEY_UWB] = "KEY_UWB",
-[KEY_PREVIOUSSONG] = "KEY_PREVIOUSSONG",
-[KEY_CONFIG] = "KEY_CONFIG",
-[KEY_SETUP] = "KEY_SETUP",
-[KEY_PLAYCD] = "KEY_PLAYCD",
-[KEY_MEDIA] = "KEY_MEDIA",
-[KEY_COMPOSE] = "KEY_COMPOSE",
-[KEY_PLAYER] = "KEY_PLAYER",
-[KEY_10CHANNELSDOWN] = "KEY_10CHANNELSDOWN",
-[KEY_FRAMEFORWARD] = "KEY_FRAMEFORWARD",
-[KEY_MSDOS] = "KEY_MSDOS",
-[KEY_ZOOM] = "KEY_ZOOM",
-[KEY_NEWS] = "KEY_NEWS",
-[KEY_NUMERIC_0] = "KEY_NUMERIC_0",
-[KEY_NUMERIC_1] = "KEY_NUMERIC_1",
-[KEY_NUMERIC_2] = "KEY_NUMERIC_2",
-[KEY_NUMERIC_3] = "KEY_NUMERIC_3",
-[KEY_NUMERIC_4] = "KEY_NUMERIC_4",
-[KEY_NUMERIC_5] = "KEY_NUMERIC_5",
-[KEY_NUMERIC_7] = "KEY_NUMERIC_7",
-[KEY_NUMERIC_8] = "KEY_NUMERIC_8",
-[KEY_NUMERIC_9] = "KEY_NUMERIC_9",
-[KEY_SCALE] = "KEY_SCALE",
-[KEY_NEXT] = "KEY_NEXT",
-[KEY_CUT] = "KEY_CUT",
-[KEY_PREVIOUS] = "KEY_PREVIOUS",
-[KEY_VIDEO_PREV] = "KEY_VIDEO_PREV",
-[KEY_MUTE] = "KEY_MUTE",
-[KEY_PAUSE] = "KEY_PAUSE",
-[KEY_TAPE] = "KEY_TAPE",
-[KEY_PROGRAM] = "KEY_PROGRAM",
-[KEY_OPTION] = "KEY_OPTION",
-[KEY_ZOOMOUT] = "KEY_ZOOMOUT",
-[KEY_PLAYPAUSE] = "KEY_PLAYPAUSE",
-[KEY_DISPLAY_OFF] = "KEY_DISPLAY_OFF",
-[KEY_RED] = "KEY_RED",
-[KEY_KPPLUS] = "KEY_KPPLUS",
-[KEY_FINANCE] = "KEY_FINANCE",
-[KEY_BRIGHTNESSDOWN] = "KEY_BRIGHTNESSDOWN",
-[KEY_KPDOT] = "KEY_KPDOT",
-[KEY_TEEN] = "KEY_TEEN",
-[KEY_SCREENLOCK] = "KEY_SCREENLOCK",
-[KEY_FN_F1] = "KEY_FN_F1",
-[KEY_FN_F2] = "KEY_FN_F2",
-[KEY_FN_F3] = "KEY_FN_F3",
-[KEY_FN_F4] = "KEY_FN_F4",
-[KEY_FN_F5] = "KEY_FN_F5",
-[KEY_FN_F6] = "KEY_FN_F6",
-[KEY_FN_F8] = "KEY_FN_F8",
-[KEY_FN_F9] = "KEY_FN_F9",
-[KEY_EURO] = "KEY_EURO",
-[KEY_WIMAX] = "KEY_WIMAX",
-[KEY_AB] = "KEY_AB",
-[KEY_SUBTITLE] = "KEY_SUBTITLE",
-[KEY_CD] = "KEY_CD",
-[KEY_CONTEXT_MENU] = "KEY_CONTEXT_MENU",
-[KEY_MESSENGER] = "KEY_MESSENGER",
-[KEY_F1] = "KEY_F1",
-[KEY_F2] = "KEY_F2",
-[KEY_F3] = "KEY_F3",
-[KEY_F4] = "KEY_F4",
-[KEY_F6] = "KEY_F6",
-[KEY_F8] = "KEY_F8",
-[KEY_F9] = "KEY_F9",
-[KEY_FN] = "KEY_FN",
-[KEY_SCROLLUP] = "KEY_SCROLLUP",
-[KEY_ENTER] = "KEY_ENTER",
-[KEY_CANCEL] = "KEY_CANCEL",
-[KEY_SCROLLLOCK] = "KEY_SCROLLLOCK",
-[KEY_RIGHTBRACE] = "KEY_RIGHTBRACE",
-[KEY_VCR] = "KEY_VCR",
-[KEY_HP] = "KEY_HP",
-[KEY_FASTFORWARD] = "KEY_FASTFORWARD",
-[KEY_TEXT] = "KEY_TEXT",
-[KEY_FN_ESC] = "KEY_FN_ESC",
-[KEY_INSERT] = "KEY_INSERT",
-[KEY_CYCLEWINDOWS] = "KEY_CYCLEWINDOWS",
-[KEY_KATAKANAHIRAGANA] = "KEY_KATAKANAHIRAGANA",
-[KEY_FRONT] = "KEY_FRONT",
-[KEY_WLAN] = "KEY_WLAN",
-[KEY_DASHBOARD] = "KEY_DASHBOARD",
-[KEY_BLUETOOTH] = "KEY_BLUETOOTH",
-[KEY_FORWARDMAIL] = "KEY_FORWARDMAIL",
-[KEY_MUHENKAN] = "KEY_MUHENKAN",
-[KEY_OK] = "KEY_OK",
-[KEY_CHANNELDOWN] = "KEY_CHANNELDOWN",
-[KEY_DEL_EOL] = "KEY_DEL_EOL",
-[KEY_DOWN] = "KEY_DOWN",
-[KEY_DEL_EOS] = "KEY_DEL_EOS",
-[KEY_PC] = "KEY_PC",
-[KEY_KPENTER] = "KEY_KPENTER",
-[KEY_LAST] = "KEY_LAST",
-[KEY_KP0] = "KEY_KP0",
-[KEY_KP1] = "KEY_KP1",
-[KEY_KP2] = "KEY_KP2",
-[KEY_KP4] = "KEY_KP4",
-[KEY_KP6] = "KEY_KP6",
-[KEY_KP7] = "KEY_KP7",
-[KEY_KP8] = "KEY_KP8",
-[KEY_KP9] = "KEY_KP9",
-[KEY_BACKSPACE] = "KEY_BACKSPACE",
-[KEY_RO] = "KEY_RO",
-[KEY_ALTERASE] = "KEY_ALTERASE",
-[KEY_POWER2] = "KEY_POWER2",
-[KEY_MINUS] = "KEY_MINUS",
-[KEY_KPJPCOMMA] = "KEY_KPJPCOMMA",
-[KEY_10CHANNELSUP] = "KEY_10CHANNELSUP",
-[KEY_TV] = "KEY_TV",
-[KEY_UP] = "KEY_UP",
-[KEY_SUSPEND] = "KEY_SUSPEND",
-[KEY_FILE] = "KEY_FILE",
-[KEY_TIME] = "KEY_TIME",
-[KEY_FIND] = "KEY_FIND",
-[KEY_STOPCD] = "KEY_STOPCD",
-[KEY_SPELLCHECK] = "KEY_SPELLCHECK",
-[KEY_DOCUMENTS] = "KEY_DOCUMENTS",
-[KEY_LEFT] = "KEY_LEFT",
-[KEY_EJECTCLOSECD] = "KEY_EJECTCLOSECD",
-[KEY_KPMINUS] = "KEY_KPMINUS",
-[KEY_GOTO] = "KEY_GOTO",
-[KEY_MEDIA_REPEAT] = "KEY_MEDIA_REPEAT",
-[KEY_MEMO] = "KEY_MEMO",
-[KEY_SLASH] = "KEY_SLASH",
-[KEY_KEYBOARD] = "KEY_KEYBOARD",
-[KEY_CAMERA_UP] = "KEY_CAMERA_UP",
-[KEY_DEL_LINE] = "KEY_DEL_LINE",
-[KEY_CLOSE] = "KEY_CLOSE",
-[KEY_DOT] = "KEY_DOT",
-[KEY_NUMERIC_6] = "KEY_NUMERIC_6",
-[KEY_HANGEUL] = "KEY_HANGEUL",
-[KEY_BOOKMARKS] = "KEY_BOOKMARKS",
-};
diff --git a/udev-lfs/makefile-incl.gir b/udev-lfs/makefile-incl.gir
deleted file mode 100644
index 0e6259857..000000000
--- a/udev-lfs/makefile-incl.gir
+++ /dev/null
@@ -1,51 +0,0 @@
-# Custom systemd Makefile include that builds/installs gir only for LFS
-
-# vim: tabstop=3
-
-G_IR_INCLUDES = \
- src/gudev/gudev.h \
- src/gudev/gudevtypes.h \
- src/gudev/gudevenums.h \
- src/gudev/gudevenumtypes.h \
- src/gudev/gudevclient.h \
- src/gudev/gudevdevice.h \
- src/gudev/gudevenumerator.h \
- src/gudev/gudevclient.c \
- src/gudev/gudevdevice.c \
- src/gudev/gudevenumerator.c
-
-build/GUdev-1.0.gir: gudev
- @echo G-IR-SCANNER $@
- $(VB)LD_LIBRARY_PATH=./build g-ir-scanner \
- $(G_IR_INCLUDES) \
- -D_GUDEV_COMPILATION \
- -D_GUDEV_WORK_AROUND_DEV_T_BUG \
- -I src -I src/gudev \
- -L./build -lgudev-1.0 -ludev \
- --quiet \
- --warn-all \
- --no-libtool \
- --include=GObject-2.0 \
- --pkg-export=gudev-1.0 \
- --c-include=gudev/gudev.h \
- --library=gudev-1.0 \
- --namespace=GUdev \
- --nsversion=1.0 \
- --output=$@
-
-build/GUdev-1.0.typelib: build/GUdev-1.0.gir
- @echo G-IR-COMPILER $@
- $(VB)LIBRARY_PATH=./build g-ir-compiler $< > $@
-
-gir-data: build/GUdev-1.0.gir build/GUdev-1.0.typelib
-
-install-gir-data: gir-data
- @mkdir -pv $(DESTDIR)/usr/lib/girepository-1.0 \
- $(DESTDIR)/usr/share/gir-1.0
-
- @cp -v build/GUdev-1.0.typelib $(DESTDIR)/usr/lib/girepository-1.0
- @cp -v build/GUdev-1.0.gir $(DESTDIR)/usr/share/gir-1.0
-
-clean-gir-data:
- rm -f build/GUdev-1.0.typelib
- rm -f build/GUdev-1.0.gir
diff --git a/udev-lfs/makefile-incl.gudev b/udev-lfs/makefile-incl.gudev
deleted file mode 100644
index bebabd7df..000000000
--- a/udev-lfs/makefile-incl.gudev
+++ /dev/null
@@ -1,108 +0,0 @@
-# Custom systemd Makefile include that builds/installs gudev only for LFS
-
-# vim: tabstop=3
-
-LIBGUDEV_SRCS = \
- gudevclient.c \
- gudevdevice.c \
- gudevenumerator.c \
- gudevenumtypes.c \
- gudevmarshal.c
-
-LIBGUDEV_INCLUDES = \
- src/gudev/gudev.h \
- src/gudev/gudevenums.h \
- src/gudev/gudevenumtypes.h \
- src/gudev/gudevtypes.h \
- src/gudev/gudevclient.h \
- src/gudev/gudevdevice.h \
- src/gudev/gudevenumerator.h
-
-LIBGUDEV_OBJS := $(addprefix build/, $(LIBGUDEV_SRCS:.c=.o))
-
-LIBGUDEV_CFLAGS = \
- -I src/gudev \
- -D_POSIX_PTHREAD_SEMANTICS \
- -D_REENTRANT \
- -D_GUDEV_COMPILATION \
- -DG_LOG_DOMAIN=\"GUdev\" \
- -fvisibility=default \
- -I /usr/include/glib-2.0 \
- -I /usr/lib/glib-2.0/include
-
-LIBGUDEV_LDFLAGS = \
- -L build -L /usr/lib \
- -ludev -lgobject-2.0 \
- -lglib-2.0
-
-GUDEV_GENERATED = \
- src/gudev/gudevmarshal.h \
- src/gudev/gudevmarshal.c \
- src/gudev/gudevenumtypes.h \
- src/gudev/gudevenumtypes.c
-
-LIBGUDEV = libgudev-1.0
-LIBGUDEV_MAJOR = .0
-LIBGUDEV_MINOR = .1
-LIBGUDEV_PATCH = .3
-LIBGUDEV_SONAME := $(LIBGUDEV).so
-LIBGUDEV_LINK_NAME := $(LIBGUDEV_SONAME)$(LIBGUDEV_MAJOR)
-LIBGUDEV_REAL_NAME := $(LIBGUDEV_LINK_NAME)$(LIBGUDEV_MINOR)$(LIBGUDEV_PATCH)
-
-src/gudev/gudevmarshal.h: src/gudev/gudevmarshal.list
- @echo GEN $@
- $(VB)glib-genmarshal $< --prefix=g_udev_marshal --header > $@
-
-src/gudev/gudevmarshal.c: src/gudev/gudevmarshal.list
- @echo GEN $@
- @echo "#include \"gudevmarshal.h\"" > $@
- $(VB)glib-genmarshal $< --prefix=g_udev_marshal --body >> $@
-
-src/gudev/gudevenumtypes.h: src/gudev/gudevenumtypes.h.template src/gudev/gudevenums.h
- @echo GEN $@
- $(VB)glib-mkenums --template $^ > $@
-
-src/gudev/gudevenumtypes.c: src/gudev/gudevenumtypes.c.template src/gudev/gudevenums.h
- @echo GEN $@
- $(VB)glib-mkenums --template $^ > $@
-
-build/%o: src/gudev/%c $(GUDEV_GENERATED) common
- @echo CC $<
- $(VB)gcc -c $(LIBGUDEV_CFLAGS) $(WARN) $(OPTIONS) $(INCLUDE) $(DEF) -o $@ $<
-
-build/$(LIBGUDEV_REAL_NAME): $(LIBGUDEV_OBJS) build/udev-local.a build/$(LIBUDEV_REAL_NAME)
- @echo LINK $@
- $(VB)gcc -shared -Wl,--export-dynamic -Wl,-soname,$(LIBGUDEV_LINK_NAME) \
- -o build/$(LIBGUDEV_REAL_NAME) $(LIBGUDEV_OBJS) $(LIBGUDEV_LDFLAGS)
-
- ln -sfn $(LIBGUDEV_REAL_NAME) build/$(LIBGUDEV_LINK_NAME)
- ln -sfn $(LIBGUDEV_REAL_NAME) build/$(LIBGUDEV_SONAME)
-
-build/gudev-1.0.pc: src/gudev/gudev-1.0.pc.in common
- @echo GEN $@
- @$(SED_PROCESS)
-
-gudev: build/$(LIBGUDEV_REAL_NAME) build/gudev-1.0.pc
-
-clean-gudev:
- rm -f src/gudev/gudevmarshal.h
- rm -f src/gudev/gudevmarshal.c
- rm -f src/gudev/gudevenumtypes.h
- rm -f src/gudev/gudevenumtypes.c
- rm -f $(LIBGUDEV_OBJS)
- rm -f build/libgudev-1.0.so*
-
-install-gudev: gudev
- @mkdir -pv $(DESTDIR)/usr/include/gudev-1.0/gudev \
- $(DESTDIR)/usr/lib/pkgconfig \
- $(DESTDIR)/usr/share/gtk-doc/html/gudev
-
- @cp -v $(LIBGUDEV_INCLUDES) $(DESTDIR)/usr/include/gudev-1.0/gudev
- @cp -v build/$(LIBGUDEV_REAL_NAME) $(DESTDIR)/usr/lib
-
- @ln -svfn $(LIBGUDEV_REAL_NAME) $(DESTDIR)/usr/lib/$(LIBGUDEV_SONAME)
- @ln -svfn $(LIBGUDEV_REAL_NAME) $(DESTDIR)/usr/lib/$(LIBGUDEV_LINK_NAME)
-
- @cp -v build/gudev-1.0.pc $(DESTDIR)/usr/lib/pkgconfig
- @cp -v docs/gudev/html/* $(DESTDIR)/usr/share/gtk-doc/html/gudev
-
diff --git a/udev-lfs/makefile-incl.keymap b/udev-lfs/makefile-incl.keymap
deleted file mode 100644
index c7d234cb7..000000000
--- a/udev-lfs/makefile-incl.keymap
+++ /dev/null
@@ -1,54 +0,0 @@
-# Custom systemd Makefile include that builds/installs keymap tool only for LFS
-
-# vim: tabstop=3
-
-KEYMAPS = $(shell ls keymaps/* | sort)
-KEYMAPS_FR = $(shell ls keymaps-force-release/* | sort)
-
-KEYMAP_DEPS = common src/udev/keymap/keys-from-name.h src/udev/keymap/keys-to-name.h
-
-src/udev/keymap/keys.txt:
- @echo GEN $@
- $(VB)awk '/^#define.*KEY_[^ ]+[ \t]+[0-9]/ \
- { \
- if ($$2 != "KEY_MAX") { print $$2 } \
- }' \
- /usr/include/linux/input.h | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@
-
-src/udev/keymap/keys-from-name.gperf: src/udev/keymap/keys.txt
- @echo GEN $@
- $(VB)awk 'BEGIN \
- { \
- print "struct key \
- { \
- const char* name; \
- unsigned short id; \
- };"; \
- \
- print "%null-strings"; print "%%"; \
- } \
- { \
- print $$1 ", " $$1 \
- }' $< > $@
-
-src/udev/keymap/keys-from-name.h: src/udev/keymap/keys-from-name.gperf
- @echo GEN $@
- $(VB)gperf -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C $< > $@
-
-src/udev/keymap/keys-to-name.h: src/udev/keymap/keys.txt
- @echo GEN $@
- $(VB)awk 'BEGIN \
- { \
- print "const char* const key_names[KEY_CNT] = { " \
- } \
- { \
- print "[" $$1 "] = \"" $$1 "\"," \
- } \
- END{print "};" \
- }' $< > $@
-
-keymap:
- @echo "keymap is now built into udevadm/udevd"
-
-install-keymap:
- @echo "keymap is now built into udevadm/udevd"
diff --git a/udev-lfs/udev.7 b/udev-lfs/udev.7
deleted file mode 100644
index 472651bcc..000000000
--- a/udev-lfs/udev.7
+++ /dev/null
@@ -1,476 +0,0 @@
-'\" t
-.TH "UDEV" "7" "" "systemd 202" "udev"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-udev \- Linux dynamic device management
-.SH "DESCRIPTION"
-.PP
-udev supplies the system software with device events, manages permissions of device nodes and may create additional symlinks in the
-/dev
-directory, or renames network interfaces\&. The kernel usually just assigns unpredictable device names based on the order of discovery\&. Meaningful symlinks or network device names provide a way to reliably identify devices based on their properties or current configuration\&.
-.PP
-The udev daemon,
-\fBudevd\fR(8), receives device uevents directly from the kernel whenever a device is added or removed from the system, or it changes its state\&. When udev receives a device event, it matches its configured set of rules against various device attributes to identify the device\&. Rules that match may provide additional device information to be stored in the udev database or to be used to create meaningful symlink names\&.
-.PP
-All device information udev processes is stored in the udev database and sent out to possible event subscribers\&. Access to all stored data and the event sources is provided by the library libudev\&.
-.SH "RULES FILES"
-.PP
-The udev rules are read from the files located in the system rules directory
-/usr/lib/udev/rules\&.d, the volatile runtime directory
-/run/udev/rules\&.d
-and the local administration directory
-/etc/udev/rules\&.d\&. All rules files are collectively sorted and processed in lexical order, regardless of the directories in which they live\&. However, files with identical file names replace each other\&. Files in
-/etc
-have the highest priority, files in
-/run
-take precedence over files with the same name in
-/lib\&. This can be used to override a system\-supplied rules file with a local file if needed; a symlink in
-/etc
-with the same name as a rules file in
-/lib, pointing to
-/dev/null, disables the rules file entirely\&.
-.PP
-Rule files must have the extension
-\&.rules; other extensions are ignored\&.
-.PP
-Every line in the rules file contains at least one key\-value pair\&. Except for empty lines or lines beginning with \*(Aq#\*(Aq, which are ignored\&. There are two kinds of keys: match and assignment\&. If all match keys match against their values, the rule gets applied and the assignment keys get the specified values assigned\&.
-.PP
-A matching rule may rename a network interface, add symlinks pointing to the device node, or run a specified program as part of the event handling\&.
-.PP
-A rule consists of a comma\-separated list of one or more key\-value pairs\&. Each key has a distinct operation, depending on the used operator\&. Valid operators are:
-.PP
-==
-.RS 4
-Compare for equality\&.
-.RE
-.PP
-!=
-.RS 4
-Compare for inequality\&.
-.RE
-.PP
-=
-.RS 4
-Assign a value to a key\&. Keys that represent a list are reset and only this single value is assigned\&.
-.RE
-.PP
-+=
-.RS 4
-Add the value to a key that holds a list of entries\&.
-.RE
-.PP
-:=
-.RS 4
-Assign a value to a key finally; disallow any later changes\&.
-.RE
-.PP
-The following key names can be used to match against device properties\&. Some of the keys also match against properties of the parent devices in sysfs, not only the device that has generated the event\&. If multiple keys that match a parent device are specified in a single rule, all these keys must match at one and the same parent device\&.
-.PP
-\fBACTION\fR
-.RS 4
-Match the name of the event action\&.
-.RE
-.PP
-\fBDEVPATH\fR
-.RS 4
-Match the devpath of the event device\&.
-.RE
-.PP
-\fBKERNEL\fR
-.RS 4
-Match the name of the event device\&.
-.RE
-.PP
-\fBNAME\fR
-.RS 4
-Match the name of a network interface\&. It can be used once the NAME key has been set in one of the preceding rules\&.
-.RE
-.PP
-\fBSYMLINK\fR
-.RS 4
-Match the name of a symlink targeting the node\&. It can be used once a SYMLINK key has been set in one of the preceding rules\&. There may be multiple symlinks; only one needs to match\&.
-.RE
-.PP
-\fBSUBSYSTEM\fR
-.RS 4
-Match the subsystem of the event device\&.
-.RE
-.PP
-\fBDRIVER\fR
-.RS 4
-Match the driver name of the event device\&. Only set this key for devices which are bound to a driver at the time the event is generated\&.
-.RE
-.PP
-\fBATTR{\fR\fB\fIfilename\fR\fR\fB}\fR
-.RS 4
-Match sysfs attribute values of the event device\&. Trailing whitespace in the attribute values is ignored unless the specified match value itself contains trailing whitespace\&.
-.RE
-.PP
-\fBKERNELS\fR
-.RS 4
-Search the devpath upwards for a matching device name\&.
-.RE
-.PP
-\fBSUBSYSTEMS\fR
-.RS 4
-Search the devpath upwards for a matching device subsystem name\&.
-.RE
-.PP
-\fBDRIVERS\fR
-.RS 4
-Search the devpath upwards for a matching device driver name\&.
-.RE
-.PP
-\fBATTRS{\fR\fB\fIfilename\fR\fR\fB}\fR
-.RS 4
-Search the devpath upwards for a device with matching sysfs attribute values\&. If multiple
-\fBATTRS\fR
-matches are specified, all of them must match on the same device\&. Trailing whitespace in the attribute values is ignored unless the specified match value itself contains trailing whitespace\&.
-.RE
-.PP
-\fBTAGS\fR
-.RS 4
-Search the devpath upwards for a device with matching tag\&.
-.RE
-.PP
-\fBENV{\fR\fB\fIkey\fR\fR\fB}\fR
-.RS 4
-Match against a device property value\&.
-.RE
-.PP
-\fBTAG\fR
-.RS 4
-Match against a device tag\&.
-.RE
-.PP
-\fBTEST{\fR\fB\fIoctal mode mask\fR\fR\fB}\fR
-.RS 4
-Test the existence of a file\&. An octal mode mask can be specified if needed\&.
-.RE
-.PP
-\fBPROGRAM\fR
-.RS 4
-Execute a program to determine whether there is a match; the key is true if the program returns successfully\&. The device properties are made available to the executed program in the environment\&. The program\*(Aqs stdout is available in the RESULT key\&.
-.sp
-This can only be used for very short\-running foreground tasks\&. For details see
-\fBRUN\fR\&.
-.RE
-.PP
-\fBRESULT\fR
-.RS 4
-Match the returned string of the last PROGRAM call\&. This key can be used in the same or in any later rule after a PROGRAM call\&.
-.RE
-.PP
-Most of the fields support shell\-style pattern matching\&. The following pattern characters are supported:
-.PP
-*
-.RS 4
-Matches zero or more characters\&.
-.RE
-.PP
-?
-.RS 4
-Matches any single character\&.
-.RE
-.PP
-[]
-.RS 4
-Matches any single character specified within the brackets\&. For example, the pattern string \*(Aqtty[SR]\*(Aq would match either \*(AqttyS\*(Aq or \*(AqttyR\*(Aq\&. Ranges are also supported via the \*(Aq\-\*(Aq character\&. For example, to match on the range of all digits, the pattern [0\-9] could be used\&. If the first character following the \*(Aq[\*(Aq is a \*(Aq!\*(Aq, any characters not enclosed are matched\&.
-.RE
-.PP
-The following keys can get values assigned:
-.PP
-\fBNAME\fR
-.RS 4
-The name to use for a network interface\&. The name of a device node cannot be changed by udev, only additional symlinks can be created\&.
-.RE
-.PP
-\fBSYMLINK\fR
-.RS 4
-The name of a symlink targeting the node\&. Every matching rule adds this value to the list of symlinks to be created\&.
-.sp
-The set of characters to name a symlink is limited\&. Allowed characters are [0\-9A\-Za\-z#+\-\&.:=@_/], valid utf8 character sequences, and "\ex00" hex encoding\&. All other characters are replaced by a \*(Aq_\*(Aq character\&.
-.sp
-Multiple symlinks may be specified by separating the names by the space character\&. In case multiple devices claim the same name, the link always points to the device with the highest link_priority\&. If the current device goes away, the links are re\-evaluated and the device with the next highest link_priority becomes the owner of the link\&. If no link_priority is specified, the order of the devices (and which one of them owns the link) is undefined\&.
-.sp
-Symlink names must never conflict with the kernel\*(Aqs default device node names, as that would result in unpredictable behavior\&.
-.RE
-.PP
-\fBOWNER\fR, \fBGROUP\fR, \fBMODE\fR
-.RS 4
-The permissions for the device node\&. Every specified value overrides the compiled\-in default value\&.
-.RE
-.PP
-\fBATTR{\fR\fB\fIkey\fR\fR\fB}\fR
-.RS 4
-The value that should be written to a sysfs attribute of the event device\&.
-.RE
-.PP
-\fBENV{\fR\fB\fIkey\fR\fR\fB}\fR
-.RS 4
-Set a device property value\&. Property names with a leading \*(Aq\&.\*(Aq are neither stored in the database nor exported to events or external tools (run by, say, the PROGRAM match key)\&.
-.RE
-.PP
-\fBTAG\fR
-.RS 4
-Attach a tag to a device\&. This is used to filter events for users of libudev\*(Aqs monitor functionality, or to enumerate a group of tagged devices\&. The implementation can only work efficiently if only a few tags are attached to a device\&. It is only meant to be used in contexts with specific device filter requirements, and not as a general\-purpose flag\&. Excessive use might result in inefficient event handling\&.
-.RE
-.PP
-\fBRUN{\fR\fB\fItype\fR\fR\fB}\fR
-.RS 4
-Add a program to the list of programs to be executed after processing all the rules for a specific event, depending on
-type:
-.PP
-program
-.RS 4
-Execute an external program specified as the assigned value\&. If no absolute path is given, the program is expected to live in /usr/lib/udev, otherwise the absolute path must be specified\&.
-.sp
-This is the default if no
-\fItype\fR
-is specified\&.
-.RE
-.PP
-builtin
-.RS 4
-As
-\fBprogram\fR, but use one of the built\-in programs rather than an external one\&.
-.RE
-.sp
-The program name and following arguments are separated by spaces\&. Single quotes can be used to specify arguments with spaces\&.
-.sp
-This can only be used for very short\-running foreground tasks\&. Running an event process for a long period of time may block all further events for this or a dependent device\&.
-.sp
-Starting daemons or other long running processes is not appropriate for udev; the forked processes, detached or not, will be unconditionally killed after the event handling has finished\&.
-.RE
-.PP
-\fBLABEL\fR
-.RS 4
-A named label to which a GOTO may jump\&.
-.RE
-.PP
-\fBGOTO\fR
-.RS 4
-Jumps to the next LABEL with a matching name\&.
-.RE
-.PP
-\fBIMPORT{\fR\fB\fItype\fR\fR\fB}\fR
-.RS 4
-Import a set of variables as device properties, depending on
-type:
-.PP
-program
-.RS 4
-Execute an external program specified as the assigned value and import its output, which must be in environment key format\&. Path specification, command/argument separation, and quoting work like in
-\fBRUN\fR\&.
-.RE
-.PP
-builtin
-.RS 4
-As
-\fBprogram\fR, but use one of the built\-in programs rather than an external one\&.
-.RE
-.PP
-file
-.RS 4
-Import a text file specified as the assigned value, the content of which must be in environment key format\&.
-.RE
-.PP
-db
-.RS 4
-Import a single property specified as the assigned value from the current device database\&. This works only if the database is already populated by an earlier event\&.
-.RE
-.PP
-cmdline
-.RS 4
-Import a single property from the kernel command line\&. For simple flags the value of the property is set to \*(Aq1\*(Aq\&.
-.RE
-.PP
-parent
-.RS 4
-Import the stored keys from the parent device by reading the database entry of the parent device\&. The value assigned to
-\fBIMPORT{parent}\fR
-is used as a filter of key names to import (with the same shell\-style pattern matching used for comparisons)\&.
-.RE
-.sp
-This can only be used for very short\-running foreground tasks\&. For details see
-\fBRUN\fR\&.
-.RE
-.PP
-\fBWAIT_FOR\fR
-.RS 4
-Wait for a file to become available or until a timeout of 10 seconds expires\&. The path is relative to the sysfs device; if no path is specified, this waits for an attribute to appear\&.
-.RE
-.PP
-\fBOPTIONS\fR
-.RS 4
-Rule and device options:
-.PP
-\fBlink_priority=\fR\fB\fIvalue\fR\fR
-.RS 4
-Specify the priority of the created symlinks\&. Devices with higher priorities overwrite existing symlinks of other devices\&. The default is 0\&.
-.RE
-.PP
-\fBevent_timeout=\fR
-.RS 4
-Number of seconds an event waits for operations to finish before giving up and terminating itself\&.
-.RE
-.PP
-\fBstring_escape=\fR\fB\fInone|replace\fR\fR
-.RS 4
-Usually control and other possibly unsafe characters are replaced in strings used for device naming\&. The mode of replacement can be specified with this option\&.
-.RE
-.PP
-\fBstatic_node=\fR
-.RS 4
-Apply the permissions specified in this rule to the static device node with the specified name\&. Static device node creation can be requested by kernel modules\&. These nodes might not have a corresponding kernel device at the time udevd is started; they can trigger automatic kernel module loading\&.
-.RE
-.PP
-\fBwatch\fR
-.RS 4
-Watch the device node with inotify; when the node is closed after being opened for writing, a change uevent is synthesized\&.
-.RE
-.PP
-\fBnowatch\fR
-.RS 4
-Disable the watching of a device node with inotify\&.
-.RE
-.RE
-.PP
-The
-\fBNAME\fR,
-\fBSYMLINK\fR,
-\fBPROGRAM\fR,
-\fBOWNER\fR,
-\fBGROUP\fR,
-\fBMODE\fR
-and
-\fBRUN\fR
-fields support simple string substitutions\&. The
-\fBRUN\fR
-substitutions are performed after all rules have been processed, right before the program is executed, allowing for the use of device properties set by earlier matching rules\&. For all other fields, substitutions are performed while the individual rule is being processed\&. The available substitutions are:
-.PP
-\fB$kernel\fR, \fB%k\fR
-.RS 4
-The kernel name for this device\&.
-.RE
-.PP
-\fB$number\fR, \fB%n\fR
-.RS 4
-The kernel number for this device\&. For example, \*(Aqsda3\*(Aq has kernel number of \*(Aq3\*(Aq
-.RE
-.PP
-\fB$devpath\fR, \fB%p\fR
-.RS 4
-The devpath of the device\&.
-.RE
-.PP
-\fB$id\fR, \fB%b\fR
-.RS 4
-The name of the device matched while searching the devpath upwards for
-\fBSUBSYSTEMS\fR,
-\fBKERNELS\fR,
-\fBDRIVERS\fR
-and
-\fBATTRS\fR\&.
-.RE
-.PP
-\fB$driver\fR
-.RS 4
-The driver name of the device matched while searching the devpath upwards for
-\fBSUBSYSTEMS\fR,
-\fBKERNELS\fR,
-\fBDRIVERS\fR
-and
-\fBATTRS\fR\&.
-.RE
-.PP
-\fB$attr{\fR\fB\fIfile\fR\fR\fB}\fR, \fB%s{\fR\fB\fIfile\fR\fR\fB}\fR
-.RS 4
-The value of a sysfs attribute found at the device where all keys of the rule have matched\&. If the matching device does not have such an attribute, and a previous KERNELS, SUBSYSTEMS, DRIVERS, or ATTRS test selected a parent device, then the attribute from that parent device is used\&.
-.sp
-If the attribute is a symlink, the last element of the symlink target is returned as the value\&.
-.RE
-.PP
-\fB$env{\fR\fB\fIkey\fR\fR\fB}\fR, \fB%E{\fR\fB\fIkey\fR\fR\fB}\fR
-.RS 4
-A device property value\&.
-.RE
-.PP
-\fB$major\fR, \fB%M\fR
-.RS 4
-The kernel major number for the device\&.
-.RE
-.PP
-\fB$minor\fR, \fB%m\fR
-.RS 4
-The kernel minor number for the device\&.
-.RE
-.PP
-\fB$result\fR, \fB%c\fR
-.RS 4
-The string returned by the external program requested with PROGRAM\&. A single part of the string, separated by a space character, may be selected by specifying the part number as an attribute:
-\fB%c{N}\fR\&. If the number is followed by the \*(Aq+\*(Aq character, this part plus all remaining parts of the result string are substituted:
-\fB%c{N+}\fR
-.RE
-.PP
-\fB$parent\fR, \fB%P\fR
-.RS 4
-The node name of the parent device\&.
-.RE
-.PP
-\fB$name\fR
-.RS 4
-The current name of the device\&. If not changed by a rule, it is the name of the kernel device\&.
-.RE
-.PP
-\fB$links\fR
-.RS 4
-A space\-separated list of the current symlinks\&. The value is only set during a remove event or if an earlier rule assigned a value\&.
-.RE
-.PP
-\fB$root\fR, \fB%r\fR
-.RS 4
-The udev_root value\&.
-.RE
-.PP
-\fB$sys\fR, \fB%S\fR
-.RS 4
-The sysfs mount point\&.
-.RE
-.PP
-\fB$devnode\fR, \fB%N\fR
-.RS 4
-The name of the device node\&.
-.RE
-.PP
-%%
-.RS 4
-The \*(Aq%\*(Aq character itself\&.
-.RE
-.PP
-$$
-.RS 4
-The \*(Aq$\*(Aq character itself\&.
-.RE
-.SH "SEE ALSO"
-.PP
-\fBudevd\fR(8),
-\fBudevadm\fR(8)
diff --git a/udev-lfs/udevadm.8 b/udev-lfs/udevadm.8
deleted file mode 100644
index 373b65cee..000000000
--- a/udev-lfs/udevadm.8
+++ /dev/null
@@ -1,372 +0,0 @@
-'\" t
-.TH "UDEVADM" "8" "" "systemd 202" "udevadm"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-udevadm \- udev management tool
-.SH "SYNOPSIS"
-.HP \w'\fBudevadm\fR\ 'u
-\fBudevadm\fR [\fB\-\-debug\fR] [\fB\-\-version\fR] [\fB\-\-help\fR]
-.HP \w'\fBudevadm\ info\ \fR\fB\fIoptions\fR\fR\ 'u
-\fBudevadm info \fR\fB\fIoptions\fR\fR
-.HP \w'\fBudevadm\ trigger\ \fR\fB[options]\fR\ 'u
-\fBudevadm trigger \fR\fB[options]\fR
-.HP \w'\fBudevadm\ settle\ \fR\fB[options]\fR\ 'u
-\fBudevadm settle \fR\fB[options]\fR
-.HP \w'\fBudevadm\ control\ \fR\fB\fIcommand\fR\fR\ 'u
-\fBudevadm control \fR\fB\fIcommand\fR\fR
-.HP \w'\fBudevadm\ monitor\ \fR\fB[options]\fR\ 'u
-\fBudevadm monitor \fR\fB[options]\fR
-.HP \w'\fBudevadm\ hwdb\ \fR\fB[options]\fR\ 'u
-\fBudevadm hwdb \fR\fB[options]\fR
-.HP \w'\fBudevadm\ test\ \fR\fB[options]\fR\fB\ \fR\fB\fIdevpath\fR\fR\ 'u
-\fBudevadm test \fR\fB[options]\fR\fB \fR\fB\fIdevpath\fR\fR
-.HP \w'\fBudevadm\ test\-builtin\ \fR\fB[options]\fR\fB\ \fR\fB\fIcommand\fR\fR\fB\ \fR\fB\fIdevpath\fR\fR\ 'u
-\fBudevadm test\-builtin \fR\fB[options]\fR\fB \fR\fB\fIcommand\fR\fR\fB \fR\fB\fIdevpath\fR\fR
-.SH "DESCRIPTION"
-.PP
-udevadm expects a command and command specific options\&. It controls the runtime behavior of udev, requests kernel events, manages the event queue, and provides simple debugging mechanisms\&.
-.SH "OPTIONS"
-.PP
-\fB\-\-debug\fR
-.RS 4
-Print debug messages to stderr\&.
-.RE
-.PP
-\fB\-\-version\fR
-.RS 4
-Print version number\&.
-.RE
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SS "udevadm info \fIoptions\fR"
-.PP
-Queries the udev database for device information stored in the udev database\&. It can also query the properties of a device from its sysfs representation to help creating udev rules that match this device\&.
-.PP
-\fB\-\-query=\fR\fB\fItype\fR\fR
-.RS 4
-Query the database for specified type of device data\&. It needs the
-\fB\-\-path\fR
-or
-\fB\-\-name\fR
-to identify the specified device\&. Valid queries are:
-\fBname\fR,
-\fBsymlink\fR,
-\fBpath\fR,
-\fBproperty\fR,
-\fBall\fR\&.
-.RE
-.PP
-\fB\-\-path=\fR\fB\fIdevpath\fR\fR
-.RS 4
-The devpath of the device to query\&.
-.RE
-.PP
-\fB\-\-name=\fR\fB\fIfile\fR\fR
-.RS 4
-The name of the device node or a symlink to query
-.RE
-.PP
-\fB\-\-root\fR
-.RS 4
-Print absolute paths in
-\fBname\fR
-or
-\fBsymlink\fR
-query\&.
-.RE
-.PP
-\fB\-\-attribute\-walk\fR
-.RS 4
-Print all sysfs properties of the specified device that can be used in udev rules to match the specified device\&. It prints all devices along the chain, up to the root of sysfs that can be used in udev rules\&.
-.RE
-.PP
-\fB\-\-export\fR
-.RS 4
-Print output as key/value pairs\&. Values are enclosed in single quotes\&.
-.RE
-.PP
-\fB\-\-export\-prefix=\fR\fB\fIname\fR\fR
-.RS 4
-Add a prefix to the key name of exported values\&.
-.RE
-.PP
-\fB\-\-device\-id\-of\-file=\fR\fB\fIfile\fR\fR
-.RS 4
-Print major/minor numbers of the underlying device, where the file lives on\&.
-.RE
-.PP
-\fB\-\-export\-db\fR
-.RS 4
-Export the content of the udev database\&.
-.RE
-.PP
-\fB\-\-cleanup\-db\fR
-.RS 4
-Cleanup the udev database\&.
-.RE
-.PP
-\fB\-\-version\fR
-.RS 4
-Print version\&.
-.RE
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SS "udevadm trigger [options]"
-.PP
-Request device events from the kernel\&. Primarily used to replay events at system coldplug time\&.
-.PP
-\fB\-\-verbose\fR
-.RS 4
-Print the list of devices which will be triggered\&.
-.RE
-.PP
-\fB\-\-dry\-run\fR
-.RS 4
-Do not actually trigger the event\&.
-.RE
-.PP
-\fB\-\-type=\fR\fB\fItype\fR\fR
-.RS 4
-Trigger a specific type of devices\&. Valid types are:
-\fBdevices\fR,
-\fBsubsystems\fR\&. The default value is
-\fBdevices\fR\&.
-.RE
-.PP
-\fB\-\-action=\fR\fB\fIaction\fR\fR
-.RS 4
-Type of event to be triggered\&. The default value is
-\fBchange\fR\&.
-.RE
-.PP
-\fB\-\-subsystem\-match=\fR\fB\fIsubsystem\fR\fR
-.RS 4
-Trigger events for devices which belong to a matching subsystem\&. This option can be specified multiple times and supports shell style pattern matching\&.
-.RE
-.PP
-\fB\-\-subsystem\-nomatch=\fR\fB\fIsubsystem\fR\fR
-.RS 4
-Do not trigger events for devices which belong to a matching subsystem\&. This option can be specified multiple times and supports shell style pattern matching\&.
-.RE
-.PP
-\fB\-\-attr\-match=\fR\fB\fIattribute\fR\fR\fB=\fR\fB\fIvalue\fR\fR
-.RS 4
-Trigger events for devices with a matching sysfs attribute\&. If a value is specified along with the attribute name, the content of the attribute is matched against the given value using shell style pattern matching\&. If no value is specified, the existence of the sysfs attribute is checked\&. This option can be specified multiple times\&.
-.RE
-.PP
-\fB\-\-attr\-nomatch=\fR\fB\fIattribute\fR\fR\fB=\fR\fB\fIvalue\fR\fR
-.RS 4
-Do not trigger events for devices with a matching sysfs attribute\&. If a value is specified along with the attribute name, the content of the attribute is matched against the given value using shell style pattern matching\&. If no value is specified, the existence of the sysfs attribute is checked\&. This option can be specified multiple times\&.
-.RE
-.PP
-\fB\-\-property\-match=\fR\fB\fIproperty\fR\fR\fB=\fR\fB\fIvalue\fR\fR
-.RS 4
-Trigger events for devices with a matching property value\&. This option can be specified multiple times and supports shell style pattern matching\&.
-.RE
-.PP
-\fB\-\-tag\-match=\fR\fB\fIproperty\fR\fR
-.RS 4
-Trigger events for devices with a matching tag\&. This option can be specified multiple times\&.
-.RE
-.PP
-\fB\-\-sysname\-match=\fR\fB\fIname\fR\fR
-.RS 4
-Trigger events for devices with a matching sys device name\&. This option can be specified multiple times and supports shell style pattern matching\&.
-.RE
-.PP
-\fB\-\-parent\-match=\fR\fB\fIsyspath\fR\fR
-.RS 4
-Trigger events for all children of a given device\&.
-.RE
-.SS "udevadm settle [options]"
-.PP
-Watches the udev event queue, and exits if all current events are handled\&.
-.PP
-\fB\-\-timeout=\fR\fB\fIseconds\fR\fR
-.RS 4
-Maximum number of seconds to wait for the event queue to become empty\&. The default value is 120 seconds\&. A value of 0 will check if the queue is empty and always return immediately\&.
-.RE
-.PP
-\fB\-\-seq\-start=\fR\fB\fIseqnum\fR\fR
-.RS 4
-Wait only for events after the given sequence number\&.
-.RE
-.PP
-\fB\-\-seq\-end=\fR\fB\fIseqnum\fR\fR
-.RS 4
-Wait only for events before the given sequence number\&.
-.RE
-.PP
-\fB\-\-exit\-if\-exists=\fR\fB\fIfile\fR\fR
-.RS 4
-Stop waiting if file exists\&.
-.RE
-.PP
-\fB\-\-quiet\fR
-.RS 4
-Do not print any output, like the remaining queue entries when reaching the timeout\&.
-.RE
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SS "udevadm control \fIcommand\fR"
-.PP
-Modify the internal state of the running udev daemon\&.
-.PP
-\fB\-\-exit\fR
-.RS 4
-Signal and wait for udevd to exit\&.
-.RE
-.PP
-\fB\-\-log\-priority=\fR\fB\fIvalue\fR\fR
-.RS 4
-Set the internal log level of udevd\&. Valid values are the numerical syslog priorities or their textual representations:
-\fBerr\fR,
-\fBinfo\fR
-and
-\fBdebug\fR\&.
-.RE
-.PP
-\fB\-\-stop\-exec\-queue\fR
-.RS 4
-Signal udevd to stop executing new events\&. Incoming events will be queued\&.
-.RE
-.PP
-\fB\-\-start\-exec\-queue\fR
-.RS 4
-Signal udevd to enable the execution of events\&.
-.RE
-.PP
-\fB\-\-reload\fR
-.RS 4
-Signal udevd to reload the rules files and other databases like the kernel module index\&. Reloading rules and databases does not apply any changes to already existing devices; the new configuration will only be applied to new events\&.
-.RE
-.PP
-\fB\-\-property=\fR\fB\fIKEY\fR\fR\fB=\fR\fB\fIvalue\fR\fR
-.RS 4
-Set a global property for all events\&.
-.RE
-.PP
-\fB\-\-children\-max=\fR\fIvalue\fR
-.RS 4
-Set the maximum number of events, udevd will handle at the same time\&.
-.RE
-.PP
-\fB\-\-timeout=\fR\fIseconds\fR
-.RS 4
-The maximum number of seconds to wait for a reply from udevd\&.
-.RE
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SS "udevadm monitor [options]"
-.PP
-Listens to the kernel uevents and events sent out by a udev rule and prints the devpath of the event to the console\&. It can be used to analyze the event timing, by comparing the timestamps of the kernel uevent and the udev event\&.
-.PP
-\fB\-\-kernel\fR
-.RS 4
-Print the kernel uevents\&.
-.RE
-.PP
-\fB\-\-udev\fR
-.RS 4
-Print the udev event after the rule processing\&.
-.RE
-.PP
-\fB\-\-property\fR
-.RS 4
-Also print the properties of the event\&.
-.RE
-.PP
-\fB\-\-subsystem\-match=\fR\fB\fIstring[/string]\fR\fR
-.RS 4
-Filter events by subsystem[/devtype]\&. Only udev events with a matching subsystem value will pass\&.
-.RE
-.PP
-\fB\-\-tag\-match=\fR\fB\fIstring\fR\fR
-.RS 4
-Filter events by property\&. Only udev events with a given tag attached will pass\&.
-.RE
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SS "udevadm hwdb [options]"
-.PP
-Maintain the hardware database index in
-/etc/udev/hwdb\&.bin\&.
-.PP
-\fB\-\-update\fR
-.RS 4
-Compile the hardware database information located in /usr/lib/udev/hwdb\&.d/, /etc/udev/hwdb\&.d/ and store it in
-/etc/udev/hwdb\&.bin\&. This should be done after any update to the source files; it will not be called automatically\&. The running udev daemon will detect a new database on its own and does not need to be notified about it\&.
-.RE
-.PP
-\fB\-\-test=\fR\fB\fIstring\fR\fR
-.RS 4
-Query the database with a modalias string, and print the retrieved properties\&.
-.RE
-.PP
-\fB\-\-root=\fR\fB\fIstring\fR\fR
-.RS 4
-Alternative root path in the filesystem for reading and writing files\&.
-.RE
-.SS "udevadm test [options] \fIdevpath\fR"
-.PP
-Simulate a udev event run for the given device, and print debug output\&.
-.PP
-\fB\-\-action=\fR\fB\fIstring\fR\fR
-.RS 4
-The action string\&.
-.RE
-.PP
-\fB\-\-subsystem=\fR\fB\fIstring\fR\fR
-.RS 4
-The subsystem string\&.
-.RE
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SS "udevadm test\-builtin [options] \fIcommand\fR \fIdevpath\fR"
-.PP
-Run a built\-in command for the given device, and print debug output\&.
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SH "SEE ALSO"
-.PP
-\fBudev\fR(7)
-\fBudevd.service\fR(8)
diff --git a/udev-lfs/udevd.8 b/udev-lfs/udevd.8
deleted file mode 100644
index 0730756cb..000000000
--- a/udev-lfs/udevd.8
+++ /dev/null
@@ -1,124 +0,0 @@
-'\" t
-.TH "SYSTEMD\-UDEVD\&.SERVICE" "8" "" "systemd 202" "udevd"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-udevd \- Device event managing daemon
-.SH "SYNOPSIS"
-.HP \w'\fB/usr/lib/udevd\fR\ 'u
-\fB/lib/udev/udevd\fR [\fB\-\-daemon\fR] [\fB\-\-debug\fR] [\fB\-\-children\-max=\fR] [\fB\-\-exec\-delay=\fR] [\fB\-\-resolve\-names=early|late|never\fR] [\fB\-\-version\fR] [\fB\-\-help\fR]
-.SH "DESCRIPTION"
-.PP
-\fBudevd\fR
-listens to kernel uevents\&. For every event, udevd executes matching instructions specified in udev rules\&. See
-\fBudev\fR(7)\&.
-.PP
-The behavior of the running daemon can be changed with
-\fBudevadm control\fR\&.
-.SH "OPTIONS"
-.PP
-\fB\-\-daemon\fR
-.RS 4
-Detach and run in the background\&.
-.RE
-.PP
-\fB\-\-debug\fR
-.RS 4
-Print debug messages to stderr\&.
-.RE
-.PP
-\fB\-\-children\-max=\fR
-.RS 4
-Limit the number of events executed in parallel\&.
-.RE
-.PP
-\fB\-\-exec\-delay=\fR
-.RS 4
-Delay the execution of RUN instruction by the given number of seconds\&. This option might be useful when debugging system crashes during coldplug caused by loading non\-working kernel modules\&.
-.RE
-.PP
-\fB\-\-resolve\-names=\fR
-.RS 4
-Specify when udevd should resolve names of users and groups\&. When set to
-\fBearly\fR
-(the default) names will be resolved when the rules are parsed\&. When set to
-\fBlate\fR
-names will be resolved for every event\&. When set to
-\fBnever\fR
-names will never be resolved and all devices will be owned by root\&.
-.RE
-.PP
-\fB\-\-version\fR
-.RS 4
-Print version number\&.
-.RE
-.PP
-\fB\-\-help\fR
-.RS 4
-Print help text\&.
-.RE
-.SH "ENVIRONMENT"
-.PP
-\fI$UDEV_LOG=\fR
-.RS 4
-Set the logging priority\&.
-.RE
-.SH "KERNEL COMMAND LINE"
-.PP
-Parameters starting with "rd\&." will be read when
-\fBudevd\fR
-is used in an initrd\&.
-.PP
-\fIudev\&.log\-priority=\fR, \fIrd\&.udev\&.log\-priority=\fR
-.RS 4
-Set the logging priority\&.
-.RE
-.PP
-\fIudev\&.children\-max=\fR, \fIrd\&.udev\&.children\-max=\fR
-.RS 4
-Limit the number of events executed in parallel\&.
-.RE
-.PP
-\fIudev\&.exec\-delay=\fR, \fIrd\&.udev\&.exec\-delay=\fR
-.RS 4
-Delay the execution of RUN instruction by the given number of seconds\&. This option might be useful when debugging system crashes during coldplug caused by loading non\-working kernel modules\&.
-.RE
-.PP
-\fInet\&.ifnames=\fR
-.RS 4
-Network interfaces are renamed to give them predictable names when possible\&. It is enabled by default, specifying 0 disables it\&.
-.RE
-.SH "CONFIGURATION FILE"
-.PP
-udev expects its main configuration file at
-/etc/udev/udev\&.conf\&. It consists of a set of variables allowing the user to override default udev values\&. All empty lines or lines beginning with \*(Aq#\*(Aq are ignored\&. The following variables can be set:
-.PP
-\fIudev_log\fR
-.RS 4
-The logging priority\&. Valid values are the numerical syslog priorities or their textual representations:
-\fBerr\fR,
-\fBinfo\fR
-and
-\fBdebug\fR\&.
-.RE
-.SH "SEE ALSO"
-.PP
-\fBudev\fR(7),
-\fBudevadm\fR(8)