diff options
author | Krejzi <krejzi@linuxfromscratch.org> | 2013-05-18 11:52:02 +0000 |
---|---|---|
committer | Krejzi <krejzi@linuxfromscratch.org> | 2013-05-18 11:52:02 +0000 |
commit | 01479e657a235f8fe35fd32598717fe926f08b5a (patch) | |
tree | d295857826edb02807db46bc32679c176cd09a19 | |
parent | c46ee65dc77aa6a458dd01b4b7391e8d113127c0 (diff) |
Import new bootscripts package.
git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/systemd/BOOK@10278 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
-rw-r--r-- | Makefile | 37 | ||||
-rwxr-xr-x | aux-file-data.sh | 30 | ||||
-rw-r--r-- | chapter03/packages.xml | 9 | ||||
-rwxr-xr-x | make-aux-files.sh | 11 | ||||
-rw-r--r-- | packages.ent | 8 | ||||
-rw-r--r-- | process-scripts.sh | 17 | ||||
-rw-r--r-- | systemd-units/ChangeLog | 1103 | ||||
-rw-r--r-- | systemd-units/Makefile | 40 | ||||
-rw-r--r-- | systemd-units/README | 27 | ||||
-rw-r--r-- | systemd-units/lfs/lib/services/init-functions | 800 | ||||
-rwxr-xr-x | systemd-units/lfs/lib/services/ipv4-static | 83 | ||||
-rwxr-xr-x | systemd-units/lfs/lib/services/ipv4-static-route | 92 | ||||
-rwxr-xr-x | systemd-units/lfs/sbin/ifdown | 100 | ||||
-rwxr-xr-x | systemd-units/lfs/sbin/ifup | 136 | ||||
-rw-r--r-- | systemd-units/lfs/sbin/ifup.8 | 174 | ||||
-rw-r--r-- | systemd-units/lfs/tmpfiles/nscd.conf | 2 | ||||
-rw-r--r-- | systemd-units/lfs/units/ifupdownat.service | 12 | ||||
-rw-r--r-- | systemd-units/lfs/units/nscd.service | 16 |
18 files changed, 2681 insertions, 16 deletions
@@ -39,7 +39,7 @@ lfs: validate profile-html sed -i -e "s@text/html@application/xhtml+xml@g" $$filename; \ done; - $(Q)$(MAKE) wget-list + $(Q)$(MAKE) $(BASEDIR)/wget-list $(BASEDIR)/md5sums pdf: validate @echo "Generating profiled XML for PDF..." @@ -71,12 +71,10 @@ nochunks: validate profile-html @echo "Running Tidy..." $(Q)tidy -config tidy.conf $(BASEDIR)/$(NOCHUNKS_OUTPUT) || true @echo "Running obfuscate.sh..." - $(Q)bash obfuscate.sh $(BASEDIR)/$(NOCHUNKS_OUTPUT) - $(Q)sed -i -e "s@text/html@application/xhtml+xml@g" \ - $(BASEDIR)/$(NOCHUNKS_OUTPUT) - $(Q)sed -i -e "s@../wget-list@wget-list@" \ - $(BASEDIR)/$(NOCHUNKS_OUTPUT) - $(Q)$(MAKE) wget-list + $(Q)bash obfuscate.sh $(BASEDIR)/$(NOCHUNKS_OUTPUT) + $(Q)sed -i -e "s@text/html@application/xhtml+xml@g" $(BASEDIR)/$(NOCHUNKS_OUTPUT) + $(Q)sed -i -e "s@../wget-list@wget-list@" $(BASEDIR)/$(NOCHUNKS_OUTPUT) + $(Q)$(MAKE) $(BASEDIR)/wget-list $(BASEDIR)/md5sums tmpdir: @echo "Creating and cleaning $(RENDERTMP)" @@ -85,28 +83,35 @@ tmpdir: $(Q)rm -f $(RENDERTMP)/lfs-pdf.fo validate: tmpdir + @echo "Processing bootscripts..." + $(Q)bash process-scripts.sh @echo "Validating the book..." $(Q)xmllint --nonet --noent --xinclude --postvalid \ -o $(RENDERTMP)/lfs-full.xml index.xml + $(Q)rm -f appendices/*.script + $(Q)./aux-file-data.sh $(RENDERTMP)/lfs-full.xml @echo "Validation complete." profile-html: validate @echo "Generating profiled XML for XHTML..." $(Q)xsltproc --nonet --stringparam profile.condition html \ - --output $(RENDERTMP)/lfs-html.xml stylesheets/lfs-xsl/profile.xsl \ - $(RENDERTMP)/lfs-full.xml + --output $(RENDERTMP)/lfs-html.xml stylesheets/lfs-xsl/profile.xsl \ + $(RENDERTMP)/lfs-full.xml -wget-list: +$(BASEDIR)/wget-list: stylesheets/wget-list.xsl chapter03/chapter03.xml packages.ent @echo "Generating wget list..." $(Q)mkdir -p $(BASEDIR) $(Q)xsltproc --xinclude --nonet --output $(BASEDIR)/wget-list \ - stylesheets/wget-list.xsl chapter03/chapter03.xml + stylesheets/wget-list.xsl chapter03/chapter03.xml -md5sums: +$(BASEDIR)/md5sums: stylesheets/wget-list.xsl chapter03/chapter03.xml packages.ent @echo "Generating md5sum file..." $(Q)mkdir -p $(BASEDIR) $(Q)xsltproc --xinclude --nonet --output $(BASEDIR)/md5sums \ - stylesheets/md5sum.xsl chapter03/chapter03.xml + stylesheets/md5sum.xsl chapter03/chapter03.xml + $(Q)sed -i -e \ + "s/LFS-UNITS-MD5SUM/$(shell md5sum lfs-systemd-units*.tar.bz2 | cut -d' ' -f1)/" \ + $(BASEDIR)/md5sums dump-commands: validate @echo "Dumping book commands..." @@ -114,7 +119,7 @@ dump-commands: validate stylesheets/dump-commands.xsl $(RENDERTMP)/lfs-full.xml -all: lfs nochunks pdf dump-commands md5sums +all: lfs nochunks pdf dump-commands + +.PHONY : all dump-commands lfs nochunks pdf profile-html tmpdir validate -.PHONY : all dump-commands lfs nochunks pdf profile-html tmpdir validate \ - validate wget-list maketar md5sums diff --git a/aux-file-data.sh b/aux-file-data.sh new file mode 100755 index 000000000..27d6d1be6 --- /dev/null +++ b/aux-file-data.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +if [ $# -lt 1 ] ; then + echo "This script needs the location of the xml file to update" + exit 1 +fi + +FILE=$1 + +./make-aux-files.sh + +# Bootscript data +bootscripts=$(ls lfs-systemd-units*.bz2) +base=$(basename $bootscripts .tar.bz2) +bootsize=$(ls -lk $bootscripts | cut -f5 -d" ") +bootmd5=$(md5sum $bootscripts | cut -f1 -d" ") + +# Figure intalled size of bootscripts +TOPDIR=$(pwd) +TMP_DIR=$(mktemp -d /tmp/lfsbootfiles.XXXXXX) +pushd $TMP_DIR > /dev/null +tar -xf $TOPDIR/$bootscripts +bootinstallsize=$(du -sk $TMP_DIR | cut -f1) +popd > /dev/null +rm -rf $TMP_DIR + +sed -i -e s/LFS-UNITS-SIZE/$bootsize/ \ + -e s/LFS-UNITS-INSTALL-KB/$bootinstallsize/ \ + -e s/LFS-UNITS-MD5SUM/$bootmd5/ $FILE + diff --git a/chapter03/packages.xml b/chapter03/packages.xml index 629e024b2..0a1f23442 100644 --- a/chapter03/packages.xml +++ b/chapter03/packages.xml @@ -357,6 +357,15 @@ </varlistentry> <varlistentry> + <term>LFS-Systemd-Units (&lfs-systemd-units-version;) - <token>&lfs-systemd-units-size;</token>:</term> + <listitem> + <para>Home page: <ulink url="&lfs-systemd-units-home;"/></para> + <para>Download: <ulink url="&lfs-systemd-units-url;"/></para> + <para>MD5 sum: <literal>&lfs-systemd-units-md5;</literal></para> + </listitem> + </varlistentry> + + <varlistentry> <term>Libcap (&libcap-version;) - <token>&libcap-size;</token>:</term> <listitem> <para>Home page: <ulink url="&libcap-home;"/></para> diff --git a/make-aux-files.sh b/make-aux-files.sh new file mode 100755 index 000000000..64151b839 --- /dev/null +++ b/make-aux-files.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +rm -f lfs-systemd-units*.tar.bz2 + +# Get base file name and move bootscripts directory to that name +version=`grep "ENTITY lfs-systemd-units-version" packages.ent |cut -d'"' -f2` +mv systemd-units lfs-systemd-units-$version + +# Create the tarball and clean up +tar -cjf lfs-systemd-units-$version.tar.bz2 --exclude .svn lfs-systemd-units-$version +mv lfs-systemd-units-$version systemd-units diff --git a/packages.ent b/packages.ent index f139e6ba6..9a76811ed 100644 --- a/packages.ent +++ b/packages.ent @@ -350,6 +350,14 @@ <!ENTITY less-ch6-du "3.6 MB"> <!ENTITY less-ch6-sbu "less than 0.1 SBU"> +<!ENTITY lfs-systemd-units-version "20130518"> <!-- Scripts depend on this format --> +<!ENTITY lfs-systemd-units-size "LFS-UNITS-SIZE KB"> <!-- Updated in Makefile --> +<!ENTITY lfs-systemd-units-url "&downloads-root;lfs-systemd-units-&lfs-systemd-units-version;.tar.bz2"> +<!ENTITY lfs-systemd-units-md5 "LFS-UNITS-MD5SUM"> <!-- Updated in Makefile --> +<!ENTITY lfs-systemd-units-home " "> +<!ENTITY lfs-systemd-units-ch7-du "LFS-UNITS-INSTALL-KB KB"> <!-- Updated in Makefile --> +<!ENTITY lfs-systemd-units-ch7-sbu "less than 0.1 SBU"> + <!ENTITY libcap-version "2.22"> <!ENTITY libcap-size "66 KB"> <!ENTITY libcap-url "http://ftp.de.debian.org/debian/pool/main/libc/libcap2/libcap2_&libcap-version;.orig.tar.gz"> diff --git a/process-scripts.sh b/process-scripts.sh new file mode 100644 index 000000000..046e19814 --- /dev/null +++ b/process-scripts.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Boot scripts +for s in systemd-units/lfs/lib/services/* \ + systemd-units/lfs/sbin/* \ + systemd-units/lfs/tmpfiles/* \ + systemd-units/lfs/units/* +do + script=$(basename $s) + + # Skip directories + [ $script == 'network-devices' ] && continue + + sed -e 's/\&/\&\;/g' -e 's/</\<\;/g' -e 's/>/\>\;/g' \ + -e "s/'/\&apos\;/g" -e 's/"/\"\;/g' -e 's/\t/ /g' \ + $s > appendices/${script}.script +done diff --git a/systemd-units/ChangeLog b/systemd-units/ChangeLog new file mode 100644 index 000000000..cdcc611d4 --- /dev/null +++ b/systemd-units/ChangeLog @@ -0,0 +1,1103 @@ +2013-05-18 Armin K. <krejzi@email.com> + * Remove LFS specific scripts from Systemd branch. + +2013-05-15 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Remove unneeded options and commands from mountfs and + mountvirtfs when mtab is a symlink to /proc/self/mounts + +2013-05-11 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Make sure the root fs is mounted read only in mountfs + before halting + +2013-01-24 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Remove local attribue of some variables for Bourne + shell compatability + * Specify /bin/echo in commands with -e switch for + Bourne shell compatability + +2012-10-13 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Remove unneeded sleep in killproc + * Add option for verbose fsck + * Flatten directory structure of tarball + * Remove /fastboot or /forcecheck if set + +2012-09-05 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Add udevadm trigger --action=change line to udev script + to support initramfs better + +2012-08-24 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Read /etc/sysconfig/console when needed in rc + +2012-06-17 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Only mount /run in mountvirtfs if it is not already mounted + (from an initrd). + * Force the /dev/shm->/run/shm symlink + * Skip making LVM virtual groups unavailable at shutdown + because the / or swap partitions may be still in use. + +2012-05-30 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Copy all entries in /lib/udev/devices to /dev in mounvirtfs + +2012-05-24 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Remove mkdir from mountvirtfs because fs is read only + +2012-04-09 Bruce Dubbs <bdubbs@linuxfromscratch.org> + + * General update of network scripts ifup/ifdown and services + ** Add if_true utility function to init_functions + ** Change variable INTERFACES to COMPONENT_INTERFACES for bridge interface + ** ifdown now only uses the first SERVICE + ** Updated ifup.8 to reflect current usage + ** ifup + *** Move interface up logic to after service scripts. Eliminates the + need for the LINK_CHECK variable. + *** Sets the GATEWAY if the variable is set + *** Add MTU logic to ifup + +2012-01-22 Matt Burgess <matthew@linuxfromscratch.org> + + * lfs/init.d/udev: Change udevd path following upstream changes to its + location + +2011-12-23 Matt Burgess <matthew@linuxfromscratch.org> + + * lfs/init.d/mountvirtfs: Correct permissions on /run/shm + +2011-11-28 DJ Lucas <dj@linuxfromscratch.org> + + * lfs/init.d/mountfs: Add '-t nosysfs' to umount command + * lfs/init.d/mountvirtfs: remove unneeded spaces in output + * lfs/init.d/rc: Correct double interactive prompt and set prompt defaults + * lfs/init.d/setclock: Remove screen output from start case (udev) + * lfs/init.d/udev{,_retry}: Restore output to screen and log + * lfs/sbin/ifup: Change "..." to ": " (not awaiting additional output) + +2011-11-14 Bruce Dubbs <bdubbs@linuxfromscratch.org> + + * The following are from suggestions by DJ Lucas + ** General cleanup of scripts + ** Move consolelog function to rc + ** Clean up boot logging functions + ** Fix interactive prompt between run level S and target run level + +2011-10-06 Bryan Kadzban <bryan@linuxfromscratch.org> + + * Add configuration for udev_retry, and remove --type=failed (which does + not work with recent udev versions anyway, since no events can possibly + trigger it). Start with just the "rtc" subsystem. BLFS should eventually + add "sound" to this file, and perhaps others. + +2011-09-18 + * Review and update of changes made in previous change. + ** Rename /etc/sysconfig/init_params to /etc/sysconfig/rc.site. + ** Move network services to /lib/services. + ** Move init-functions to /lib/lsb. + *** /lib/lsb is a symlink to /lib/services. + * Create convenience symlink /etc/init.d->/etc/rc.d/init.d. + * Add help and man pages to upup/ifdown. + * Append /run/var/bootlog to /var/log/boot.log at the end of + the boot sequence. + * Add capabiltiy to step through the boot scripts at boot time + * Optionally allow environment variables in sysconfig directory's + console, network, and clock files to be placed in rc.site. + * Add an optional FASTBOOT parameter to set /fastboot when rebooting. + +2011-07-14 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * Major rewrite of all LFS scripts + ** Move ifup/ifdown to /sbin + ** Move functions and network services to /lib/boot + ** Remove contrib directory + ** Move all READ commands to functions and allow the user to specify + HEADLESS=1 to skip READ commands + ** Add /etc/sysconfig/init_params for adding environmental parameters + to all functions used in bootscripts + ** Move network configuration to /etc/sysconfig/ifconfig.*. The + ifconfig files can have any extension. Use IFACE parameter to + specify the target network interface within the configuration file. + ** Adds an optional parameter, SKIPTMPCLEAN, to skip the removal of + files in /tmp at bootup. Specify the variable in + /etc/sysconfig/init_params. + +2011-05-31 DJ Lucas <dj@linuxfromscratch.org> + * lfs/init.d/udev: Add multiple udev triggers for both subsystems and + devices per upstream recommendation. + +2011-04-19 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * lfs/init.d/mountvirtfs: Add creation of /run/{var,lock,shm}. + * lfs/init.d/udev: Add /dev/shm -> /run/shm symlink. + +2011-04-18 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * lfs/init.d/mountvirtfs: Change name from mountkernfs to mountvirtfs. + Add mounting of /run filesystem. + +2010-05-29 Matt Burgess <matthew@linuxfromscratch.org> + * lfs/init.d/udev: Only copy /lib/udev/devices/null, as Udev >= 155 copies + devices from /lib/udev/devices to /dev itself. Udevd still needs /dev/null + present before starting up though. + +2010-04-20 Bryan Kadzban <bryan@linuxfromscratch.org> + * lfs/init.d/udev, lfs/init.d/udev_retry: Add --action=add, to handle udev + version 152 and newer, which send "change" events by default in udevtrigger + now. + +2010-01-24 Matthew Burgess <matthew@linuxfromscratch.org> + * lfs/init.d/udev: Check to see if /dev is already mounted, as it may be if + under an initramfs environment. See ticket #2550. + +2009-08-14 Bryan Kadzban <bryan@linuxfromscratch.org> + * lfs/init.d/udev_retry: Use "udevadm trigger --type=failed", which + apparently replaced "--retry-failed" some time ago. "--retry-failed" is + removed in udev-146. + +2009-01-02 Bruce Dubbs <bdubbs@linuxfromscratch.org> + * lfs/init.d/functions: + * lfs/sysconfig/network-devices/ifup: + Updated line widths to accommodate pdf generation in both the above + files. + +2008-10-27 DJ Lucas <dj@linuxfromscratch.org> + * lfs/init.d/cleanfs: Removed '! -newer /proc' from find commands in + check for stale files in /var/lock and /var/run. + * Makefile: Reversed cleanfs and udev_retry scripts so that cleanfs + runs immediately after mountfs. + +2008-10-26 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/functions: Remove stale pid files when encountered + in loadproc/killproc/reloadproc. When the bootscript specifies + a pid file to use with the "-p pidfile" argument, *proc + functions previously bailed out when the referenced file + contains an invalid pid. + +2008-10-23 DJ Lucas <dj@linuxfromscratch.org> + * lfs/init.d/console: Removed BROKEN_COMPOSE as kernel patch has + been accepted upstream. + +2008-05-21 Bryan Kadzban <bryan@linuxfromscratch.org> + * lfs/init.d/udev, lfs/init.d/udev_retry: Use new udevadm program. + +2007-08-20 DJ Lucas <dj@linuxfromscratch.org> + * lfs/init.d/setclock: Added missing 'stop' argument to usage text + +2007-08-13 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/checkfs: Don't suppress error messages from the screen. + +2007-07-18 Dan Nicholson <dnicholson@linuxfromscratch.org> + * Makefile, lfs/init.d/consolelog: New bootscript controlling the + kernel log level on the console. This is controlled by the LOGLEVEL + variable in /etc/sysconfig/console. + * lfs/init.d/modules: Remove the log level handling since this is + done in the consolelog script now. + * lfs/init.d/modules: Clean up the script by removing the file + descriptor duplication and instead just redirecting + /etc/sysconfig/modules to the input of the while loop. + +2007-06-16 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/mountfs, lfs/init.d/mountkernfs, lfs/init.d/setclock, + lfs/init.d/modules, lfs/sysconfig/network-devices/if{up,down}: + Don't suppress stderr during bootscripts unless necessary. This + would prevent potentially critical messages from reaching the screen. + +2007-04-24 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/functions: When killproc is executed, it checks that + the process is still running, sleeps if it is, then checks again. + The sleep is 1 second in between checks. By sleeping for 0.1 seconds + in between checks, killproc is much faster as it's wasting much + less time sleeping in the normal case that the process has died + after a short delay. + +2007-04-16 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/functions: Redirect stderr when using kill to suppress + output. + * lfs/init.d/functions: killproc() was not handling the case where a + pidfile is passed to the function. The logic with the signal to be + used was causing issues with the handling of pidfiles. This has been + fixes, and now killproc() will recheck the process if the signal + was TERM (the default) or KILL. + * lfs/init.d/functions: statusproc() has been changed to use pidofproc() + instead of the deprecated getpids(). Additionally, it now accepts + the -p argument to specify a pidfile. + * lfs/init.d/functions: Currently, statusproc() always returns + successfully, and the only way to know if the process is running + is to parse the output. This changes statusproc() to return the + status of pidofproc(), which will return unsuccessfully if the + requested process is not running. + * lfs/init.d/functions: Changed reloadproc() to use pidofproc() and + respect the -p argument for pidfiles. + * lfs/init.d/sysklogd: Remove a useless argument to reloadproc(). + +2007-03-13 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/functions: If pidofproc() is passed the -p argument + it can bomb testing a null variable with an integer expression. + +2007-02-22 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/mountfs, lfs/init.d/console, lfs/init.d/setclock, + lfs/init.d/mountkernfs: &> redirection is not supported in POSIX. + Fortunately, it's equivalent to >word 2>&1 according to bash(1). + +2007-02-22 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/console: POSIX says that shells only need to trap on + signals. Trapping on ERR isn't always supported. Conditionals have + been added to set the $failed variable in spots that seemed + appropriate for checking errors. + +2007-02-22 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/functions: Use arithmetic expansion and string length, + which are both mandated by POSIX, rather than spawning two processes + every time boot_mesg() is called. + +2007-02-22 Dan Nicholson <dnicholson@linuxfromscratch.org> + * lfs/init.d/functions: In order to provide an `echo' which provides + handles the -e and -n options for all POSIX shells, a feature test + is added which stores its result in $ECHO. /bin/echo will be used + if the default echo is not capable. Changed the existing functions + to reference $ECHO when needed. + * lfs/init.d/console: Use $ECHO when -en is needed. + +2007-02-03 Bryan Kadzban <bryan@linuxfromscratch.org> + * ChangeLog: Rename from CHANGELOG, start using GNU style entries. + + * Makefile: Move setclock before checkfs. Fixes #1948. + +2006-11-25 Bryan Kadzban <bryan@linuxfromscratch.org> + * lfs/init.d/udev_retry: Copy Debian's "copy generated rules" initscript + code, to clean up when the rule_generator scripts run before / is + writable. (Since the rule_generator code is from Debian, I assume their + cleanup code is appropriate.) + +2006-10-15 Bryan Kadzban <bryan@linuxfromscratch.org> + * lfs/init.d/udev_retry: Fix to work with udev >= 099. + +n/a - June 2, 2006 + * Removed console config file and makefile targets. + * Removed references to /dev/bug and bugreport in udevand + udev_retry bootscripts. (DJ Lucas) + +n/a - April 17, 2006 + * Updated udev script to use the new udevsettle program. + * Added udev_retry script for systems that have /usr on a different + partition or for some other reason fail the initial replay. (Archaic) + +n/a - April 15, 2006 + * Cleaned up contrib directory. Removed: contrib/init.d, + contrib/enhanced, contrib/livecd, contrib/hotplug, and raq2 + patch. (DJ Lucas) + +n/a - April 14, 2006 + * Merged changes from udev_update branch (DJ Lucas) + * Replaced a return with an exit and reversed comment changes in + udev bootscript. (Dan Nicholson) + * Replaced walk_sysfs function in udev bootscript with new udevtrigger + program and move wait_for_uevents function inline. (DJ Lucas) + * Removed extra evaluate_retval in udev bootscript. (Ken Moffat) + * Wait for uevents to be processed in the udev script. See ticket + #1720 for details. (Matthew Burgess) + +n/a - March 21, 2006 + * Removed old references to boot_log function and arguments passed + to boot_mesg_flush in echo_* functions. (DJ Lucas) + +n/a - March 10, 2006 + * Moved src argument to ipv4-static-route service script and + removed from ipv4-static service script. (DJ Lucas) + +n/a - March 8. 2006 + * Correct sourced path in checkfs script. (Matthew Burgess) + +n/a - December 31, 2005 + * Replaced /etc/rc.d with ${rc_base} in checkfs. (Vincent Fretin) + +n/a - December 24, 2005 + * Added UTF-8 support to console script. (Alexander E. Patrakov) + +n/a - September 11, 2005 + * Removed text wraping and boot logging. + * Changed killproc to use warning if not running + * Changed 'print_status warning' to use old style output + * Fixed display error with LSB init-functions script + * Made above killproc/print_status changes in enhanced + bootscripts. + * Made logger service configurable in enhanced + bootscripts. (DJ Lucas) + +n/a - August 14, 2005 + * Added -s flag to pidofproc() for backwards + compatibility (DJ Lucas) + * Fixed erronous values returned by pidofproc() which + broke the functionality of statusproc (DJ Lucas) + +n/a - July 1, 2005 + * Changed a == to a = in lfs/init.d/functions, in the boot_mesg + function for ash compliancy (Nathan Coulson) + +n/a - June 26, 2005 + * Removed consolelog script from contrib + * Updated interactive rc script in contrib and added + README.rc-Interactive, added install target to the + Makefile. (DJ Lucas) + +3.2.2 - May 29, 2005 + * Tagged as 3.2.2 (Nathan Coulson) + +n/a - May 26, 2005 + * Added minimal target for cross-lfs book (Jim Gifford) + * Fixed raq2 patch (Jim Gifford) + +3.2.1 - May 1, 2005 + * Tagged as 3.2.1 (Nathan Coulson) + +n/a - April 17, 2005 + * removed touch from hotplug bootscript (Matthew Burgess) + * moved commands around in localnet bootscript (Andrew Benton) + +3.2.0 - March 30, 2005 + * Changed from syslog-ng to sysklogd (Archaic) + * Temporairly changed loadproc to return 0 if the program is + already running (Nathan Coulson) + * Fixed (by reverting) ifup/ifdown/network (Nathan Coulson), + Reported by Jim Gifford + * Fixed network up/down along with adding support of ONHOTPLUG + * Tagged as 3.2.0 + +n/a - March 19, 2005 + * Updated RaQ2 patch (Jim Gifford) + * Added net.agent for Hotplug of Network adapters in contrib + (Jim Gifford) + +n/a - March 16, 2005 + * Reverted the change from loadproc to start_daemon, + Moved compatibility code into one single function. + (Nathan Coulson) + * Readded the ONHOTPLUG option for ifup/ifdown (Nathan Coulson) + * Fixed killproc's output + +n/a - March 01, 2005 + * Added CHECK_LINK variable in ifconfig.*/*, so if the + interface does not exist, it will not fail. + (Nathan Coulson) + +n/a - February 19, 2005 + * Added evaluate_retval to the end of loadproc and killproc. + lsb does not say that killproc should print [ OK ], + but required for compatibility. (Nathan Coulson) + +n/a - February 9, 2005 + * Accidentally mounted /dev with 775 instead of 755, fixed + (Reported by Alexander E. Patrakov) + +n/a - February 9, 2005 + * Bugfix for /dev, now mounted with 755 permission + +n/a - February 8, 2005 + * changed pidof, so it doesn't check the process id + of running bootscripts, and to process shell scripts + (Nathan Coulson) + +n/a - February 6, 2005 + * Updated main functions file with lsb functions file + Should now be LSB compliant (Nathan Coulson) + +n/a - January 10, 2005 + * Moved ONBOOT check back to network (Nathan Coulson) + * Removed ONHOTPLUG check (Nathan Coulson) + +n/a - January 6, 2005 + * fixed mountkernfs output (Nathan Coulson) + * reverted mountfs fakemounting (Nathan Coulson) + +n/a - January 5, 2005 + * Attempted to simplify network bootup files (Nathan Coulson) + * Modified mountkernfs to use mountpoint (Nathan Coulson) + * Assuming sysfs is always mounted (Nathan Coulson) + * Moved fakemount to below mounting (Nathan Coulson) + * Removed -t noramfs from umount, as we now use tmpfs (Nathan Coulson) + * moved sysctl from mountkernfs to sysctl (Nathan Coulson) + * Added -q to sysctl (Nathan Coulson) + +n/a - January 2, 2005 + * Fixed statusproc output. (DJ Lucas) + +3.1.0 - December 31, 2004 + * fixed textoutput + * Tagged as 3.1.0 + +n/a - December 30, 2004 + * Fixed name of LSB Functions file + * Changed boot_mesg to act like echo instead of echo -n, boot_mesg now + takes the -n argument if you do not wish to goto the next line + +3.0.1 - December 25, 2004 + * Released as 3.0.1 + +n/a - December 20, 2004 + * Cleaned up header. + * Added RaQ2 Patch + +n/a - December 16, 2004 + * Fixed a text typo in udev, tmpfs instead of ramfs (Steve Crosby) + +n/a - December 14, 2004 + * Fixed a warning with find in cleanfs + + +3.0 - December 8, 2004 + +n/a - December 5, 2004 + * Moved bootlog to use local2 service to avoide conflict with + dhcpcd (DJ Lucas) + +3.0-rc1 - December 1, 2004 + * rc-Interactive added (DJ Lucas) + * rc-Interactive moved to contrib (Nathan Coulson) + +n/a - November 27, 2004 + * Moved bootlog to use local1 to avoid conflict with ppd (DJ Lucas) + +n/a - November 25, 2004 + * Added consolelog to contrib/sysconfig (DJ Lucas) + * Rewrite of line wraping in boot_mesg and various fixes + related to boot_mesg changes (DJ Lucas, Alexander Patrakov) + * syslog-ng is now installed by default (Jeremy Utley) + * hotplug is now installed by default (Jeremy Utley) + * udev now uses /sbin/hotplug as the default hotplug handler + (Nathan Coulson) + * udev now mounts a tmpfs instead of a ramfs onto /dev, + as suggested by Greg K-H (Nathan Coulson) + * Created contrib/lsb, and added a LSB compliant functions file + (Nathan Coulson, and Alexander Patrakov) + * Modified find [requires find 4.2.3+] (Matthew Burgess) + +n/a - November 20, 2004 + * Modifed modules script to return to previous kernel message + level (DJ Lucas) + +n/a - November 02, 2004 + * Added sysctl -p to mountkernfs (Matthew Burgess, DJ Lucas) + +n/a - October 07, 2004 + * statusproc modified not to send data to bootlog (Nathan Coulson) + * Fixed halt commands in checkfs and udev (James Robertson) + +n/a - October 04, 2004 + * Fixes to commit on 2004/09/30 (James Robertson) + * Revert a few changes until later (Nathan Coulson) + * Added a warning about switching from a 8bit font + to a 9bit font (Alexander Patrakov) + +n/a - September 30, 2004 + * Finished off boot_mesg() (James Robertson) + * Standardized all scripts to same variable format and other + internal sh/bash function calls (James Robertson) + * Fully implemented boot_mesg across all scripts in sysconfig + and init.d (James Robertson) + +n/a - September 26, 2004 + * Added BOOTMESG_PREFIX variable, so users can optionally set a + prefix for boot messages (James Robertson) + * Fixed localnet status, to use ip instead of ifconfig (Jim Gifford) + * Added consolelog to contrib (DJ Lucas) + * loadproc and killproc can have the -nomsg parameter to avoid + calling evaluate_retval or print_status (Jim Gifford) + * boot_mesg no longer explicitly adds a \n onto end of lines + * Added a function called boot_mesg_flush, which can + dump the BOOTMESG to the bootlog. This helps avoid making + everything have to end in OK/WARN/FAIL (Nathan Coulson) + +n/a - September 24, 2004 + * Removed /dev/udev.tdb test + +n/a - September 23, 2004 + * Fixed boot_log so it output's $@'s contents, not @$ + * Added support for colors in boot_mesg (James Robertson) + * Modified udev's error checking + * Modified hotplug's error checking + * Converted checkfs's error handling to use boot_mesg with + color support + * Added $INFO color to functions (James Robertson) + +n/a - September 22, 2004 + * Removed the dependency on wl by replacing it with grep (Bryan Kadzban) + * Fixed getpids, to remove unused pids obtained from $PIDFILE + * Removed ${NORMAL} from echo "$BOOTMESG" in functions, and removed + space added to each additional sentence tacked onto BOOTMESG + * boot_mesg now handles \n's properly, and does not dimish the size of + the next line (James Robertson) + * boot_log has been added. The echo_ functions commit the log, + and then clear the BOOTMSG variable + * All scriptes have been converted to use boot_mesg + +n/a - September 21, 2004 + * boot_mesg has been enhanced. Subsequent calls will overwrite + previous text, and it will wrap text basedupon the variable ${WCOL}. + (James Robertson) + * Fixed mtu optional service typo (Kevin P Fleming) + * Added SOURCE variable to ipv4-static-route (Kevin P Fleming) + +n/a - September 16, 2004 + * nework interfaces are now brought down in reverse order + +n/a - September 15, 2004 + * Added blue bracket, from dj's 3.0-pre1 bootscript package + [echo_failure, echo_warning, and echo_ok] + * Added a new function called boot_mesg, meant to replace the echo + command. + This will give us the posibility of doing logging at a later date + * Do not set COLUMNS if COLUMNS is already set + * Modified getpids, loadproc, killproc, reloadproc, and statusproc as + done by DJ + +2.2.3 - September 04, 2004 + * Tagged as 2.2.3 + +n/a - September 04, 2004 + * Added new script to contrib for syslog-ng, which is now part of + LFS-Unstable, and a new Makefile target install-syslog-ng which + removes the sysklogd links, and replaces them with syslog-ng (JU) + +2.2.2 - August 11, 2004 + * Tagged as 2.2.2 + +n/a - August 7, 2004 + * Added missing error redirect (/dev/null) in getpids. (DJ) + +n/a - August 4, 2004 + * Added MODE, DIRMODE, and CONFMODE variables to the makefile + to allow permissions to be set at install. (DJ) + +n/a - July 31, 2004 + + * Moved PIDFILE check to getpids and removed arguments from + killproc and reloadproc. Signals are now set at beginning of + funtcions script with KILLDELAY. (DJ) + * Added a optional service script which can set the MTU for a given + interface + +n/a - July 21, 2004 + + * Committed DJ Lucas's patch for the killproc function. It no + longer requires arguments if PIDFILE is set + * added --backup to all sysconfig configuration files, so they are not + replaced on a make install + +n/a - July 13, 2004 + + * Added the PEER variable to the ifconfig.*/* file, done by + Kevin P. Fleming + +2.2.1 - July 12, 2004 + + * Tagged as 2.2.1 + +n/a - July 12, 2004 + + * Hotplug was moved from rcsysinit.d to rc{1,2,3,4,5} to help bring + up/down network interfaces started by hotplug. This has been revoked + at this time + * Networking interfaces are now brought down in reverse order + * Moved the ONBOOT check to within ifup/ifdown, so we can bring up/down + the interfaces at boottime/shutdown properly, done by Kevin P. Fleming + * Use PREFIX instead of NETMASK for adding addresses in ipv4-static, + done by Kevin P. Fleming + * Fix reversal of services inside ifconfig.* directories in ifdown, + done by Kevin P. Fleming + * Add ipv4-static-route service, supplied by Kevin P. Fleming + +2.2.0 - July 12, 2004 + + * Tagged as 2.2.0 + +n/a - July 11, 2004 + + * Minor script output changes + * Repaired networking scripts broken in previous commits + +n/a - July 10, 2004 + + * We now use the ip program [from iproute2] instead of ipconfig + [net-tools] to bring up/down ethernet interfaces, and local + connections, submitted by Jim Gifford + * Removed gateway backward compatibility + * Removed ifup-eth0 ifdown-eth0 compatibility + * Removed the "assume SERVICE=static if SERVICE is unset" compatibility + * Pass the IFCONFIG environmental variable to services, so they can + locate the file with the parameters they must read + * Rename static to ipv4-static + * Stage1 for network configuration via directories, ifup and ifdown + modified, and the static service modified + * Stage2 for network configuration via directories complete, network was + modified to check within subdirectories for ONBOOT=yes. Final Stage + +n/a - July 8, 2004 + + * Changed iso01 to lat1 everywhere in /etc/sysconfig/console. This + fixes the problem with line-drawing characters. + +n/a - July 7, 2004 + + * Halted the computer, if unable to mount /dev as a ramfs + +n/a - July 6, 2004 + + * Moved the hotplug bootscript back to contrib, it will not be used in + the testing branch of the lfs book at this time + +n/a - July 4, 2004 + + * Modified ifup and ifdown to be hotplug aware + +n/a - July 3, 2004 + + * Change the check for ONBOOT into a source within a subshell + +n/a - July 1, 2004 + + * Moved hotplug start to runlevels 3-5 from sysinit + +n/a - June 30, 2004 + + * Pass -depth in cleanfs + +n/a - June 29, 2004 + + * Made the grep for ONBOOT in the network script more exact + +2.1.2 - June 27, 2004 + + * Install the automatic module loading script by default + * Tagged as 2.1.2 + +n/a - June 26, 2004 + + * Fixed font for UK in /etc/sysconfig/console + +n/a - June 23, 2004 + + * Fixed a typo in the hotplug installation procedure + +n/a - June 21, 2004 + + * Re-ordered the "mount" and "echo" commands in the udev script, to + prevent a possible race + * Converted the udev script to use udevsend/udevd + * Moved removal of /fastboot and /forcefsck to just after the root fs + becomes writable, and dropped the removal of /etc/nologin + * Cleaned and tweaked both the output and actions of cleanfs + * Removed the disabling of hotplug from sendsignals + * Removed anything that might call "rmmod" in hotplug, since rmmod is + notoriously troublesome in the 2.6.x kernels, and call it with the + stop argument from runlevels 0 and 6 + * Fixed previous modifications to the udev and cleanfs scripts + +n/a - June 20, 2004 + + * Rolled back to the /dev/.udev.tdb check from 2.1.1, since the new + one doesn't work as well, and the bug that caused it to change is + now fixed + +n/a - June 18, 2004 + + * Updated sysconfig/console + * Fixed disabling hotplug in sendsignals + * hotplug is now installed by default + +n/a - June 15, 2004 + + * Reset /proc/sys/kernel/hotplug to /bin/true when running the "stop" + command for hotplug + * Cleaned the output of the mountkernfs script + * Don't output "Creating files and directories" when it's a lie + +n/a - June 8, 2004 + + * Changed the location the optional module script is installed to + /etc/rc.d/rcsysinit.d/S05modules. + +n/a - June 4, 2004 + + * Added a echo to the > /proc/sys/kernel/hotplug line, as > did not + clear it + +n/a - June 3, 2004 + + * Added '> /proc/sys/kernel/hotplug' to sendsignals, to disable hotplug + events, which may start up new daemons + * Added elementry bootup logging support. If it can write to + /var/log/boot.log, it will + * Removed logging support, it kept / from being remounted ro + +n/a - June 2, 2004 + + * Reorganize what goes on in the udev script + * Reorganize what goes on in the hotplug script + * Moved setting /sbin/hotplug as the default hotplug manager into the + hotplug script + +n/a - June 1, 2004 + + * Removed usbfs from mountkernfs, and mountfs + * Edited the udev script, so it'll always set /proc/sys/kernel/hotplug + +n/a - May 24, 2004 + + * Added more example keymaps and font settings to /etc/sysconfig/console + * Install the /etc/sysconfig/console file by default + +n/a - May 23, 2004 + + * Changed the symlink for the optional modules script + * Removed depmod from the optional modules script + +n/a - May 20, 2004 + + * Removed the random script. There is not a strong enough case for + adding it to the lfs-bootscripts. + +n/a - May 19, 2004 + + * Added the random bootscript from blfs-bootscripts + +2.1.1 - May 18, 2004 + + * Fixed installation of modules configuration + * Tagged as 2.1.1 + +n/a - May 16, 2004 + + * Added sysklogd configuration file + * Added example /etc/sysconfig/console file + * Do not attempt to populate /dev if that directory has already been + set up earlier in bootup (such as on initramfs/initrd) + * Prevent excessive kernel output once klogd starts + * Added hotplug script + +n/a - May 15, 2004 + + * Namespace rework (enumeration of scripts is now cleaner) + * Removed directories: blfs, contrib/new-boot-0.2, contrib/rlv + +n/a - May 13, 2004 + + * Repaired the console script + * Added a check to cleanfs [createfiles], to make sure that we have + a valid devicetype, if we have type=dev + +n/a - May 11, 2004 + + * Added usbfs to mountkernfs and mountfs + +n/a - May 6, 2004 + + * Don't use loadproc in localnet, it's not meant for that + * Quote tests of $PIDFILE, so that things behave when it's empty + * Removed unused kill -0 from killproc + +2.1.0 - May 4, 2004 + + * Update to the console script, prevent install of the console script + * Chgrp /var/run/utmp to group utmp if it exists. + * Moved udev from contrib to lfs + * Moved GATEWAY setup from /etc/rc.d/init.d/network to + /etc/sysconfig/network-devices/services/static + * Use the contents of $PIDFILE, if it is set in the script + * Tagged as 2.1.0. + +n/a - April 30, 2004 + + * Moved the loadkeys script to console, and added setfont. Contributed + by Alexander E. Patrakov + +2.0.5 - April 29, 2004 + + * Added the heimdal init script. + * Tagged as 2.0.5 + +2.0.4 - April 27, 2004 + + * Tagged as 2.0.4 + +n/a - April 24, 2004 + + * Added a example script for /etc/sysconfig/createfiles + * Added a check for /sys before mounting sysfs + * Added -t noramfs to umount on /etc/rc.d/init.d/mountfs. + This will prevent /dev from being unmounted, if /proc/mounts + is symlinked to /etc/mtab + +n/a - April 18, 2004 + + * Small fix to a if statement in netfs + +n/a - April 17, 2004 + + * Added the lisa bootscript, lisa is part of the KDE Network package + * Add proper error checking to the mountfs script when writing out mtab + * Add more comments to the udev script, and conditionalize various + things that should've been done this way in the first place + * Include a template module auto-loading configuration file instead of + having syntax comments in the script itself + +n/a - April 12, 2004 + + * Added a automatic modules loading script to the contrib directory + submitted by Zack + * Edited mountkernfs, so that if you can mount sysfs on /sys, it will + be mounted at boottime. Should not affect 2.4 systems + * Since all entries are added to /etc/mtab, we should not require + the NO_FS variable. It has been removed from mountfs + * Added the udev script into the contrib directory, submitted by Zack + +2.0.3 - April 8, 2004 + + * Updated cleanfs, so it can create devices. Supplied by Zack + * Tagged as 2.0.3 + +n/a - March 31, 2004 + + * Changed "Press Enter" on unknown error to white + * Moved S10swap to S20swap. When udev is added, it has to be + ran before swap is setup + +n/a - March 29, 2004 + + * Fixed the rc5.d symlink for ntp so it creates S26ntp instead + of S26npt + * Moved S20mountkernfs to S00mountkernfs in rcsysinit.d. Will help in + the addition of udev in the future. + +n/a - March 27, 2004 + + * Changed gdm path from hardcoded to program name. There are 2 spots + gnome can be installed + +n/a - March 26, 2004 + + * Updated fam daemon script. It now uses the famd daemon instead of fam + +n/a - March 24, 2004 + + * Removed mount command out of nfs. the netfs script already handles + this + +2.0.2 - March 24, 2004 + + * Edited cleanfs to solve a problem. [if /tmp does not exist, it + could run the find command on the root filesystem] + * Tagged as 2.0.2 + +2.0.1 - March 24, 2004 + + * Found typo in BLFS MySQL Script. + * Tagged as 2.0.1 + +2.0.0 - March 23, 2004 + + * Tagged as 2.0.0, no changes from 2.0.0-pre2 + +2.0.0-pre2 - March 23, 2004 + + * Cleaned the /tmp directory on bootup. find command supplied by Zack + * Added a script which can automatically create files and directories + on startup. [Handles files/directories, permissions, and user/group]. + Created by Zack + * Added blfs/init.d/fam script + * Tagged as 2.0.0-pre2 + +n/a - March 20, 2004 + + * Added create-service-dir target and removed from create-dirs + * Changed service script install targets to use + create-service-dir + * Added check for dhcpcd service script for stale pid file + Suggested by Jeremy + * Added ifconfig to ipx service script for hosting device not up + +n/a - March 19, 2004 + + * Added support for ETCDIR, and DESTDIR in the Makefile, + compliments of Tushar + * Renamed mountproc to mountkernfs + * Updated the README file + * Coloured the print_error_message in functions red + * added stop to the setclock script + * changed echo > to > in cleanfs, suggested by winkie + * BLFS Scripts Added, collected by Zack + * Edited killproc, so it checks for running pids, rather then + the completion of the above kill command. Suggested by Zack + * Added network services found in blfs, removed adsl. Submitted by + DJ. + +1.99.4 - March 17, 2004 + + * Fixed one last halt line in checkfs script + * Moved the directory structure around + * Tagged as development release 1.99.4 + +n/a - February 28, 2004 + + * Added stty sane to the top of rc.d/init.d/rc. Hopefully, this will + fix the problems + * Also changed all instances of <ctrl-j> back to enter + +1.99.3 - February 23, 2004 + + * Tagged as development release 1.99.3 + +n/a - February 19, 2004 + + * Fixed checkfs script, so it will no longer continue to boot after a + failure in the init.d/checkfs script. Tested with the help of Andre + Müller. Fix suggested by Zack + +n/a - February 7, 2004 + + * Added -s onto grep on network stop + * Replaced a few more enter's with ctrl-j + +1.99.2 - February 6, 2004 + + * Added -s onto grep in network start + * Tagged as development release 1.99.2 + +n/a - February 4, 2004 + + * Fixed $WARNING $NORMAL and $ERROR lines, broken by changes in + functions + * Changed above fixes to work with ash + * Fixed checkfs symlink in Makefile + * functions is no longer installed as executable + * Added a check to checkfs, for errors above 16. These are caused by + being unable to run fsck, either due to user input, or a unfunctional + linux system + +1.99.1 - February 2, 2004 + + * Tagged as development release 1.99.1 + +n/a - February 2, 2004: + + * Added -d to umount in mountfs. + * Fixed network shutdown script + * Fixed Makefile rc.6 to reboot + * Added -s flag to grep command in rc.d/init.d/network - + suppresses an error if no ifconfig.* files exist + +n/a - January 30, 2004: + + * Reorganized the network system to accept multiple services. + * Ash Compliancy + * Modified some scripts to follow template + * Reorganized functions, based upon Ash Compliancy Patch + * Added a sleep 5 to failure for evaulate_retval, and changed + evaulate_retval to return true instead of false. Instead, a + exit 1 will indicate the script terminated abnormally, causing + your system to wait until you hit ctrl-J + * Switched "Press enter to continue" to "Press <ctrl-j> to continue" + * replaced 3 with $KILLDELAY in sendsignals + * mountfs does not mount network filesystems [identified by _netdev + in /etc/fstab] + * removed unneded touch out of cleanfs + +n/a - January 30, 2004: + + * New maintainers for the lfs-bootscripts package are: + Jeremy Utley (jeremy@linuxfromscratch.org) + Nathan Coulson (nathan@linuxfromscratch.org) + +1.11 - February 3rd, 2003: + + * /etc/mtab is now a real file and is handled correctly so there are + no errors even when the machine has crashed. + +1.10 - September 12th, 2002: + + * Fixed up checkfs to work with non-ext2 filesystems too (such as + minix). + +1.9 - April 5th, 2002: + + * reloadproc function had a missing '=' in the "failure 1" command (it + should be failure=1) + + * When script exists with unexpected value, you have to hit "Enter" to + continue, not just a random key as printed on the screen. + + * Moved K10sysklogd, K20sendsignals, K30mount and K40swap to + K40sysklogd, K50sendsignals, K60mount, K70swap + + * Changed the #!/bin/sh lines to #!/bin/bash - /bin/sh may not be + linked to bash but to some other shell of your choice. These scripts + are written to work with bash, so you can't just run them when + /bin/sh -> csh or ash or whatever else tickles your fancy. This + change should fix that. + +1.8 - March 14th, 2002: + + * Fixed the getpids function call so PPID's would be taken into account + properly. + + * Added the 'contrib' directory with other people's bootscript + implementations. + +1.7 - March 10th, 2002: + + * Used code from Matthias Benkmann's simpleinit-msb @ + http://winterdrache.de/linux/newboot/index.html mainly for improved + killproc function handling + + * When a requested process isn't running, or is already running, a + warning "Not running" or "Already running" will be displayed. This + was out of allignment due to a missing $CURS_UP + + * Removed "||exit" from ifup and ifdown scripts. They are useless. + + * Changed the loadkeys script to run "loadkeys -d" and removed the need + for the /etc/sysconfig/keyboard file. The kbd patch fixes the + "loadkeys -d" behaviour. + +1.6 - February 26th, 2002: + + * replaced -o %PPID with -o $PPID throughout the functions script. This + construct does what it's supposed to do (don't take PPID into account + because this would fail if a running daemon and the bootscript have + the same name). + + * added 'restart' to the swap script + + * instead of using 'echo -n' to suppress newlines so the [ OK ] and + related messages align properly, substitute this with a single echo + command that simply goes one line up before outputting anything. This + also has the benefit that when programs have their own output (like + swapon, fsck and loadkeys), there won't be an unwanted blank line + between the program's output and the [ OK ] et all. messages. + +1.5 - February 2nd, 2002: + + * added 'exit 1' to the statusproc function when there aren't enough + parameters passed to it (such as the name of process to check for) + +1.4 - February 2nd, 2002: + + * when /fastboot is detected and the message about it is printed, + don't run 'exit 1' else the rc script will cause a [FAILED] to + be printed which is undesired in this case. + +1.3 - January 30th, 2002: + * network script: changed default route detection by using the same + method as used when starting the script: check if the GATEWAY + variable is set + + * removed the emptying of /etc/mtab since it's a symlink to + /proc/mounts now + + * added the mountproc script which mounts the proc system. This is done + because we need proc mounted even before the mountfs script is ran + (now that /etc/mtab is a symlink to /proc/mounts) + + * removed all absolute paths from command calls + + * added umask 022 and PATH="/bin:/usr/bin:/sbin:/usr/sbin" to the + functions script. Every file now sources this so that umask and PATH + are set correctly + +1.2 - January 26th, 2002: + * network script: detect if a default route is set before removing it + diff --git a/systemd-units/Makefile b/systemd-units/Makefile new file mode 100644 index 000000000..676a800d5 --- /dev/null +++ b/systemd-units/Makefile @@ -0,0 +1,40 @@ +EXTDIR=${DESTDIR}/etc +TMPFILESDIR=${EXTDIR}/tmpfiles.d +LIBDIR=${DESTDIR}/lib +SERVICEDIR=${LIBDIR}/services +UNITDIR=${LIBDIR}/systemd/system +MAN8=${DESTDIR}/usr/share/man/man8 +SBIN=${DESTDIR}/sbin +MODE=755 +DIRMODE=755 +CONFMODE=644 + +install: files + +create-dirs: + install -d -m ${DIRMODE} ${EXTDIR}/sysconfig + install -d -m ${DIRMODE} ${TMPFILESDIR} + install -d -m ${DIRMODE} ${SERVICEDIR} + install -d -m ${DIRMODE} ${UNITDIR} + install -d -m ${DIRMODE} ${MAN8} + install -d -m ${DIRMODE} ${SBIN} + ln -sfn services ${LIBDIR}/lsb + +files: create-dirs + install -m ${CONFMODE} lfs/tmpfiles/nscd.conf ${TMPFILESDIR} + install -m ${MODE} lfs/sbin/ifup ${SBIN} + install -m ${MODE} lfs/sbin/ifdown ${SBIN} + install -m ${MODE} lfs/sbin/ifup.8 ${MAN8} + ln -sf ifup.8 ${MAN8}/ifdown.8 + 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 + install -m ${CONFMODE} lfs/units/nscd.service ${UNITDIR} + +uninstall: + rm -rf ${TMPFILESDIR}/nscd.conf ${SERVICEDIR} ${LIBDIR}/lsb \ + ${UNITDIR}/ifupdown@.service ${UNITDIR}/nscd.service ${SBIN}/ifup \ + ${SBIN}/ifdown ${MAN8}/ifup.8 ${MAN8}/ifdown.8 + +.PHONY: all create-dirs install files uninstall diff --git a/systemd-units/README b/systemd-units/README new file mode 100644 index 000000000..e0d02290d --- /dev/null +++ b/systemd-units/README @@ -0,0 +1,27 @@ +Network Configuration: + Script Files: + /sbin/ifup + /sbin/ifdown + /lib/lsb/* + + Configuration Files: + /etc/sysconfig/ifconfig.* + Note: ifconfig.* files will be processed + in alphanumerical order on boot, and reversed on shutdown. + - IFACE : The interface that is being configured (e.g. eth0) + - SERVICE: Which script to run in services directory. + - ONBOOT : If set to yes, this interface will be started on bootup + + Additional Configuration: + SERVICE ipv4-static: + - IP : Static IP Address + - GATEWAY : Specifies the IP Address of the gateway server + - PREFIX : CIDR prefix of IP Address, defaults to 24 if not set + - PEER : IP Address of peer (for point-to-point connections and tunnels) + - BROADCAST: Broadcast address + + SERVICE ipv4-static-route: + - TYPE : Network (default type if not specified), default, host or unreachable + - IP : IP Address of target (for network, host and unreachable) + - PREFIX : CIDR prefix of target (for network, host and unreachable) + - GATEWAY: IP Address of gateway to reach target (for network and default) diff --git a/systemd-units/lfs/lib/services/init-functions b/systemd-units/lfs/lib/services/init-functions new file mode 100644 index 000000000..88bed37a2 --- /dev/null +++ b/systemd-units/lfs/lib/services/init-functions @@ -0,0 +1,800 @@ +#!/bin/sh +######################################################################## +# +# Begin /lib/lsb/init-funtions +# +# Description : Run Level Control Functions +# +# Authors : Gerard Beekmans - gerard@linuxfromscratch.org +# : DJ Lucas - dj@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 +# +# The file should be located in /lib/lsb +# +######################################################################## + +## Environmental setup +# Setup default values for environment +umask 022 +export PATH="/bin:/usr/bin:/sbin:/usr/sbin" + +## 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)) + +## 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 +CURS_ZERO="\\033[0G" + +## 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 + +# Use a colored prefix +BMPREFIX=" " +SUCCESS_PREFIX="${SUCCESS} * ${NORMAL}" +FAILURE_PREFIX="${FAILURE}*****${NORMAL}" +WARNING_PREFIX="${WARNING} *** ${NORMAL}" + +SUCCESS_SUFFIX="${BRACKET}[${SUCCESS} OK ${BRACKET}]${NORMAL}" +FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}" +WARNING_SUFFIX="${BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}" + +ENABLE_LOG=0 +BOOTLOG=/run/var/bootlog +KILLDELAY=3 + +################################################################################ +# start_daemon() # +# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...] # +# # +# Purpose: This runs the specified program as a daemon # +# # +# Inputs: -f: (force) run the program even if it is already running. # +# -n nicelevel: specify a nice level. See 'man nice(1)'. # +# -p pidfile: use the specified file to determine PIDs. # +# pathname: the complete path to the specified program # +# args: additional arguments passed to the program (pathname) # +# # +# Return values (as defined by LSB exit codes): # +# 0 - program is running or service is OK # +# 1 - generic or unspecified error # +# 2 - invalid or excessive argument(s) # +# 5 - program is not installed # +################################################################################ +start_daemon() +{ + local force="" + local nice="0" + local pidfile="" + local pidlist="" + local retval="" + + # Process arguments + while true + do + case "${1}" in + + -f) + force="1" + shift 1 + ;; + + -n) + nice="${2}" + shift 2 + ;; + + -p) + pidfile="${2}" + shift 2 + ;; + + -*) + return 2 + ;; + + *) + program="${1}" + break + ;; + esac + done + + # Check for a valid program + if [ ! -e "${program}" ]; then return 5; fi + + # Execute + if [ -z "${force}" ]; then + if [ -z "${pidfile}" ]; then + # Determine the pid by discovery + pidlist=`pidofproc "${1}"` + retval="${?}" + else + # The PID file contains the needed PIDs + # Note that by LSB requirement, the path must be given to pidofproc, + # however, it is not used by the current implementation or standard. + pidlist=`pidofproc -p "${pidfile}" "${1}"` + retval="${?}" + fi + + # Return a value ONLY + # It is the init script's (or distribution's functions) responsibilty + # to log messages! + case "${retval}" in + + 0) + # Program is already running correctly, this is a + # successful start. + return 0 + ;; + + 1) + # Program is not running, but an invalid pid file exists + # remove the pid file and continue + rm -f "${pidfile}" + ;; + + 3) + # Program is not running and no pidfile exists + # do nothing here, let start_deamon continue. + ;; + + *) + # Others as returned by status values shall not be interpreted + # and returned as an unspecified error. + return 1 + ;; + esac + fi + + # Do the start! + nice -n "${nice}" "${@}" +} + +################################################################################ +# killproc() # +# Usage: killproc [-p pidfile] pathname [signal] # +# # +# Purpose: Send control signals to running processes # +# # +# Inputs: -p pidfile, uses the specified pidfile # +# pathname, pathname to the specified program # +# signal, send this signal to pathname # +# # +# Return values (as defined by LSB exit codes): # +# 0 - program (pathname) has stopped/is already stopped or a # +# running program has been sent specified signal and stopped # +# successfully # +# 1 - generic or unspecified error # +# 2 - invalid or excessive argument(s) # +# 5 - program is not installed # +# 7 - program is not running and a signal was supplied # +################################################################################ +killproc() +{ + local pidfile + local program + local prefix + local progname + local signal="-TERM" + local fallback="-KILL" + local nosig + local pidlist + local retval + local pid + local delay="30" + local piddead + local dtime + + # Process arguments + while true; do + case "${1}" in + -p) + pidfile="${2}" + shift 2 + ;; + + *) + program="${1}" + if [ -n "${2}" ]; then + signal="${2}" + fallback="" + else + nosig=1 + fi + + # Error on additional arguments + if [ -n "${3}" ]; then + return 2 + else + break + fi + ;; + esac + done + + # Check for a valid program + if [ ! -e "${program}" ]; then return 5; fi + + # Check for a valid signal + check_signal "${signal}" + if [ "${?}" -ne "0" ]; then return 2; fi + + # Get a list of pids + if [ -z "${pidfile}" ]; then + # determine the pid by discovery + pidlist=`pidofproc "${1}"` + retval="${?}" + else + # The PID file contains the needed PIDs + # Note that by LSB requirement, the path must be given to pidofproc, + # however, it is not used by the current implementation or standard. + pidlist=`pidofproc -p "${pidfile}" "${1}"` + retval="${?}" + fi + + # Return a value ONLY + # It is the init script's (or distribution's functions) responsibilty + # to log messages! + case "${retval}" in + + 0) + # Program is running correctly + # Do nothing here, let killproc continue. + ;; + + 1) + # Program is not running, but an invalid pid file exists + # Remove the pid file. + rm -f "${pidfile}" + + # This is only a success if no signal was passed. + if [ -n "${nosig}" ]; then + return 0 + else + return 7 + fi + ;; + + 3) + # Program is not running and no pidfile exists + # This is only a success if no signal was passed. + if [ -n "${nosig}" ]; then + return 0 + else + return 7 + fi + ;; + + *) + # Others as returned by status values shall not be interpreted + # and returned as an unspecified error. + return 1 + ;; + esac + + # Perform different actions for exit signals and control signals + check_sig_type "${signal}" + + if [ "${?}" -eq "0" ]; then # Signal is used to terminate the program + + # Account for empty pidlist (pid file still exists and no + # signal was given) + if [ "${pidlist}" != "" ]; then + + # Kill the list of pids + for pid in ${pidlist}; do + + kill -0 "${pid}" 2> /dev/null + + if [ "${?}" -ne "0" ]; then + # Process is dead, continue to next and assume all is well + continue + else + kill "${signal}" "${pid}" 2> /dev/null + + # Wait up to ${delay}/10 seconds to for "${pid}" to + # terminate in 10ths of a second + + while [ "${delay}" -ne "0" ]; do + kill -0 "${pid}" 2> /dev/null || piddead="1" + if [ "${piddead}" = "1" ]; then break; fi + sleep 0.1 + delay="$(( ${delay} - 1 ))" + done + + # If a fallback is set, and program is still running, then + # use the fallback + if [ -n "${fallback}" -a "${piddead}" != "1" ]; then + kill "${fallback}" "${pid}" 2> /dev/null + sleep 1 + # Check again, and fail if still running + kill -0 "${pid}" 2> /dev/null && return 1 + fi + fi + done + fi + + # Check for and remove stale PID files. + if [ -z "${pidfile}" ]; then + # Find the basename of $program + prefix=`echo "${program}" | sed 's/[^/]*$//'` + progname=`echo "${program}" | sed "s@${prefix}@@"` + + if [ -e "/var/run/${progname}.pid" ]; then + rm -f "/var/run/${progname}.pid" 2> /dev/null + fi + else + if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2> /dev/null; fi + fi + + # For signals that do not expect a program to exit, simply + # let kill do it's job, and evaluate kills return for value + + else # check_sig_type - signal is not used to terminate program + for pid in ${pidlist}; do + kill "${signal}" "${pid}" + if [ "${?}" -ne "0" ]; then return 1; fi + done + fi +} + +################################################################################ +# pidofproc() # +# Usage: pidofproc [-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 # +# # +# Return values (as defined by LSB status codes): # +# 0 - Success (PIDs to stdout) # +# 1 - Program is dead, PID file still exists (remaining PIDs output) # +# 3 - Program is not running (no output) # +################################################################################ +pidofproc() +{ + local pidfile + local program + local prefix + local progname + local pidlist + local lpids + local exitstatus="0" + + # Process arguments + while true; do + case "${1}" in + + -p) + pidfile="${2}" + shift 2 + ;; + + *) + program="${1}" + if [ -n "${2}" ]; then + # Too many arguments + # Since this is status, return unknown + return 4 + else + break + fi + ;; + esac + done + + # If a PID file is not specified, try and find one. + if [ -z "${pidfile}" ]; then + # Get the program's basename + prefix=`echo "${program}" | sed 's/[^/]*$//'` + + if [ -z "${prefix}" ]; then + progname="${program}" + else + progname=`echo "${program}" | sed "s@${prefix}@@"` + fi + + # If a PID file exists with that name, assume that is it. + if [ -e "/var/run/${progname}.pid" ]; then + pidfile="/var/run/${progname}.pid" + fi + fi + + # If a PID file is set and exists, use it. + if [ -n "${pidfile}" -a -e "${pidfile}" ]; then + + # Use the value in the first line of the pidfile + pidlist=`/bin/head -n1 "${pidfile}"` + # This can optionally be written as 'sed 1q' to repalce 'head -n1' + # should LFS move /bin/head to /usr/bin/head + else + # Use pidof + pidlist=`pidof "${program}"` + fi + + # Figure out if all listed PIDs are running. + for pid in ${pidlist}; do + kill -0 ${pid} 2> /dev/null + + if [ "${?}" -eq "0" ]; then + lpids="${lpids}${pid} " + else + exitstatus="1" + fi + done + + if [ -z "${lpids}" -a ! -f "${pidfile}" ]; then + return 3 + else + echo "${lpids}" + return "${exitstatus}" + fi +} + +################################################################################ +# statusproc() # +# Usage: statusproc [-p pidfile] pathname # +# # +# Purpose: This function prints the status of a particular daemon to stdout # +# # +# Inputs: -p pidfile, use the specified pidfile instead of pidof # +# pathname, path to the specified program # +# # +# Return values: # +# 0 - Status printed # +# 1 - Input error. The daemon to check was not specified. # +################################################################################ +statusproc() +{ + local pidfile + local pidlist + + if [ "${#}" = "0" ]; then + echo "Usage: statusproc [-p pidfle] {program}" + exit 1 + fi + + # Process arguments + while true; do + case "${1}" in + + -p) + pidfile="${2}" + shift 2 + ;; + + *) + if [ -n "${2}" ]; then + echo "Too many arguments" + return 1 + else + break + fi + ;; + esac + done + + if [ -n "${pidfile}" ]; then + pidlist=`pidofproc -p "${pidfile}" $@` + else + pidlist=`pidofproc $@` + fi + + # Trim trailing blanks + pidlist=`echo "${pidlist}" | sed -r 's/ +$//'` + + base="${1##*/}" + + if [ -n "${pidlist}" ]; then + /bin/echo -e "${INFO}${base} is running with Process" \ + "ID(s) ${pidlist}.${NORMAL}" + else + if [ -n "${base}" -a -e "/var/run/${base}.pid" ]; then + /bin/echo -e "${WARNING}${1} is not running but" \ + "/var/run/${base}.pid exists.${NORMAL}" + else + if [ -n "${pidfile}" -a -e "${pidfile}" ]; then + /bin/echo -e "${WARNING}${1} is not running" \ + "but ${pidfile} exists.${NORMAL}" + else + /bin/echo -e "${INFO}${1} is not running.${NORMAL}" + fi + fi + fi +} + +################################################################################ +# timespec() # +# # +# Purpose: An internal utility function to format a timestamp # +# a boot log file. Sets the STAMP variable. # +# # +# Return value: Not used # +################################################################################ +timespec() +{ + STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) " + return 0 +} + +################################################################################ +# log_success_msg() # +# Usage: log_success_msg ["message"] # +# # +# Purpose: Print a successful status message to the screen and # +# a boot log file. # +# # +# Inputs: $@ - Message # +# # +# Return values: Not used # +################################################################################ +log_success_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + +if [ "${ENABLE_LOG}" = "1" ]; then + timespec + /bin/echo -e "${STAMP} ${logmessage} OK" >> ${BOOTLOG} +fi + return 0 +} + +log_success_msg2() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" + +if [ "${ENABLE_LOG}" = "1" ]; then + echo " OK" >> ${BOOTLOG} +fi + + return 0 +} + +################################################################################ +# log_failure_msg() # +# Usage: log_failure_msg ["message"] # +# # +# Purpose: Print a failure status message to the screen and # +# a boot log file. # +# # +# Inputs: $@ - Message # +# # +# Return values: Not used # +################################################################################ +log_failure_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" + + # Strip non-printable characters from log file + +if [ "${ENABLE_LOG}" = "1" ]; then + timespec + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -e "${STAMP} ${logmessage} FAIL" >> ${BOOTLOG} +fi + + return 0 +} + +log_failure_msg2() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" + +if [ "${ENABLE_LOG}" = "1" ]; then + echo "FAIL" >> ${BOOTLOG} +fi + + return 0 +} + +################################################################################ +# log_warning_msg() # +# Usage: log_warning_msg ["message"] # +# # +# Purpose: Print a warning status message to the screen and # +# a boot log file. # +# # +# Return values: Not used # +################################################################################ +log_warning_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}" + +if [ "${ENABLE_LOG}" = "1" ]; then + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + timespec + /bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG} +fi + + return 0 +} + +################################################################################ +# log_info_msg() # +# Usage: log_info_msg message # +# # +# Purpose: Print an information message to the screen and # +# a boot log file. Does not print a trailing newline character. # +# # +# Return values: Not used # +################################################################################ +log_info_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + +if [ "${ENABLE_LOG}" = "1" ]; then + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + timespec + /bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG} +fi + + return 0 +} + +log_info_msg2() +{ + /bin/echo -n -e "${@}" + +if [ "${ENABLE_LOG}" = "1" ]; then + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -n -e "${logmessage}" >> ${BOOTLOG} +fi + + return 0 +} + +################################################################################ +# evaluate_retval() # +# Usage: Evaluate a return value and print success or failyure as appropriate # +# # +# Purpose: Convenience function to terminate an info message # +# # +# Return values: Not used # +################################################################################ +evaluate_retval() +{ + local error_value="${?}" + + if [ ${error_value} = 0 ]; then + log_success_msg2 + else + log_failure_msg2 + fi +} + +################################################################################ +# check_signal() # +# Usage: check_signal [ -{signal} | {signal} ] # +# # +# Purpose: Check for a valid signal. This is not defined by any LSB draft, # +# however, it is required to check the signals to determine if the # +# signals chosen are invalid arguments to the other functions. # +# # +# Inputs: Accepts a single string value in the form or -{signal} or {signal} # +# # +# Return values: # +# 0 - Success (signal is valid # +# 1 - Signal is not valid # +################################################################################ +check_signal() +{ + local valsig + + # Add error handling for invalid signals + valsig="-ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2" + valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN" + valsig="${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP" + valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 -4 -5 -6 -8 -9" + valsig="${valsig} -11 -13 -14 -15" + + echo "${valsig}" | grep -- " ${1} " > /dev/null + + if [ "${?}" -eq "0" ]; then + return 0 + else + return 1 + fi +} + +################################################################################ +# check_sig_type() # +# Usage: check_signal [ -{signal} | {signal} ] # +# # +# Purpose: Check if signal is a program termination signal or a control signal # +# This is not defined by any LSB draft, however, it is required to # +# check the signals to determine if they are intended to end a # +# program or simply to control it. # +# # +# Inputs: Accepts a single string value in the form or -{signal} or {signal} # +# # +# Return values: # +# 0 - Signal is used for program termination # +# 1 - Signal is used for program control # +################################################################################ +check_sig_type() +{ + local valsig + + # The list of termination signals (limited to generally used items) + valsig="-ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15" + + echo "${valsig}" | grep -- " ${1} " > /dev/null + + if [ "${?}" -eq "0" ]; then + return 0 + else + return 1 + fi +} + +################################################################################ +# wait_for_user() # +# # +# Purpose: Wait for the user to respond if not a headless system # +# # +################################################################################ +wait_for_user() +{ + # Wait for the user by default + [ "${HEADLESS=0}" = "0" ] && read ENTER + return 0 +} + +################################################################################ +# is_true() # +# # +# Purpose: Utility to test if a variable is true | yes | 1 # +# # +################################################################################ +is_true() +{ + [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ] || [ "$1" = "y" ] || + [ "$1" = "t" ] +} + +# End /lib/lsb/init-functions diff --git a/systemd-units/lfs/lib/services/ipv4-static b/systemd-units/lfs/lib/services/ipv4-static new file mode 100755 index 000000000..2d9dad39c --- /dev/null +++ b/systemd-units/lfs/lib/services/ipv4-static @@ -0,0 +1,83 @@ +#!/bin/sh +######################################################################## +# Begin /lib/services/ipv4-static +# +# Description : IPV4 Static Boot Script +# +# Authors : Nathan Coulson - nathan@linuxfromscratch.org +# Kevin P. Fleming - kpfleming@linuxfromscratch.org +# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org +# +# Version : LFS 7.0 +# +######################################################################## + +. /lib/lsb/init-functions +. ${IFCONFIG} + +if [ -z "${IP}" ]; then + log_failure_msg "\nIP variable missing from ${IFCONFIG}, cannot continue." + exit 1 +fi + +if [ -z "${PREFIX}" -a -z "${PEER}" ]; then + log_warning_msg "\nPREFIX variable missing from ${IFCONFIG}, assuming 24." + PREFIX=24 + args="${args} ${IP}/${PREFIX}" + +elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then + log_failure_msg "\nPREFIX and PEER both specified in ${IFCONFIG}, cannot continue." + exit 1 + +elif [ -n "${PREFIX}" ]; then + args="${args} ${IP}/${PREFIX}" + +elif [ -n "${PEER}" ]; then + args="${args} ${IP} peer ${PEER}" +fi + +if [ -n "${BROADCAST}" ]; then + args="${args} broadcast ${BROADCAST}" +fi + +case "${2}" in + up) + if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" = "" ]; then + + # Cosmetic output not needed for multiple services + if ! $(echo ${SERVICE} | grep -q " "); then + log_info_msg2 "\n" # Terminate the previous message + fi + + log_info_msg "Adding IPv4 address ${IP} to the ${1} interface..." + ip addr add ${args} dev ${1} + evaluate_retval + else + log_warning_msg "Cannot add IPv4 address ${IP} to ${1}. Already present." + fi + ;; + + down) + if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" != "" ]; then + log_info_msg "Removing IPv4 address ${IP} from the ${1} interface..." + ip addr del ${args} dev ${1} + evaluate_retval + fi + + if [ -n "${GATEWAY}" ]; then + # Only remove the gateway if there are no remaining ipv4 addresses + if [ "$(ip addr show ${1} 2>/dev/null | grep 'inet ')" != "" ]; then + log_info_msg "Removing default gateway..." + ip route del default + evaluate_retval + fi + fi + ;; + + *) + echo "Usage: ${0} [interface] {up|down}" + exit 1 + ;; +esac + +# End /lib/services/ipv4-static diff --git a/systemd-units/lfs/lib/services/ipv4-static-route b/systemd-units/lfs/lib/services/ipv4-static-route new file mode 100755 index 000000000..c4d433d2a --- /dev/null +++ b/systemd-units/lfs/lib/services/ipv4-static-route @@ -0,0 +1,92 @@ +#!/bin/sh +######################################################################## +# Begin /lib/services/ipv4-static-route +# +# Description : IPV4 Static Route Script +# +# Authors : Kevin P. Fleming - kpfleming@linuxfromscratch.org +# DJ Lucas - dj@linuxfromscratch.org +# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org +# +# Version : LFS 7.0 +# +######################################################################## + +. /lib/lsb/init-functions +. ${IFCONFIG} + +case "${TYPE}" in + ("" | "network") + need_ip=1 + need_gateway=1 + ;; + + ("default") + need_gateway=1 + args="${args} default" + desc="default" + ;; + + ("host") + need_ip=1 + ;; + + ("unreachable") + need_ip=1 + args="${args} unreachable" + desc="unreachable " + ;; + + (*) + log_failure_msg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue." + exit 1 + ;; +esac + +if [ -n "${need_ip}" ]; then + if [ -z "${IP}" ]; then + log_failure_msg "IP variable missing from ${IFCONFIG}, cannot continue." + exit 1 + fi + + if [ -z "${PREFIX}" ]; then + log_failure_msg "PREFIX variable missing from ${IFCONFIG}, cannot continue." + exit 1 + fi + + args="${args} ${IP}/${PREFIX}" + desc="${desc}${IP}/${PREFIX}" +fi + +if [ -n "${need_gateway}" ]; then + if [ -z "${GATEWAY}" ]; then + log_failure_msg "GATEWAY variable missing from ${IFCONFIG}, cannot continue." + exit 1 + fi + args="${args} via ${GATEWAY}" +fi + +if [ -n "${SOURCE}" ]; then + args="${args} src ${SOURCE}" +fi + +case "${2}" in + up) + log_info_msg "Adding '${desc}' route to the ${1} interface..." + ip route add ${args} dev ${1} + evaluate_retval + ;; + + down) + log_info_msg "Removing '${desc}' route from the ${1} interface..." + ip route del ${args} dev ${1} + evaluate_retval + ;; + + *) + echo "Usage: ${0} [interface] {up|down}" + exit 1 + ;; +esac + +# End /lib/services/ipv4-static-route diff --git a/systemd-units/lfs/sbin/ifdown b/systemd-units/lfs/sbin/ifdown new file mode 100755 index 000000000..05d7b4188 --- /dev/null +++ b/systemd-units/lfs/sbin/ifdown @@ -0,0 +1,100 @@ +#!/bin/bash +######################################################################## +# Begin /sbin/ifdown +# +# Description : Interface Down +# +# Authors : Nathan Coulson - nathan@linuxfromscratch.org +# Kevin P. Fleming - kpfleming@linuxfromscratch.org +# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org +# +# Version : LFS 7.0 +# +# Notes : the IFCONFIG variable is passed to the scripts found +# in the /lib/services directory, to indicate what file the +# service should source to get interface specifications. +# +######################################################################## + +RELEASE="7.0" + +USAGE="Usage: $0 [ -hV ] [--help] [--version] interface" +VERSTR="LFS ifdown, version ${RELEASE}" + +while [ $# -gt 0 ]; do + case "$1" in + --help | -h) help="y"; break ;; + + --version | -V) echo "${VERSTR}"; exit 0 ;; + + -*) echo "ifup: ${1}: invalid option" >&2 + echo "${USAGE}" >& 2 + exit 2 ;; + + *) break ;; + esac +done + +if [ -n "$help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +ifdown is used to bring down a network interface. The interface +parameter, e.g. eth0 or eth0:2, must match the trailing part of the +interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2. + +HERE_EOF + exit 0 +fi + +file=/etc/sysconfig/ifconfig.${1} + +# Skip backup files +[ "${file}" = "${file%""~""}" ] || exit 0 + +. /lib/lsb/init-functions + +if [ ! -r "${file}" ]; then + log_warning_msg "${file} is missing or cannot be accessed." + exit 1 +fi + +. ${file} + +if [ "$IFACE" = "" ]; then + log_failure_msg "${file} does not define an interface [IFACE]." + exit 1 +fi + +# We only need to first service to bring down the interface +S=`echo ${SERVICE} | cut -f1 -d" "` + +if ip link show ${IFACE} > /dev/null 2>&1; then + if [ -n "${S}" -a -x "/lib/services/${S}" ]; then + IFCONFIG=${file} /lib/services/${S} ${IFACE} down + else + MSG="Unable to process ${file}. Either " + MSG="${MSG}the SERVICE variable was not set " + MSG="${MSG}or the specified service cannot be executed." + log_failure_msg "$MSG" + exit 1 + fi +else + log_warning_msg "Interface ${1} doesn't exist." +fi + +# Leave the interface up if there are additional interfaces in the device +link_status=`ip link show ${IFACE} 2>/dev/null` + +if [ -n "${link_status}" ]; then + if [ "$(echo "${link_status}" | grep UP)" != "" ]; then + if [ "$(ip addr show ${IFACE} | grep 'inet ')" == "" ]; then + log_info_msg "Bringing down the ${IFACE} interface..." + ip link set ${IFACE} down + evaluate_retval + fi + fi +fi + +# End /sbin/ifdown diff --git a/systemd-units/lfs/sbin/ifup b/systemd-units/lfs/sbin/ifup new file mode 100755 index 000000000..067f6eac7 --- /dev/null +++ b/systemd-units/lfs/sbin/ifup @@ -0,0 +1,136 @@ +#!/bin/sh +######################################################################## +# Begin /sbin/ifup +# +# Description : Interface Up +# +# Authors : Nathan Coulson - nathan@linuxfromscratch.org +# Kevin P. Fleming - kpfleming@linuxfromscratch.org +# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org +# +# Version : LFS 7.2 +# +# Notes : The IFCONFIG variable is passed to the SERVICE script +# in the /lib/services directory, to indicate what file the +# service should source to get interface specifications. +# +######################################################################## + +up() +{ + if ip link show $1 > /dev/null 2>&1; then + link_status=`ip link show $1` + + if [ -n "${link_status}" ]; then + if ! echo "${link_status}" | grep -q UP; then + ip link set $1 up + fi + fi + + else + log_failure_msg "\nInterface ${IFACE} doesn't exist." + exit 1 + fi +} + +RELEASE="7.2" + +USAGE="Usage: $0 [ -hV ] [--help] [--version] interface" +VERSTR="LFS ifup, version ${RELEASE}" + +while [ $# -gt 0 ]; do + case "$1" in + --help | -h) help="y"; break ;; + + --version | -V) echo "${VERSTR}"; exit 0 ;; + + -*) echo "ifup: ${1}: invalid option" >&2 + echo "${USAGE}" >& 2 + exit 2 ;; + + *) break ;; + esac +done + +if [ -n "$help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +ifup is used to bring up a network interface. The interface +parameter, e.g. eth0 or eth0:2, must match the trailing part of the +interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2. + +HERE_EOF + exit 0 +fi + +file=/etc/sysconfig/ifconfig.${1} + +# Skip backup files +[ "${file}" = "${file%""~""}" ] || exit 0 + +. /lib/lsb/init-functions + +log_info_msg "Bringing up the ${1} interface... " + +if [ ! -r "${file}" ]; then + log_failure_msg2 "${file} is missing or cannot be accessed." + exit 1 +fi + +. $file + +if [ "$IFACE" = "" ]; then + log_failure_msg2 "${file} does not define an interface [IFACE]." + exit 1 +fi + +# Do not process this service if started by boot, and ONBOOT +# is not set to yes +if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then + log_info_msg2 "skipped" + exit 0 +fi + +for S in ${SERVICE}; do + if [ ! -x "/lib/services/${S}" ]; then + MSG="\nUnable to process ${file}. Either " + MSG="${MSG}the SERVICE '${S} was not present " + MSG="${MSG}or cannot be executed." + log_failure_msg "$MSG" + exit 1 + fi +done + +# Create/configure the interface +for S in ${SERVICE}; do + IFCONFIG=${file} /lib/services/${S} ${IFACE} up +done + +# Bring up the interface and any components +for I in $IFACE $INTERFACE_COMPONENTS; do up $I; done + +# Set MTU if requested. Check if MTU has a "good" value. +if test -n "${MTU}"; then + if [[ ${MTU} =~ ^[0-9]+$ ]] && [[ $MTU -ge 68 ]] ; then + for I in $IFACE $INTERFACE_COMPONENTS; do + ip link set dev $I mtu $MTU; + done + else + log_info_msg2 "Invalid MTU $MTU" + fi +fi + +# Set the route default gateway if requested +if [ -n "${GATEWAY}" ]; then + if ip route | grep -q default; then + log_warning_msg "\nGateway already setup; skipping." + else + log_info_msg "Setting up default gateway..." + ip route add default via ${GATEWAY} dev ${IFACE} + evaluate_retval + fi +fi + +# End /sbin/ifup diff --git a/systemd-units/lfs/sbin/ifup.8 b/systemd-units/lfs/sbin/ifup.8 new file mode 100644 index 000000000..8ed0d9586 --- /dev/null +++ b/systemd-units/lfs/sbin/ifup.8 @@ -0,0 +1,174 @@ +ifup(8) ifup(8) + +NAME + ifup - bring a network interface up + ifdown - take a network interface down + +SYNOPSIS + ifup IFACE + ifup -h|--help + ifup -V|--version + + ifdown IFACE + ifdown -h|--help + ifdown -V|--version + +DESCRIPTION + The ifup and ifdown commands may be used to configure + (or, respectively, deconfigure) a network interface based + on interface definitions in the file + /etc/sysconfig/ifconfig.IFACE. + +OPTIONS + A summary of options is included below. + + -h, --help + Show summary of options. + + -V, --version + Show version information. + +EXAMPLES + ifup eth0 + Bring up the interface defined in the file + /etc/sysconfig/ifconfig.eth0 + + ONBOOT=no + IFACE=eth0 + SERVICE=ipv4-static + IP=192.168.1.22 + GATEWAY=192.168.1.1 + PREFIX=24 + BROADCAST=192.168.1.255 + + ifdown eth0:2 + Bring down the interface defined in the file + /etc/sysconfig/ifconfig.eth0:2 + + ONBOOT=no + IFACE=eth0:2 + SERVICE=dhcpcd + + DHCP_START="--waitip" + DHCP_STOP="-k" + + # Set PRINTIP="yes" to have the script print the DHCP IP address + PRINTIP="yes" + + # Set PRINTALL="yes" to print the DHCP assigned values for + # IP, SM, DG, and 1st NS. + PRINTALL="no" + + ifup br0 + Bring up the interface defined in the file + /etc/sysconfig/ifconfig.br0 + + ONBOOT=yes + IFACE=br0 + SERVICE="bridge ipv4-static" + IP=192.168.1.22 + GATEWAY=192.168.1.1 + PREFIX=24 + BROADCAST=192.168.1.255 + STP=no # Spanning tree protocol, default no + INTERFACE_COMPONENTS=eth0 # Add to IFACE + IP_FORWARD=true + +NOTES + The program does not configure network interfaces direct- + ly. It runs scripts defined by the SERVICE variable in + the network configuration file. + + The configuration files must have the following environ- + ment variables set: + + IFACE - The interface to configure, e.g. eth0. It must + be available in /sys/class/net. + + SERVICE - The service script to run to bring up the inter- + face. Standard services are ipv4-static and + ipv4-static-route. Other services such as dhcp + or bridge may be installed. This value may + be a list of services when the interface is a + compound device such as a bridge. + + ONBOOT - If set to 'yes', the specified interface is + configured by the netowrk boot script. + + GATEWAY - The default IP address to use for routing if + the destination IP address is not in a static + route or on a local network, e.g., 192.168.1.1. + For secondary IP addresses on an interface, this + parameter should not be specified. + + INTERFACE_COMPONENTS - A list of component interfaces + only needed for a compound device such as a bridge. + This list is normally a single value, e.g. eth0, + for use with a virtual host such as kvm. + + Other paramters that are service specific include: + + ipv4-static + + IP - The IP address of the interface, + e.g. 192.168.1.2. + + PREFIX - The number of bits that specify the network + number of the interface. The default, if not + specified, is 24. + + BROADCAST - The brodcast address for this interface, + e.g 192.168.1.255. If not specified, + the broadcast address will be calculated + from the IP and PREFIX. + + ipv4-static-route + + TYPE - The type of route, typically 'default', + 'network', 'or host'. + + IP - The IP address for a network or host, if the + TYPE is not 'default'. + + PREFIX - The prefix for the associated IP address. + + GATEWAY - The IP address for a network route. + + SOURCE - The source IP address to prefer when sending + to the destinations covered by the specified + route. (optional) + + dhcp/dhclient + + DHCP_START - Optional parameters to pass to the dhcp client + at startup. + + DHCP_STOP - Optional paremeters to pass to the dhcp client + at shutdown. + + PRINTIP - Flag to print the dhcp address to stdout + + PRINTALL - Flag to print all obtained dhcp data to stdout + + bridge + + IP_FORWARD - An optional flag to enable the system to forward + inbound IP packets received by one interface to + another outbound interface. + + STP - Set bridge spanning tree protocol. Default is no. + +FILES + /etc/sysconfig/ifconfig.* + definitions of network interfaces + +AUTHORS + The ifup/ifdown suite was written by Nathan Coulson + <nathan@linuxfromscratch.org> and Kevin P. Fleming + <kpfleming@linuxfromscratch.org> + and updated by Bruce Dubbs <bdubbs@linuxfromscratch>. + +SEE ALSO + ip(8). + +IFUP/IFDOWN 8 April 2012 ifup(8) diff --git a/systemd-units/lfs/tmpfiles/nscd.conf b/systemd-units/lfs/tmpfiles/nscd.conf new file mode 100644 index 000000000..c11675be8 --- /dev/null +++ b/systemd-units/lfs/tmpfiles/nscd.conf @@ -0,0 +1,2 @@ +d /run/nscd 755 root root - + diff --git a/systemd-units/lfs/units/ifupdownat.service b/systemd-units/lfs/units/ifupdownat.service new file mode 100644 index 000000000..3c5dc494b --- /dev/null +++ b/systemd-units/lfs/units/ifupdownat.service @@ -0,0 +1,12 @@ +[Unit] +Description=Start ifupdown for %i +Requires=sys-subsystem-net-devices-%i.device +After=sys-subsystem-net-devices-%i.device + +[Service] +ExecStart=/sbin/ifup %i +ExecStop=/sbin/ifdown %i +RemainAfterExit=true + +[Install] +WantedBy=multi-user.target diff --git a/systemd-units/lfs/units/nscd.service b/systemd-units/lfs/units/nscd.service new file mode 100644 index 000000000..ff200a144 --- /dev/null +++ b/systemd-units/lfs/units/nscd.service @@ -0,0 +1,16 @@ +[Unit] +Description=Name Service Cache Daemon + +[Service] +Type=forking +ExecStart=/usr/sbin/nscd +ExecStop=/usr/sbin/nscd --shutdown +ExecReload=/usr/sbin/nscd -i passwd +ExecReload=/usr/sbin/nscd -i group +ExecReload=/usr/sbin/nscd -i hosts +ExecReload=/usr/sbin/nscd -i services +Restart=always +PIDFile=/run/nscd/nscd.pid + +[Install] +WantedBy=multi-user.target |