From cba2d4e6aa081fdf62e527d28eba137eb885f0cc Mon Sep 17 00:00:00 2001 From: Bruce Dubbs Date: Thu, 3 Apr 2014 21:52:09 +0000 Subject: [PATCH] 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 --- appendices/scripts.xml | 6 - appendices/udev-rules.xml | 2 +- bootscripts/ChangeLog | 3 + bootscripts/Makefile | 174 ++-- bootscripts/lfs/init.d/functions | 793 --------------- bootscripts/lfs/init.d/localnet | 1 + bootscripts/lfs/init.d/mountfs | 3 + bootscripts/lfs/init.d/mountvirtfs | 4 +- bootscripts/lfs/init.d/rc | 4 +- bootscripts/lfs/init.d/udev | 10 +- bootscripts/lfs/init.d/udev_retry | 6 +- bootscripts/lfs/lib/services/init-functions | 2 +- bootscripts/lfs/lib/systemd/ifupdown@.service | 12 + bootscripts/lfs/units/ifupdownat.service | 12 + chapter01/changelog.xml | 13 + chapter01/whatsnew.xml | 8 +- chapter03/packages.xml | 35 +- chapter03/patches.xml | 10 +- chapter06/chapter06.xml | 10 +- chapter06/dbus.xml | 186 ++++ chapter06/systemd.xml | 604 ++++++++++-- chapter06/sysvinit-header.xml | 15 - chapter06/sysvinit.xml | 36 +- chapter07/bootscripts.xml | 7 +- chapter07/chapter07.xml | 4 +- chapter07/hostname.xml | 10 +- chapter07/introduction.xml | 254 +++-- chapter07/network.xml | 61 +- chapter07/setclock.xml | 140 ++- chapter07/site.xml | 4 +- chapter07/sysklogd.xml | 4 +- chapter07/usage.xml | 2 +- chapter08/kernel.xml | 23 +- general.ent | 6 +- packages.ent | 30 +- patches.ent | 4 + udev-lfs/ChangeLog | 3 + udev-lfs/Makefile.lfs | 352 +------ udev-lfs/README | 14 +- udev-lfs/cfg.h | 64 -- udev-lfs/keyboard-keys-from-name.h | 923 ------------------ udev-lfs/keyboard-keys-to-name.h | 394 -------- udev-lfs/makefile-incl.gir | 51 - udev-lfs/makefile-incl.gudev | 108 -- udev-lfs/makefile-incl.keymap | 54 - udev-lfs/udev.7 | 476 --------- udev-lfs/udevadm.8 | 372 ------- udev-lfs/udevd.8 | 124 --- 48 files changed, 1321 insertions(+), 4112 deletions(-) delete mode 100644 bootscripts/lfs/init.d/functions create mode 100644 bootscripts/lfs/lib/systemd/ifupdown@.service create mode 100644 bootscripts/lfs/units/ifupdownat.service create mode 100644 chapter06/dbus.xml delete mode 100644 chapter06/sysvinit-header.xml delete mode 100644 udev-lfs/cfg.h delete mode 100644 udev-lfs/keyboard-keys-from-name.h delete mode 100644 udev-lfs/keyboard-keys-to-name.h delete mode 100644 udev-lfs/makefile-incl.gir delete mode 100644 udev-lfs/makefile-incl.gudev delete mode 100644 udev-lfs/makefile-incl.keymap delete mode 100644 udev-lfs/udev.7 delete mode 100644 udev-lfs/udevadm.8 delete mode 100644 udev-lfs/udevd.8 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 @@ - @@ -62,11 +61,6 @@ &initfunctions; - - /etc/rc.d/init.d/functions - &functions; - - /etc/rc.d/init.d/mountvirtfs &mountvirtfs; 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 @@ The rules from in this appendix are listed for convenience. Installation is normally done via instructions in . + linkend='ch-system-systemd'/>. 55-lfs.rules 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 + * Changes made to be consistent with common systemd functions + 2013-08-21 Bruce Dubbs * 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 @@ -35,6 +35,19 @@ --> + + 2014-03-31 + + + [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. + + + + 2014-03-31 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 @@ attr-&attr-version; - eudev-&eudev-version; - - - eudev-&eudev-version;-manpages + dbus-&dbus-version; expat-&expat-version; @@ -250,6 +247,9 @@ libcap-&libcap-version; + + systemd-&systemd-version; + XML::Parser-&xml-parser-version; diff --git a/chapter03/packages.xml b/chapter03/packages.xml index 5f21589c1..954558afd 100644 --- a/chapter03/packages.xml +++ b/chapter03/packages.xml @@ -113,6 +113,15 @@ + + D-Bus (&dbus-version;) - &dbus-size;: + + Home page: + Download: + MD5 sum: &dbus-md5; + + + DejaGNU (&dejagnu-version;) - &dejagnu-size;: @@ -157,7 +166,7 @@ MD5 sum: &expect-md5; - + File (&file-version;) - &file-size;: @@ -595,6 +604,15 @@ + + Systemd (&systemd-version;) - &systemd-size;: + + Home page: + Download: + MD5 sum: &systemd-md5; + + + Sysvinit (&sysvinit-version;) - &sysvinit-size;: @@ -639,24 +657,15 @@ MD5 sum: &texinfo-md5; - + Util-linux (&util-linux-version;) - &util-linux-size;: 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 @@ MD5 sum: &perl-libc-patch-md5; - + Sysvinit Consolidated Patch - &sysvinit-consolidated-patch-size;: 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 @@ - - - - - + + + + + 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 @@ + + + %general-entities; +]> + + + + + + dbus + &dbus-version; +
&dbus-url;
+
+ + D-Bus-&dbus-version; + + + D-Bus + + + + + + <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 + + Prepare D-Bus for compilation: + +./configure --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --docdir=/usr/share/doc/dbus-&dbus-version; \ + --with-console-auth-dir=/run/console + + + The meaning of the configure options: + + + --with-console-auth-dir=/run/console + + This specifies the location of the ConsoleKit auth + directory. + + + + + + Compile the package: + +make + + 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 + . + + Install the package: + +make install + + The shared library needs to be moved to + /lib, and as a result the + .so file in + /usr/lib will need to be recreated: + +mv -v /usr/lib/libdbus-1.so.* /lib +ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so + + Create a symlink, so that D-Bus and Systemd can use the same + machine-id file: + +ln -sv /etc/machine-id /var/lib/dbus + + + + + Contents of D-Bus + + + Installed programs + Installed libraries + Installed directories + + + dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor, + dbus-send, and dbus-uuidgen + libdbus-1.{a,so} + /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 + + + + + Short Descriptions + + + + + dbus-cleanup-sockets + + Used to clean up leftover sockets in a directory. + + dbus-cleanup-sockets + + + + + + dbus-daemon + + The D-Bus message bus daemon. + + dbus-daemon + + + + + + dbus-launch + + Starts dbus-daemon from a shell + script. + + dbus-launch + + + + + + dbus-monitor + + Monitors messages passing through a D-Bus message bus. + + dbus-monitor + + + + + + dbus-send + + Sends a message to a D-Bus message bus. + + dbus-send + + + + + + dbus-uuidgen + + Generates a universally unique ID. + + dbus-uuidgen + + + + + + + + +
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; ]> - - + + - udev + systemd &systemd-version;
&systemd-url;
- Udev-&systemd-version; (Extracted from systemd-&systemd-version;) + Systemd-&systemd-version; - - Udev + + Systemd - <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 + Installation of Systemd - This package is a little different from other packages. The - initial package that is extracted is - systemd-&systemd-version;.tar.xz even though the - application we are installing is udev. After changing to the - systemd directory, follow the instructions below. + First, create a file to allow Systemd to build when using Util-Linux + built in Chapter 5: - The udev-lfs tarball contains LFS-specific files used to build - Udev. Unpack it into the systemd source directory: +cat > config.cache << "EOF" +KILL=/bin/kill +HAVE_BLKID=1 +BLKID_LIBS="-lblkid" +BLKID_CFLAGS="-I/tools/include/blkid" +EOF -tar -xvf ../&udev-lfs;.tar.bz2 + Aditionally, fix a build error when using Util-Linux built in + Chapter 5: - Create two symbolic links to header files and set an - environment variable to properly use . +sed -i "s:blkid/::" $(grep -rl "blkid/blkid.h") -ln -svf /tools/include/blkid /usr/include -ln -svf /tools/include/uuid /usr/include -export LD_LIBRARY_PATH=/tools/lib + Apply a patch so that compat pkg-config files get + installed without installing compat libs which are useless on LFS: - Build the package: +patch -Np1 -i ../&systemd-compat-patch; -make -f &udev-lfs;/Makefile.lfs + Prepare Systemd for compilation: + +./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 + + + The meaning of the configure options: + + + --config-cache + + This switch tells the build system to use + the config.cache file which + was created earlier. + + + + + --with-root* + + These switches ensure that core programs and + shared libraries are installed in the subdirectories + of the root partition. + + + + + --enable-split-usr + + This switch ensures that Systemd will work on + systems where /bin, /lib and /sbin directories are not + symlinks to their /usr counterparts. + + + + + --disable-gudev --without-python + + These switches disable optional features because + LFS does not provide their dependencies. + + + + + --with-dbus* + + These switches ensure that D-Bus configuratil files + get installed in the correct locations. + + + + + + Compile the package: + +make LIBRARY_PATH=/tools/lib + + First prevent few broken test cases from running: + +sed -e "s:test/udev-test.pl::g" \ + -e "s:test-bus-cleanup\$(EXEEXT) ::g" \ + -e "s:test-bus-gvariant\$(EXEEXT) ::g" \ + -i Makefile + + To test the results, issue: + +make -k check + + 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. Install the package: -make -f &udev-lfs;/Makefile.lfs install +make LD_LIBRARY_PATH=/tools/lib install - There are several places within the - systemd 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, - /etc/udev/hwdb.bin, cannot be changed without explicit - changes to the source code. + Move NSS myhostname library to /lib: - Now initialize the hardware database: +mv -v /usr/lib/libnss_myhostname.so.2 /lib -build/udevadm hwdb --update + Remove an unnecessary directory: - Finally set up the persistent network udev rules. This task will be - explained in detail in . Note that the - /sys and /proc filesystems must be mounted in the - chroot environment as explained at the beginning of this chapter for the - following script to work. +rm -rfv /usr/lib/rpm -bash &udev-lfs;/init-net-rules.sh + Create the Sysvinit compatibility symlinks, and move some man pages + and a library that conflict with so + both systems can be installed side-by-side: - Do some cleanup: +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 -rm -fv /usr/include/{uuid,blkid} -unset LD_LIBRARY_PATH +ln -sfv ../lib/systemd/systemd /sbin/init-systemd +mv -v /etc/init.d /etc/init.d-systemd + + Remove a reference to a non-existent group: + +sed -i "s:0775 root lock:0755 root root:g" /usr/lib/tmpfiles.d/legacy.conf + + Create the /etc/machine-id file needed by + Journald: + +systemd-machine-id-setup + + Finally install some LFS specific udev rules: + +tar -xf ../&udev-lfs-version;.tar.bz2 +make -f &udev-lfs-version;/Makefile.lfs install - - Contents of Udev + + Contents of Systemd Installed programs @@ -104,12 +194,22 @@ unset LD_LIBRARY_PATH Installed directories - accelerometer, ata_id, cdrom_id, collect, mtd_probe, - scsi_id, v4l_id, udevadm, and udevd + 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 - libudev.so - - /etc/udev, /lib/udev, /lib/firmware, /usr/share/doc/udev + libnss_myhostname.so.2, libsystemd.so, libudev.so + /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 @@ -118,48 +218,363 @@ unset LD_LIBRARY_PATH - - ata_id + + bootctl - Provides Udev with a unique string and - additional information (uuid, label) for an ATA drive - - ata_id + used to query the firmware and boot manager settings. + + bootctl - - cdrom_id + + busctl - Provides Udev with the capabilities of a - CD-ROM or DVD-ROM drive - - cdrom_id + used to introspect and monitor the D-Bus bus. + + busctl - - collect + + halt - 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 - - collect + Normally invokes shutdown with the + -h option, except when already in run-level 0, + then it tells the kernel to halt the system; it notes in the + file /var/log/wtmp that the system is being + brought down. + + halt - - scsi_id + + hostnamectl - Provides Udev with a unique SCSI identifier - based on the data returned from sending a SCSI INQUIRY command to - the specified device - - scsi_id + used to query and change the system hostname and related + settings. + + hostnamectl + + + + + + init + + 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. + + init + + + + + + journalctl + + used to query the contents of the Systemd Journal. + + journalctl + + + + + + kernel-install + + used to add and remove kernel and initramfs images to and + from /boot. + + kernel-install + + + + + + localectl + + used to query and change the system locale and keyboard layout + settings. + + localectl + + + + + + loginctl + + used to introspect and control the state of the Systemd Login + Manager. + + loginctl + + + + + + machinectl + + used to introspect and control the state of the Systemd Virtual + Machine and Container Registration Manager + + machinectl + + + + + + poweroff + + Tells the kernel to halt the system and switch off the computer + (see halt). + + poweroff + + + + + + reboot + + Tells the kernel to reboot the system (see + halt). + + reboot + + + + + + runlevel + + Reports the previous and the current run-level, as noted in the + last run-level record in /var/run/utmp. + + runlevel + + + + + + shutdown + + Brings the system down in a secure way, signaling all processes + and notifying all logged-in users. + + shutdown + + + + + + systemctl + + used to introspect and control the state of the Systemd system and + service manager. + + systemctl + + + + + + systemd-analyze + + used to determine system boot-up performance of the current boot. + + + systemd-analyze + + + + + + systemd-ask-password + + used to query a system password or passphrase from the user, using a + question message specified on the command line. + + systemd-ask-password + + + + + + systemd-cat + + used to connect STDOUT and STDERR of a process with the Journal. + + + systemd-cat + + + + + + systemd-cgls + + recursively shows the contents of the selected Linux control group + hierarchy in a tree. + + systemd-cgls + + + + + + systemd-cgtop + + shows the top control groups of the local Linux control group hierarchy, + ordered by their CPU, memory and disk I/O load. + + systemd-cgtop + + + + + + systemd-coredumpctl + + used to retrieve coredumps from the Systemd Journal + + systemd-coredumpctl + + + + + + systemd-delta + + used to identify and compare configuration files in + /etc that override default + counterparts in /usr. + + systemd-delta + + + + + + systemd-detect-virt + + detects execution in a virtualized environment. + + systemd-detect-virt + + + + + + systemd-inhibit + + used to execute a program with a shutdown, sleep or idle inhibitor lock + taken. + + systemd-inhibit + + + + + + systemd-machine-id-setup + + used by system installer tools to initialize the machine ID stored in + /etc/machine-id at install time with a randomly + generated ID. + + systemd-machine-id-setup + + + + + + systemd-notify + + used by daemon scripts to notify the init system about status changes. + + + systemd-notify + + + + + + systemd-nspawn + + used to run a command or OS in a light-weight namespace container. + + systemd-nspawn + + + + + + systemd-run + + used to create and start a transient .service or a .scope unit and + run the specified command in it. + + systemd-run + + + + + + + + systemd-tmpfiles + + creates, deletes and cleans up volatile and temporary files and directories, + based on the configuration file format and location specified in + tmpfiles.d directories. + + systemd-tmpfiles + + + + + + systemd-tty-ask-password-agent + + used to list or process pending Systemd password requests + + systemd-tty-ask-password-agent + + + + + + telinit + + Tells init which run-level to change to. + + telinit + + + + + + timedatectl + + used to query and change the system clock and its settings. + + + timedatectl @@ -167,24 +582,22 @@ unset LD_LIBRARY_PATH udevadm - Generic udev administration tool: controls the udevd daemon, + 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 - + for a given device. + udevadm - - udevd + + libsystemd - A daemon that listens for uevents on the netlink socket, - creates devices and runs the configured external programs in - response to these uevents - - udevd + Systemd utility library. + + libsystemd @@ -192,24 +605,13 @@ unset LD_LIBRARY_PATH libudev - A library interface to udev device information - + A library to access Udev device information. + libudev - - /etc/udev - - Contains Udev configuration files, - device permissions, and rules for device naming - - /etc/udev - - - - 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 @@ - - - - - - - $LastChangedBy$ - $Date$ - - - System V - - - 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 @@ make -C src install + Move files that have a name conflict with + so that both packages can be installed side-by-side: + +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 + @@ -122,7 +130,7 @@
- + halt Normally invokes shutdown with the @@ -130,19 +138,19 @@ then it tells the kernel to halt the system; it notes in the file /var/log/wtmp that the system is being brought down - + halt - + init 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 - + init @@ -160,55 +168,55 @@ - + poweroff Tells the kernel to halt the system and switch off the computer (see halt) - + poweroff - + reboot Tells the kernel to reboot the system (see halt) - + reboot - + runlevel Reports the previous and the current run-level, as noted in the last run-level record in /var/run/utmp - + runlevel - + shutdown Brings the system down in a secure way, signaling all processes and notifying all logged-in users - + shutdown - + telinit Tells init which run-level to change to - + telinit 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 @@ - <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 Installed scripts + Installed unit Installed directories @@ -58,6 +60,7 @@ ifup, localnet, modules, mountfs, mountvirtfs, network, rc, reboot, sendsignals, setclock, ipv4-static, swap, sysctl, sysklogd, template, udev, and udev_retry + ifupdown@.service /etc/rc.d, /etc/init.d (symbolic link), /etc/sysconfig, /lib/services, /lib/lsb (symbolic link) 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 @@ - Setting Up System Bootscripts + System Configuration and Bootscripts + - 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 @@ configuring - Part of the job of the localnet script is setting the - system's hostname. This needs to be configured in the - /etc/sysconfig/network file. + 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 /etc/hostname. - Create the /etc/sysconfig/network file and enter a + Create the /etc/hostname file and enter a hostname by running: -echo "HOSTNAME=<lfs>" > /etc/sysconfig/network +echo "<lfs>" > /etc/hostname <lfs> 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 @@ Introduction - This chapter discusses configuration files and boot scripts. - First, the general configuration files needed to set up networking are - presented. + 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. - - - - - - - - + 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. - Second, issues that affect the proper setup of devices are - discussed. + + System V - - - - - - - - + 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, init, that sets up basic programs such as + login (via getty) and runs a script. This script, + usually named rc, controls the execution of a set of + additional scripts that perform the tasks required to initialize the + system. - 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. + The init program is controlled by the + /etc/inittab file and is organized into run levels that + can be run by the user: - 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 . Searching the LFS mailing lists for - depinit, upstart, or systemd - will also offer additional information. + + 0 — halt + 1 — Single user mode + 2 — Multiuser, without networking + 3 — Full multiuser mode + 4 — User definable + 5 — Full multiuser mode with display manager + 6 — reboot + - If using an alternative style of init scripts, skip these sections. + The usual default run level is 3 or 5. - A listing of the boot scripts are found in . + Advantages + + + + Established, well understood system. + + + + Easy to customize. + + + - - - - - - - - - - - - - - - - - - - - + Disadvantages + + + 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. + - Finally, there is a brief introduction to the scripts and configuration - files used when the user logs into the system. + + 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. + - - - - - - - - + + Does not directly support advanced features like + control groups (cgroups), and per-user fair share scheduling. + + + Adding scripts requires manual, static sequencing decisions. + + + + + + + + Systemd + + 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. + + Advantages + + + + Used on many established distributions by default. + + + + There is extensive documentation. + See . + + + + 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. + + + + Implements advanced features such as control groups to + manage related processes. + + + + Maintains backward compatibility with System V programs + and scripts. + + + + Disadvantages + + + + There is a substantial learning curve. + + + + Some advanced features such as dbus or cgroups cannot be + disabled if they are not otherwise needed. + + + + Although implemented as several executable programs + the user cannot choose to implement only the portions desired. + + + + Due to the nature of using compiled programs, systemd is + more difficult to debug. + + + + 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. + + + + + + + + Selecting a Boot Method + + 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. + +cat > /usr/local/sbin/set-systemd << "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 > /usr/local/sbin/set-sysv << "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 + + Now set the desired boot system. The default is System V: + +/usr/local/sbin/set-sysv + + Changing the boot system can be done at any time by running the + appropriate script above and rebooting. + +
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. - The rules were pre-generated in the build instructions for - udev (systemd) in the last chapter. Inspect the + If using the traditional network interface names such as eth0 is desired, + generate a custom Udev rule: + +bash /lib/udev/init-net-rules.sh + + Now, inspect the /etc/udev/rules.d/70-persistent-net.rules file, to find out which name was assigned to which network device: @@ -122,11 +126,20 @@ depends on the files in /etc/sysconfig/. This directory should contain a file for each interface to be configured, such as - ifconfig.xyz, where xyz 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 ifconfig. + ifconfig.xyz, where xyz 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 + ifconfig. + + 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 ip link 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. The following command creates a sample file for the eth0 device with a static IP address: @@ -136,8 +149,8 @@ cat > ifconfig.eth0 << "EOF" 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 EOF @@ -146,7 +159,7 @@ EOF the proper setup. If the ONBOOT variable is set to yes 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 yes 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 + + Configuring the Network Interface Card at boot (systemd) + + Enabling of the network interface card configuration + in systemd is done per interface. To enable network interface card + configuration at boot, run: + +systemctl enable ifupdown@eth0 + + To disable a previously enabled network interface + card configuration at boot, run: + +systemctl disable ifupdown@eth0 + + To manually start the network interface card configuration, + run: + +systemctl start ifupdown@eth0 + + Replace eth0 with the correct network interface card + name as described on the beginning of this page. + + The network card can also be started or stopped + with the traditional ifup <device> or + ifdown <device> commands. + + + Creating the /etc/resolv.conf File 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; ]> - - + + - Configuring the setclock Script + Configuring the System Clock - - setclock - configuring + 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. - The setclock 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 - /etc/localtime file (which tells the - hwclock 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. + + System V Clock Configuration - The setclock is run via - udev 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. + + setclock + configuring - If you cannot remember whether or not the hardware clock is set to UTC, - find out by running the hwclock --localtime --show - 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 hwclock 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 - hwclock. For example, if you are currently in the MST - timezone, which is also known as GMT -0700, add seven hours to the local - time. + The setclock 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 + /etc/localtime file (which tells the + hwclock 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. - Change the value of the UTC variable below - to a value of 0 (zero) if the hardware clock - is not set to UTC time. + The setclock is run via + udev 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. - Create a new file /etc/sysconfig/clock by running - the following: + If you cannot remember whether or not the hardware clock is set to UTC, + find out by running the hwclock --localtime --show + 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 hwclock 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 + hwclock. For example, if you are currently in the MST + timezone, which is also known as GMT -0700, add seven hours to the local + time. + + Change the value of the UTC variable below + to a value of 0 (zero) if the hardware clock + is not set to UTC time. + + Create a new file /etc/sysconfig/clock by running + the following: cat > /etc/sysconfig/clock << "EOF" # Begin /etc/sysconfig/clock @@ -58,11 +65,68 @@ CLOCKPARAMS= # End /etc/sysconfig/clock EOF - A good hint explaining how to deal with time on LFS is available - at . It explains issues such as - time zones, UTC, and the TZ environment variable. + A good hint explaining how to deal with time on LFS is available + at . It explains issues such as + time zones, UTC, and the TZ environment variable. - The CLOCKPARAMS and UTC paramaters may be alternatively set - in the /etc/sysconfig/rc.site file. + The CLOCKPARAMS and UTC paramaters may be alternatively set + in the /etc/sysconfig/rc.site file. + + + + + Systemd Clock Configuration + + + clock + configuring + + This section discusses how to configure the + systemd-timedated system service, which configures + system clock and timezone. + + systemd-timedated reads + /etc/adjtime, and depending on the contents of the file, + it sets the clock to either UTC or local time. Create the + /etc/adjtime file with the following contents if your + hardware clock is set to local time: + +cat > /etc/adjtime << "EOF" +0.0 0 0.0 +0 +LOCAL +EOF + + If /etc/adjtime isn't present at first boot, + systemd-timedated will assume that hardware clock is + set to UTC and create the file using that setting. + + You can also use the timedatectl utility to tell + systemd-timedated if your hardware clock is set to + UTC or local time: + +timedatectl set-local-rtc 1 + + timedatectl can also be used to change system time and + time zone. + + To change your current system time, issue: + +timedatectl set-time YYYY:MM:DD HH:MM:SS + + Hardware clock will also be updated accordingly. + + To change your current time zone, issue: + +timedatectl set-timezone TIMEZONE + + You can get list of available time zones by running: + +timedatectl list-timezones + + Please note that timedatectl command can + be used only on a system booted with Systemd. + + 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 @@ The optional /etc/sysconfig/rc.site file contains - settings that are automatically set for each boot script. It can alternatively - set the values specified in the hostname, + settings that are automatically set for each SystemV boot script. It can + alternatively set the values specified in the hostname, console, and clock files in the /etc/sysconfig/ 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 @@ The sysklogd script invokes the - syslogd program with the -m 0 - option. This option turns off the periodic timestamp mark that + syslogd program as a part of System V initialization. The + -m 0 option turns off the periodic timestamp mark that syslogd writes to the log files every 20 minutes by default. If you want to turn on this periodic timestamp mark, edit /etc/sysconfig/rc.site 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 @@ - How Do These Bootscripts Work? + How Do the System V Bootscripts Work? Bootscripts 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. - Due to recent changes in udev, be sure to - select: + Be sure to enable or disable following features: - Device Drivers ---> + General setup ---> + [*] open by fhandle syscalls + [*] Control Group support +Processor type and features ---> + [*] Enable seccomp to safely compute untrusted bytecode +Networking support ---> + Networking options ---> + <*> The IPv6 protocol +Device Drivers ---> Generic Driver Options ---> - Maintain a devtmpfs filesystem to mount at /dev + () path to uevent helper + [*] Maintain a devtmpfs filesystem to mount at /dev + [ ] Fallback user-helper invocation for firmware loading +File systems ---> + [*] Inotify support for userspace + <*> Kernel automounter version 4 support (also supports v3) + Pseudo filesystems ---> + [*] Tmpfs POSIX Access Control Lists + [*] Tmpfs extended attributes make LANG=<host_LANG_value> LC_ALL= menuconfig diff --git a/general.ent b/general.ent index 6bcb1d001..124767608 100644 --- a/general.ent +++ b/general.ent @@ -1,7 +1,7 @@ - - + + - + diff --git a/packages.ent b/packages.ent index 8c4d0531c..04b7ef235 100644 --- a/packages.ent +++ b/packages.ent @@ -128,6 +128,14 @@ + + + + + + + + @@ -362,7 +370,7 @@ - + @@ -598,13 +606,13 @@ - - + + - + - - + + @@ -614,11 +622,11 @@ - - - - - + + + + + diff --git a/patches.ent b/patches.ent index 7ea1e19e9..8565a4ab4 100644 --- a/patches.ent +++ b/patches.ent @@ -26,6 +26,10 @@ + + + + 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 + * Makefile.lfs: Remove build procedures leaving only LFS rules + 2014-02-16 * 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 header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the 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 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 header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the 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 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 ." -#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)