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