Инструменты пользователя

Инструменты сайта


software:linux_server:lfs:appendices:boot_and_sysconfig_scripts

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
software:linux_server:lfs:appendices:boot_and_sysconfig_scripts [2025/02/23 13:07] vladpolskiysoftware:linux_server:lfs:appendices:boot_and_sysconfig_scripts [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
-======V. Приложения====== 
-Содержание: 
-  * [[software:linux_server:lfs:appendices#A. Сокращения и условные обозначения|A. Сокращения и условные обозначения]] 
-  * [[software:linux_server:lfs:appendices#B. Благодарности|B. Благодарности]] 
-  * [[software:linux_server:lfs:appendices#C. Зависимости|C. Зависимости]] 
-  * [[software:linux_server:lfs:appendices#D. Лицензии LFS|D. Лицензии LFS]] 
-  * [[software:linux_server:lfs:appendices#Лицензия Creative Commons|Лицензия Creative Commons]] 
-  * [[software:linux_server:lfs:appendices#Лицензия MIT|Лицензия MIT]] 
-=====D. Скрипты загрузки и sysconfig версии-20240825===== 
  
-Скрипты в этом приложении перечислены по каталогу, в котором они обычно находятся. Порядок ''/etc/rc.d/init.d'', ''/etc/sysconfig'', ''/etc/sysconfig/network-devices'', и ''/etc/sysconfig/network-devices/services''. В каждом разделе файлы перечислены в порядке их обычного вызова. 
- 
-====D.1. /etc/rc.d/init.d/rc==== 
-Скрипт ''rc'' является первым скриптом, вызываемым init и инициирующим процесс загрузки. 
- 
-#!/bin/bash 
-######################################################################## 
-# Begin rc 
-# 
-# Description : Main Run Level Control Script 
-# 
-# Authors     : Gerard Beekmans  - gerard AT linuxfromscratch D0T org 
-#             : DJ Lucas - dj AT linuxfromscratch D0T org 
-# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-#             : Pierre Labastie - pierre AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-# Notes       : Updates March 24th, 2022: new semantics of S/K files 
-#               - Instead of testing that S scripts were K scripts in the 
-#                 previous runlevel, test that they were not S scripts 
-#               - Instead of testing that K scripts were S scripts in the 
-#                 previous runlevel, test that they were not K scripts 
-#               - S scripts in runlevel 0 or 6 are now run with 
-#                "script start" (was "script stop" previously). 
-######################################################################## 
- 
-. /lib/lsb/init-functions 
- 
-print_error_msg() 
-{ 
-   log_failure_msg 
-   # $i is set when called 
-   MSG="FAILURE:\n\nYou should not be reading this error message.\n\n" 
-   MSG="${MSG}It means that an unforeseen error took place in\n" 
-   MSG="${MSG}${i},\n" 
-   MSG="${MSG}which exited with a return value of ${error_value}.\n" 
- 
-   MSG="${MSG}If you're able to track this error down to a bug in one of\n" 
-   MSG="${MSG}the files provided by the ${DISTRO_MINI} book,\n" 
-   MSG="${MSG}please be so kind to inform us at ${DISTRO_CONTACT}.\n" 
-   log_failure_msg "${MSG}" 
- 
-   log_info_msg "Press Enter to continue..." 
-   wait_for_user 
-} 
- 
-check_script_status() 
-{ 
-   # $i is set when called 
-   if [ ! -f ${i} ]; then 
-      log_warning_msg "${i} is not a valid symlink." 
-      SCRIPT_STAT="1" 
-   fi 
- 
-   if [ ! -x ${i} ]; then 
-      log_warning_msg "${i} is not executable, skipping." 
-      SCRIPT_STAT="1" 
-   fi 
-} 
- 
-run() 
-{ 
-   if [ -z $interactive ]; then 
-      ${1} ${2} 
-      return $? 
-   fi 
- 
-   while true; do 
-      read -p "Run ${1} ${2} (Yes/no/continue)? " -n 1 runit 
-      echo 
- 
-      case ${runit} in 
-         c | C) 
-            interactive="" 
-            ${i} ${2} 
-            ret=${?} 
-            break; 
-            ;; 
- 
-         n | N) 
-            return 0 
-            ;; 
- 
-         y | Y) 
-            ${i} ${2} 
-            ret=${?} 
-            break 
-            ;; 
-      esac 
-   done 
- 
-   return $ret 
-} 
- 
-# Read any local settings/overrides 
-[ -r /etc/sysconfig/rc.site ] && source /etc/sysconfig/rc.site 
- 
-DISTRO=${DISTRO:-"Linux From Scratch"} 
-DISTRO_CONTACT=${DISTRO_CONTACT:-"lfs-dev@lists.linuxfromscratch.org (Registration required)"} 
-DISTRO_MINI=${DISTRO_MINI:-"LFS"} 
-IPROMPT=${IPROMPT:-"no"} 
- 
-# These 3 signals will not cause our script to exit 
-trap "" INT QUIT TSTP 
- 
-[ "${1}" != "" ] && runlevel=${1} 
- 
-if [ "${runlevel}" == "" ]; then 
-   echo "Usage: ${0} <runlevel>" >&2 
-   exit 1 
-fi 
- 
-previous=${PREVLEVEL} 
-[ "${previous}" == "" ] && previous=N 
- 
-if [ ! -d /etc/rc.d/rc${runlevel}.d ]; then 
-   log_info_msg "/etc/rc.d/rc${runlevel}.d does not exist.\n" 
-   exit 1 
-fi 
- 
-if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; then IPROMPT="no"; fi 
- 
-# Note: In ${LOGLEVEL:-7}, it is ':' 'dash' '7', not minus 7 
-if [ "$runlevel" == "S" ]; then 
-   [ -r /etc/sysconfig/console ] && source /etc/sysconfig/console 
-   dmesg -n "${LOGLEVEL:-7}" 
-fi 
- 
-if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; then 
-   # The total length of the distro welcome string, without escape codes 
-   wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )} 
-   welcome_message=${welcome_message:-"Welcome to ${INFO}${DISTRO}${NORMAL}"} 
- 
-   # The total length of the interactive string, without escape codes 
-   ilen=${ilen:-$(echo "Press 'I' to enter interactive startup" | wc -c )} 
-   i_message=${i_message:-"Press '${FAILURE}I${NORMAL}' to enter interactive startup"} 
- 
- 
-   # dcol and icol are spaces before the message to center the message 
-   # on screen. itime is the amount of wait time for the user to press a key 
-   wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 )) 
-   icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 )) 
-   itime=${itime:-"3"} 
- 
-   echo -e "\n\n" 
-   echo -e "\\033[${wcol}G${welcome_message}" 
-   echo -e "\\033[${icol}G${i_message}${NORMAL}" 
-   echo "" 
-   read -t "${itime}" -n 1 interactive 2>&1 > /dev/null 
-fi 
- 
-# Make lower case 
-[ "${interactive}" == "I" ] && interactive="i" 
-[ "${interactive}" != "i" ] && interactive="" 
- 
-# Read the state file if it exists from runlevel S 
-[ -r /run/interactive ] && source /run/interactive 
- 
-# Stop all services marked as K, except if marked as K in the previous 
-# runlevel: it is the responsibility of the script to not try to kill 
-# a non running service 
-if [ "${previous}" != "N" ]; then 
-   for i in $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) 
-   do 
-      check_script_status 
-      if [ "${SCRIPT_STAT}" == "1" ]; then 
-         SCRIPT_STAT="0" 
-         continue 
-      fi 
- 
-      suffix=${i#/etc/rc.d/rc${runlevel}.d/K[0-9][0-9]} 
-      [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue 
- 
-      run ${i} stop 
-      error_value=${?} 
- 
-      if [ "${error_value}" != "0" ]; then print_error_msg; fi 
-   done 
-fi 
- 
-if [ "${previous}" == "N" ]; then export IN_BOOT=1; fi 
- 
-if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; then 
-   touch /fastboot 
-fi 
- 
- 
-# Start all services marked as S in this runlevel, except if marked as 
-# S in the previous runlevel 
-# it is the responsibility of the script to not try to start an already running 
-# service 
-for i in $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null) 
-do 
- 
-   if [ "${previous}" != "N" ]; then 
-      suffix=${i#/etc/rc.d/rc${runlevel}.d/S[0-9][0-9]} 
-      [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue 
-   fi 
- 
-   check_script_status 
-   if [ "${SCRIPT_STAT}" == "1" ]; then 
-      SCRIPT_STAT="0" 
-      continue 
-   fi 
- 
-   run ${i} start 
- 
-   error_value=${?} 
- 
-   if [ "${error_value}" != "0" ]; then print_error_msg; fi 
-done 
- 
-# Store interactive variable on switch from runlevel S and remove if not 
-if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; then 
-    echo "interactive=\"i\"" > /run/interactive 
-else 
-    rm -f /run/interactive 2> /dev/null 
-fi 
- 
-# Copy the boot log on initial boot only 
-if [ "${previous}" == "N" -a  "${runlevel}" != "S" ]; then 
-   cat $BOOTLOG >> /var/log/boot.log 
- 
-   # Mark the end of boot 
-   echo "--------" >> /var/log/boot.log 
- 
-   # Remove the temporary file 
-   rm -f $BOOTLOG 2> /dev/null 
-fi 
- 
-# End rc 
-D.2. /lib/lsb/init-functions 
-#!/bin/sh 
-######################################################################## 
-# 
-# Begin /lib/lsb/init-funtions 
-# 
-# Description : Run Level Control Functions 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#             : DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T 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" 
- 
-## 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} " 
-SKIP_PREFIX="${INFO}  S   ${NORMAL}" 
- 
-SUCCESS_SUFFIX="${BRACKET}[${SUCCESS}  OK  ${BRACKET}]${NORMAL}" 
-FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}" 
-WARNING_SUFFIX="${BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}" 
-SKIP_SUFFIX="${BRACKET}[${INFO} SKIP ${BRACKET}]${NORMAL}" 
- 
-BOOTLOG=/run/bootlog 
-KILLDELAY=3 
-SCRIPT_STAT="0" 
- 
-# Set any user specified environment variables e.g. HEADLESS 
-[ -r /etc/sysconfig/rc.site ]  && . /etc/sysconfig/rc.site 
- 
-# If HEADLESS is set, use that.   
-# If file descriptor 1 or 2 (stdout and stderr) is not open or 
-# does not refer to a terminal, consider the script headless. 
-[ ! -t 1 -o ! -t 2 ] && HEADLESS=${HEADLESS:-yes} 
- 
-if [ "x$HEADLESS" != "xyes" ] 
-then  
-  ## Screen Dimensions 
-  # Find current screen size 
-  if [ -z "${COLUMNS}" ]; then 
-    COLUMNS=$(stty size) 
-    COLUMNS=${COLUMNS##* } 
-  fi 
-else 
-   COLUMNS=80 
-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" 
- 
-################################################################################ 
-# 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) responsibility 
-        # 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) responsibility 
-    # 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. 
- 
-            progname=${program##*/} 
- 
-            if [[ -e "/run/${progname}.pid" ]]; then 
-                pidfile="/run/${progname}.pid" 
-                rm -f "${pidfile}" 
-            fi 
- 
-            # 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 "/run/${progname}.pid" ]; then 
-                rm -f "/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 its job, and evaluate kill's 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 "/run/${progname}.pid" ]; then 
-            pidfile="/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}"` 
-    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 "/run/${base}.pid" ]; then 
-         /bin/echo -e "${WARNING}${1} is not running but" \ 
-            "/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() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then  
-      /bin/echo -n -e "${BMPREFIX}${@}" 
-      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" 
-    else 
-      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-      /bin/echo -e "${logmessage} OK"  
-    fi 
-    # Strip non-printable characters from log file 
-    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
- 
-    timespec 
-    /bin/echo -e "${STAMP} ${logmessage} OK" >> ${BOOTLOG} 
- 
-    return 0 
-} 
- 
-log_success_msg2() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then  
-      /bin/echo -n -e "${BMPREFIX}${@}" 
-      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" 
-    else 
-      echo " OK"  
-    fi 
- 
-    echo " OK" >> ${BOOTLOG} 
- 
-    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() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then  
-      /bin/echo -n -e "${BMPREFIX}${@}" 
-      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" 
-    else 
-      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-      /bin/echo -e "${logmessage} FAIL" 
-    fi 
- 
-    # Strip non-printable characters from log file 
- 
-    timespec 
-    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-    /bin/echo -e "${STAMP} ${logmessage} FAIL" >> ${BOOTLOG} 
- 
-    return 0 
-} 
- 
-log_failure_msg2() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then  
-      /bin/echo -n -e "${BMPREFIX}${@}" 
-      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" 
-    else 
-      echo "FAIL" 
-    fi 
- 
-    echo "FAIL" >> ${BOOTLOG} 
- 
-    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() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then 
-      /bin/echo -n -e "${BMPREFIX}${@}" 
-      /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}" 
-    else 
-      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-      /bin/echo -e "${logmessage} WARN" 
-    fi  
- 
-    # Strip non-printable characters from log file 
-    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-    timespec 
-    /bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG} 
- 
-    return 0 
-} 
- 
-log_skip_msg() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then 
-      /bin/echo -n -e "${BMPREFIX}${@}" 
-      /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}" 
-    else 
-      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-      /bin/echo "SKIP" 
-    fi 
- 
-    # Strip non-printable characters from log file 
-    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-    /bin/echo "SKIP" >> ${BOOTLOG} 
- 
-    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() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then 
-      /bin/echo -n -e "${BMPREFIX}${@}" 
-    else 
-      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-      /bin/echo -n -e "${logmessage}" 
-    fi 
- 
-    # Strip non-printable characters from log file 
-    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-    timespec 
-    /bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG} 
- 
-    return 0 
-} 
- 
-log_info_msg2() 
-{ 
-    if [ "x$HEADLESS" != "xyes" ] 
-    then 
-      /bin/echo -n -e "${@}" 
-    else 
-      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-      /bin/echo -n -e "${logmessage}" 
-    fi 
- 
-    # Strip non-printable characters from log file 
-    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` 
-    /bin/echo -n -e "${logmessage}" >> ${BOOTLOG} 
- 
-    return 0 
-} 
- 
-################################################################################ 
-# evaluate_retval()                                                            # 
-# Usage: Evaluate a return value and print success or failure 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} ]                                            # 
-#                                                                              # 
-# 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 of -{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 
-D.3. /etc/rc.d/init.d/mountvirtfs 
-#!/bin/sh 
-######################################################################## 
-# Begin mountvirtfs 
-# 
-# Description : Ensure proc, sysfs, run, and dev are mounted 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-#               Xi Ruoyao - xry111@xry111.site 
-# 
-# Version     : LFS 12.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            mountvirtfs 
-# Required-Start:      $first 
-# Should-Start: 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Mounts various special fs needed at start 
-# Description:         Mounts /sys and /proc virtual (kernel) filesystems. 
-#                      Mounts /run (tmpfs) and /dev (devtmpfs). 
-#                      This is done only if they are not already mounted. 
-#                      with the kernel config proposed in the book, dev 
-#                      should be automatically mounted by the kernel. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      # Make sure /run is available before logging any messages 
-      if ! mountpoint /run >/dev/null; then 
-         mount /run || failed=1 
-      fi 
- 
-      mkdir -p   /run/lock  
-      chmod 1777 /run/lock 
- 
-      log_info_msg "Mounting virtual file systems: ${INFO}/run" 
- 
-      if ! mountpoint /proc >/dev/null; then 
-         log_info_msg2 " ${INFO}/proc" 
-         mount -o nosuid,noexec,nodev /proc || failed=1 
-      fi 
- 
-      if ! mountpoint /sys >/dev/null; then 
-         log_info_msg2 " ${INFO}/sys" 
-         mount -o nosuid,noexec,nodev /sys || failed=1 
-      fi 
- 
-      if ! mountpoint /dev >/dev/null; then 
-         log_info_msg2 " ${INFO}/dev" 
-         mount -o mode=0755,nosuid /dev  || failed=1 
-      fi 
- 
-      mkdir -p /dev/shm 
-      log_info_msg2 " ${INFO}/dev/shm" 
-      mount -o nosuid,nodev /dev/shm || failed=1 
- 
-      mkdir -p /sys/fs/cgroup 
-      log_info_msg2 " ${INFO}/sys/fs/cgroup" 
-      mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1 
- 
-      (exit ${failed}) 
-      evaluate_retval 
-      if [ "${failed}" = 1 ]; then 
-         exit 1 
-      fi 
- 
-      log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin" 
-      ln -sf /proc/self/fd/0 /dev/stdin  || failed=1 
- 
-      log_info_msg2 " ${INFO}/dev/stdout" 
-      ln -sf /proc/self/fd/1 /dev/stdout || failed=1 
- 
-      log_info_msg2 " ${INFO}/dev/stderr" 
-      ln -sf /proc/self/fd/2 /dev/stderr || failed=1 
- 
-      log_info_msg2 " ${INFO}/dev/fd" 
-      ln -sfn /proc/self/fd  /dev/fd     || failed=1 
- 
-      if [ -e /proc/kcore ]; then 
-         log_info_msg2 " ${INFO}/dev/core" 
-         ln -sf /proc/kcore  /dev/core   || failed=1 
-      fi 
- 
-      (exit ${failed}) 
-      evaluate_retval 
-      exit $failed 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-# End mountvirtfs 
-D.4. /etc/rc.d/init.d/modules 
-#!/bin/sh 
-######################################################################## 
-# Begin modules 
-# 
-# Description : Module auto-loading script 
-# 
-# Authors     : Zack Winkles 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            modules 
-# Required-Start:      mountvirtfs 
-# Should-Start: 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Loads required modules. 
-# Description:         Loads modules listed in /etc/sysconfig/modules. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-# Assure that the kernel has module support. 
-[ -e /proc/modules ] || exit 0 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      # Exit if there's no modules file or there are no 
-      # valid entries 
-      [ -r /etc/sysconfig/modules ]             || exit 0 
-      grep -E -qv '^($|#)' /etc/sysconfig/modules || exit 0 
- 
-      log_info_msg "Loading modules:" 
- 
-      # Only try to load modules if the user has actually given us 
-      # some modules to load. 
- 
-      while read module args; do 
- 
-         # Ignore comments and blank lines. 
-         case "$module" in 
-            ""|"#"*) continue ;; 
-         esac 
- 
-         # Attempt to load the module, passing any arguments provided. 
-         modprobe ${module} ${args} >/dev/null 
- 
-         # Print the module name if successful, otherwise take note. 
-         if [ $? -eq 0 ]; then 
-            log_info_msg2 " ${module}" 
-         else 
-            failedmod="${failedmod} ${module}" 
-         fi 
-      done < /etc/sysconfig/modules 
- 
-      # Print a message about successfully loaded modules on the correct line. 
-      log_success_msg2 
- 
-      # Print a failure message with a list of any modules that 
-      # may have failed to load. 
-      if [ -n "${failedmod}" ]; then 
-         log_failure_msg "Failed to load modules:${failedmod}" 
-         exit 1 
-      fi 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End modules 
-D.5. /etc/rc.d/init.d/udev 
-#!/bin/sh 
-######################################################################## 
-# Begin udev 
-# 
-# Description : Udev cold-plugging script 
-# 
-# Authors     : Zack Winkles, Alexander E. Patrakov 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-#               Xi Ruoyao - xry111@xry111.site 
-# 
-# Version     : LFS 12.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            udev $time 
-# Required-Start:      localnet 
-# Should-Start:        modules 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Populates /dev with device nodes. 
-# Description:         Mounts a tempfs on /dev and starts the udevd daemon. 
-#                      Device nodes are created as defined by udev. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Populating /dev with device nodes... " 
-      if ! grep -q '[[:space:]]sysfs' /proc/mounts; then 
-         log_failure_msg2 
-         msg="FAILURE:\n\nUnable to create " 
-         msg="${msg}devices without a SysFS filesystem\n\n" 
-         msg="${msg}After you press Enter, this system " 
-         msg="${msg}will be halted and powered off.\n\n" 
-         log_info_msg "$msg" 
-         log_info_msg "Press Enter to continue..." 
-         wait_for_user 
-         /etc/rc.d/init.d/halt start 
-      fi 
- 
-      # Start the udev daemon to continually watch for, and act on, 
-      # uevents 
-      SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon 
- 
-      # Now traverse /sys in order to "coldplug" devices that have 
-      # already been discovered 
-      /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 
-         /bin/udevadm settle 
-      fi 
- 
-      # If any LVM based partitions are on the system, ensure they 
-      # are activated so they can be used. 
-      if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi 
- 
-      log_success_msg2 
-      ;; 
- 
-   *) 
-      echo "Usage ${0} {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End udev 
-D.6. /etc/rc.d/init.d/swap 
-#!/bin/sh 
-######################################################################## 
-# Begin swap 
-# 
-# Description : Swap Control Script 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            swap 
-# Required-Start:      udev 
-# Should-Start:        modules 
-# Required-Stop:       localnet 
-# Should-Stop:         $local_fs 
-# Default-Start:       S 
-# Default-Stop:        0 6 
-# Short-Description:   Activates and deactivates swap partitions. 
-# Description:         Activates and deactivates swap partitions defined in 
-#                      /etc/fstab. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Activating all swap files/partitions..." 
-      swapon -a 
-      evaluate_retval 
-      ;; 
- 
-   stop) 
-      log_info_msg "Deactivating all swap files/partitions..." 
-      swapoff -a 
-      evaluate_retval 
-      ;; 
- 
-   restart) 
-      ${0} stop 
-      sleep 1 
-      ${0} start 
-      ;; 
- 
-   status) 
-      log_success_msg "Retrieving swap status." 
-      swapon -s 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|stop|restart|status}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End swap 
-D.7. /etc/rc.d/init.d/setclock 
-#!/bin/sh 
-######################################################################## 
-# Begin setclock 
-# 
-# Description : Setting Linux Clock 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides: 
-# Required-Start: 
-# Should-Start:        modules 
-# Required-Stop: 
-# Should-Stop:         $syslog 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Stores and restores time from the hardware clock 
-# Description:         On boot, system time is obtained from hwclock.  The 
-#                      hardware clock can also be set on shutdown. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-[ -r /etc/sysconfig/clock ] && . /etc/sysconfig/clock 
- 
- 
-case "${UTC}" in 
-   yes|true|1) 
-      CLOCKPARAMS="${CLOCKPARAMS} --utc" 
-      ;; 
- 
-   no|false|0) 
-      CLOCKPARAMS="${CLOCKPARAMS} --localtime" 
-      ;; 
- 
-esac 
- 
-case ${1} in 
-   start) 
-      hwclock --hctosys ${CLOCKPARAMS} >/dev/null 
-      ;; 
- 
-   stop) 
-      log_info_msg "Setting hardware clock..." 
-      hwclock --systohc ${CLOCKPARAMS} >/dev/null 
-      evaluate_retval 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|stop}" 
-      exit 1 
-      ;; 
- 
-esac 
- 
-exit 0 
-D.8. /etc/rc.d/init.d/checkfs 
-#!/bin/sh 
-######################################################################## 
-# Begin checkfs 
-# 
-# Description : File System Check 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               A. Luebke - luebke@users.sourceforge.net 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-# Based on checkfs script from LFS-3.1 and earlier. 
-# 
-# From man fsck 
-# 0    - No errors 
-# 1    - File system errors corrected 
-# 2    - System should be rebooted 
-# 4    - File system errors left uncorrected 
-# 8    - Operational error 
-# 16   - Usage or syntax error 
-# 32   - Fsck canceled by user request 
-# 128  - Shared library error 
-# 
-######################################################################### 
- 
-### BEGIN INIT INFO 
-# Provides:            checkfs 
-# Required-Start:      udev swap 
-# Should-Start: 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Checks local filesystems before mounting. 
-# Description:         Checks local filesystems before mounting. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      if [ -f /fastboot ]; then 
-         msg="/fastboot found, will omit " 
-         msg="${msg} file system checks as requested.\n" 
-         log_info_msg "${msg}" 
-         exit 0 
-      fi 
- 
-      log_info_msg "Mounting root file system in read-only mode... " 
-      mount -n -o remount,ro / >/dev/null 
- 
-      if [ ${?} != 0 ]; then 
-         log_failure_msg2 
-         msg="\n\nCannot check root " 
-         msg="${msg}filesystem because it could not be mounted " 
-         msg="${msg}in read-only mode.\n\n" 
-         msg="${msg}After you press Enter, this system will be " 
-         msg="${msg}halted and powered off.\n\n" 
-         log_failure_msg "${msg}" 
- 
-         log_info_msg "Press Enter to continue..." 
-         wait_for_user 
-         /etc/rc.d/init.d/halt start 
-      else 
-         log_success_msg2 
-      fi 
- 
-      if [ -f /forcefsck ]; then 
-         msg="/forcefsck found, forcing file" 
-         msg="${msg} system checks as requested." 
-         log_success_msg "$msg" 
-         options="-f" 
-      else 
-         options="" 
-      fi 
- 
-      log_info_msg "Checking file systems..." 
-      # Note: -a option used to be -p; but this fails e.g. on fsck.minix 
-      if is_true "$VERBOSE_FSCK"; then 
-        fsck ${options} -a -A -C -T 
-      else 
-        fsck ${options} -a -A -C -T >/dev/null 
-      fi 
- 
-      error_value=${?} 
- 
-      if [ "${error_value}" = 0 ]; then 
-         log_success_msg2 
-      fi 
- 
-      if [ "${error_value}" = 1 ]; then 
-         msg="\nWARNING:\n\nFile system errors " 
-         msg="${msg}were found and have been corrected.\n" 
-         msg="${msg}      You may want to double-check that " 
-         msg="${msg}everything was fixed properly." 
-         log_warning_msg "$msg" 
-      fi 
- 
-      if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then 
-         msg="\nWARNING:\n\nFile system errors " 
-         msg="${msg}were found and have been " 
-         msg="${msg}corrected, but the nature of the " 
-         msg="${msg}errors require this system to be rebooted.\n\n" 
-         msg="${msg}After you press enter, " 
-         msg="${msg}this system will be rebooted\n\n" 
-         log_failure_msg "$msg" 
- 
-         log_info_msg "Press Enter to continue..." 
-         wait_for_user 
-         reboot -f 
-      fi 
- 
-      if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then 
-         msg="\nFAILURE:\n\nFile system errors " 
-         msg="${msg}were encountered that could not be " 
-         msg="${msg}fixed automatically.\nThis system " 
-         msg="${msg}cannot continue to boot and will " 
-         msg="${msg}therefore be halted until those " 
-         msg="${msg}errors are fixed manually by a " 
-         msg="${msg}System Administrator.\n\n" 
-         msg="${msg}After you press Enter, this system will be " 
-         msg="${msg}halted and powered off.\n\n" 
-         log_failure_msg "$msg" 
- 
-         log_info_msg "Press Enter to continue..." 
-         wait_for_user 
-         /etc/rc.d/init.d/halt start 
-      fi 
- 
-      if [ "${error_value}" -ge 16 ]; then 
-         msg="FAILURE:\n\nUnexpected failure " 
-         msg="${msg}running fsck.  Exited with error " 
-         msg="${msg} code: ${error_value}.\n" 
-         log_info_msg $msg 
-         exit ${error_value} 
-      fi 
- 
-      exit 0 
-      ;; 
-   *) 
-      echo "Usage: ${0} {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-# End checkfs 
-D.9. /etc/rc.d/init.d/mountfs 
-#!/bin/sh 
-######################################################################## 
-# Begin mountfs 
-# 
-# Description : File System Mount Script 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            $local_fs 
-# Required-Start:      udev checkfs 
-# Should-Start:        modules 
-# Required-Stop:       localnet 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop:        0 6 
-# Short-Description:   Mounts/unmounts local filesystems defined in /etc/fstab. 
-# Description:         Remounts root filesystem read/write and mounts all 
-#                      remaining local filesystems defined in /etc/fstab on 
-#                      start.  Remounts root filesystem read-only and unmounts 
-#                      remaining filesystems on stop. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Remounting root file system in read-write mode..." 
-      mount --options remount,rw / >/dev/null 
-      evaluate_retval 
- 
-      # 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. 
- 
-      log_info_msg "Mounting remaining file systems..." 
-      failed=0 
-      mount --all --test-opts no_netdev >/dev/null || failed=1 
-      evaluate_retval 
-      exit $failed 
-      ;; 
- 
-   stop) 
-      # Don't unmount virtual file systems like /run 
-      log_info_msg "Unmounting all other currently mounted file systems..." 
-      # Ensure any loop devices are removed 
-      losetup -D 
-      umount --all --detach-loop --read-only \ 
-             --types notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null 
-      evaluate_retval 
- 
-      # Make sure / is mounted read only (umount bug) 
-      mount --options remount,ro / 
- 
-      # Make all LVM volume groups unavailable, if appropriate 
-      # This fails if swap or / are on an LVM partition 
-      #if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi 
-      if [ -r /etc/mdadm.conf ]; then 
-         log_info_msg "Mark arrays as clean..." 
-         mdadm --wait-clean --scan 
-         evaluate_retval 
-      fi 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|stop}" 
-      exit 1 
-      ;; 
-esac 
- 
-# End mountfs 
-D.10. /etc/rc.d/init.d/udev_retry 
-#!/bin/sh 
-######################################################################## 
-# Begin udev_retry 
-# 
-# Description : Udev cold-plugging script (retry) 
-# 
-# Authors     : Alexander E. Patrakov 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-#               Bryan Kadzban - 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            udev_retry 
-# Required-Start:      udev 
-# Should-Start:        $local_fs cleanfs 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Replays failed uevents and creates additional devices. 
-# Description:         Replays any failed uevents that were skipped due to 
-#                      slow hardware initialization, and creates those needed 
-#                      device nodes 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Retrying failed uevents, if any..." 
- 
-      rundir=/run/udev 
-      # From Debian: "copy the rules generated before / was mounted 
-      # read-write": 
- 
-      for file in ${rundir}/tmp-rules--*; do 
-         dest=${file##*tmp-rules--} 
-         [ "$dest" = '*' ] && break 
-         cat $file >> /etc/udev/rules.d/$dest 
-         rm -f $file 
-      done 
- 
-      # Re-trigger the uevents that may have failed, 
-      # in hope they will succeed now 
-      /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \ 
-      while read line ; do 
-         for subsystem in $line ; do 
-            /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 
-         /bin/udevadm settle 
-      fi 
- 
-      evaluate_retval 
-      ;; 
- 
-   *) 
-      echo "Usage ${0} {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End udev_retry 
-D.11. /etc/rc.d/init.d/cleanfs 
-#!/bin/sh 
-######################################################################## 
-# Begin cleanfs 
-# 
-# Description : Clean file system 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            cleanfs 
-# Required-Start:      $local_fs 
-# Should-Start: 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Cleans temporary directories early in the boot process. 
-# Description:         Cleans temporary directories /run, /var/lock, and 
-#                      optionally, /tmp.  cleanfs also creates /run/utmp 
-#                      and any files defined in /etc/sysconfig/createfiles. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-# Function to create files/directory on boot. 
-create_files() 
-{ 
-   # Input to file descriptor 9 and output to stdin (redirection) 
-   exec 9>&0 < /etc/sysconfig/createfiles 
- 
-   while read name type perm usr grp dtype maj min junk 
-   do 
-      # Ignore comments and blank lines. 
-      case "${name}" in 
-         ""|\#*) continue ;; 
-      esac 
- 
-      # Ignore existing files. 
-      if [ ! -e "${name}" ]; then 
-         # Create stuff based on its type. 
-         case "${type}" in 
-            dir) 
-               mkdir "${name}" 
-               ;; 
-            file) 
-               :> "${name}" 
-               ;; 
-            dev) 
-               case "${dtype}" in 
-                  char) 
-                     mknod "${name}" c ${maj} ${min} 
-                     ;; 
-                  block) 
-                     mknod "${name}" b ${maj} ${min} 
-                     ;; 
-                  pipe) 
-                     mknod "${name}" p 
-                     ;; 
-                  *) 
-                     log_warning_msg "\nUnknown device type: ${dtype}" 
-                     ;; 
-               esac 
-               ;; 
-            *) 
-               log_warning_msg "\nUnknown type: ${type}" 
-               continue 
-               ;; 
-         esac 
- 
-         # Set up the permissions, too. 
-         chown ${usr}:${grp} "${name}" 
-         chmod ${perm} "${name}" 
-      fi 
-   done 
- 
-   # Close file descriptor 9 (end redirection) 
-   exec 0>&9 9>&- 
-   return 0 
-} 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Cleaning file systems:" 
- 
-      if [ "${SKIPTMPCLEAN}" = "" ]; then 
-         log_info_msg2 " /tmp" 
-         cd /tmp && 
-         find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1 
-      fi 
- 
-      > /run/utmp 
- 
-      if grep -q '^utmp:' /etc/group ; then 
-         chmod 664 /run/utmp 
-         chgrp utmp /run/utmp 
-      fi 
- 
-      (exit ${failed}) 
-      evaluate_retval 
- 
-      if grep -E -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then 
-         log_info_msg "Creating files and directories... " 
-         create_files      # Always returns 0 
-         evaluate_retval 
-      fi 
- 
-      exit $failed 
-      ;; 
-   *) 
-      echo "Usage: ${0} {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-# End cleanfs 
-D.12. /etc/rc.d/init.d/console 
-#!/bin/sh 
-######################################################################## 
-# Begin console 
-# 
-# Description : Sets keymap and screen font 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               Alexander E. Patrakov 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            console 
-# Required-Start:      $local_fs 
-# Should-Start:        udev_retry 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Sets up a localised console. 
-# Description:         Sets up fonts and language settings for the user's 
-#                      local as defined by /etc/sysconfig/console. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-# Native English speakers probably don't have /etc/sysconfig/console at all 
-[ -r /etc/sysconfig/console ] && . /etc/sysconfig/console 
- 
-failed=0 
- 
-case "${1}" in 
-   start) 
-      # See if we need to do anything 
-      if [ -z "${KEYMAP}"         ] && [ -z "${KEYMAP_CORRECTIONS}" ] && 
-         [ -z "${FONT}"           ] && [ -z "${LEGACY_CHARSET}"     ] && 
-         ! is_true "${UNICODE}"; then 
-         exit 0 
-      fi 
- 
-      # There should be no bogus failures below this line! 
-      log_info_msg "Setting up Linux console..." 
- 
-      # Figure out if a framebuffer console is used 
-      [ -d /sys/class/graphics/fbcon ] && use_fb=1 || use_fb=0 
- 
-      # Figure out the command to set the console into the 
-      # desired mode 
-      is_true "${UNICODE}" && 
-         MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" || 
-         MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a" 
- 
-      # On framebuffer consoles, font has to be set for each vt in 
-      # UTF-8 mode. This doesn't hurt in non-UTF-8 mode also. 
- 
-      ! is_true "${use_fb}" || [ -z "${FONT}" ] || 
-         MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}" 
- 
-      # Apply that command to all consoles mentioned in 
-      # /etc/inittab. Important: in the UTF-8 mode this should 
-      # happen before setfont, otherwise a kernel bug will 
-      # show up and the unicode map of the font will not be 
-      # used. 
- 
-      for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab | 
-         grep -o '\btty[[:digit:]]*\b'` 
-      do 
-         openvt -f -w -c ${TTY#tty} -- \ 
-            /bin/sh -c "${MODE_COMMAND}" || failed=1 
-      done 
- 
-      # Set the font (if not already set above) and the keymap 
-      [ "${use_fb}" == "1" ] || [ -z "${FONT}" ] || setfont $FONT || failed=1 
- 
-      [ -z "${KEYMAP}" ] || 
-         loadkeys ${KEYMAP} >/dev/null 2>&1 || 
-         failed=1 
- 
-      [ -z "${KEYMAP_CORRECTIONS}" ] || 
-         loadkeys ${KEYMAP_CORRECTIONS} >/dev/null 2>&1 || 
-         failed=1 
- 
-      # Convert the keymap from $LEGACY_CHARSET to UTF-8 
-      [ -z "$LEGACY_CHARSET" ] || 
-         dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u >/dev/null 2>&1 || 
-         failed=1 
- 
-      # If any of the commands above failed, the trap at the 
-      # top would set $failed to 1 
-      ( exit $failed ) 
-      evaluate_retval 
- 
-      exit $failed 
-      ;; 
- 
-   *) 
-      echo "Usage:  ${0} {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-# End console 
-D.13. /etc/rc.d/init.d/localnet 
-#!/bin/sh 
-######################################################################## 
-# Begin localnet 
-# 
-# Description : Loopback device 
-# 
-# Authors     : Gerard Beekmans  - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            localnet 
-# Required-Start:      mountvirtfs 
-# Should-Start:        modules 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop:        0 6 
-# Short-Description:   Starts the local network. 
-# Description:         Sets the hostname of the machine and starts the 
-#                      loopback interface. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
-[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network 
-[ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname` 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Bringing up the loopback interface..." 
-      ip addr add 127.0.0.1/8 label lo dev lo 
-      ip link set lo up 
-      evaluate_retval 
- 
-      log_info_msg "Setting hostname to ${HOSTNAME}..." 
-      hostname ${HOSTNAME} 
-      evaluate_retval 
-      ;; 
- 
-   stop) 
-      log_info_msg "Bringing down the loopback interface..." 
-      ip link set lo down 
-      evaluate_retval 
-      ;; 
- 
-   restart) 
-      ${0} stop 
-      sleep 1 
-      ${0} start 
-      ;; 
- 
-   status) 
-      echo "Hostname is: $(hostname)" 
-      ip link show lo 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|stop|restart|status}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End localnet 
-D.14. /etc/rc.d/init.d/sysctl 
-#!/bin/sh 
-######################################################################## 
-# Begin sysctl 
-# 
-# Description : File uses /etc/sysctl.conf to set kernel runtime 
-#               parameters 
-# 
-# Authors     : Nathan Coulson (nathan AT linuxfromscratch D0T org) 
-#               Matthew Burgress (matthew AT linuxfromscratch D0T org) 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            sysctl 
-# Required-Start:      mountvirtfs 
-# Should-Start:        console 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       S 
-# Default-Stop: 
-# Short-Description:   Makes changes to the proc filesystem 
-# Description:         Makes changes to the proc filesystem as defined in 
-#                      /etc/sysctl.conf.  See 'man sysctl(8)'. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      if [ -f "/etc/sysctl.conf" ]; then 
-         log_info_msg "Setting kernel runtime parameters..." 
-         sysctl -q -p 
-         evaluate_retval 
-      fi 
-      ;; 
- 
-   status) 
-      sysctl -a 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|status}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End sysctl 
-D.15. /etc/rc.d/init.d/sysklogd 
-#!/bin/sh 
-######################################################################## 
-# Begin sysklogd 
-# 
-# Description : Sysklogd loader 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org LFS12.1 
-#               Remove kernel log daemon.  The functionality has been 
-#               merged with syslogd.                 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            $syslog 
-# Required-Start:      $first localnet 
-# Should-Start: 
-# Required-Stop:       $local_fs 
-# Should-Stop:         sendsignals 
-# Default-Start:       2 3 4 5 
-# Default-Stop:        0 1 6 
-# Short-Description:   Starts system log daemon. 
-# Description:         Starts system log daemon. 
-#                      /etc/fstab. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Starting system log daemon..." 
-      parms=${SYSKLOGD_PARMS-'-m 0'} 
-      start_daemon /sbin/syslogd $parms 
-      evaluate_retval 
-      ;; 
- 
-   stop) 
-      log_info_msg "Stopping system log daemon..." 
-      killproc /sbin/syslogd 
-      evaluate_retval 
-      ;; 
- 
-   reload) 
-      log_info_msg "Reloading system log daemon config file..." 
-      pid=`pidofproc syslogd` 
-      kill -HUP "${pid}" 
-      evaluate_retval 
-      ;; 
- 
-   restart) 
-      ${0} stop 
-      sleep 1 
-      ${0} start 
-      ;; 
- 
-   status) 
-      statusproc /sbin/syslogd 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|stop|reload|restart|status}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End sysklogd 
-D.16. /etc/rc.d/init.d/network 
-#!/bin/sh 
-######################################################################## 
-# Begin network 
-# 
-# Description : Network Control Script 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               Nathan Coulson - nathan AT linuxfromscratch D0T org 
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            $network 
-# Required-Start:      $local_fs localnet swap 
-# Should-Start:        $syslog firewalld iptables nftables 
-# Required-Stop:       $local_fs localnet swap 
-# Should-Stop:         $syslog firewalld iptables nftables 
-# Default-Start:       2 3 4 5 
-# Default-Stop:        0 1 6 
-# Short-Description:   Starts and configures network interfaces. 
-# Description:         Starts and configures network interfaces. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-case "${1}" in 
-   start) 
-      # if the default route exists, network is already configured 
-      if ip route | grep -q "^default"; then return 0; fi 
-      # Start all network interfaces 
-      for file in /etc/sysconfig/ifconfig.* 
-      do 
-         interface=${file##*/ifconfig.} 
- 
-         # Skip if $file is * (because nothing was found) 
-         if [ "${interface}" = "*" ]; then continue; fi 
- 
-         /sbin/ifup ${interface} 
-      done 
-      ;; 
- 
-   stop) 
-      # Unmount any network mounted file systems 
-       umount --all --force --types nfs,cifs,nfs4 
- 
-      # Reverse list 
-      net_files="" 
-      for file in  /etc/sysconfig/ifconfig.* 
-      do 
-         net_files="${file} ${net_files}" 
-      done 
- 
-      # Stop all network interfaces 
-      for file in ${net_files} 
-      do 
-         interface=${file##*/ifconfig.} 
- 
-         # Skip if $file is * (because nothing was found) 
-         if [ "${interface}" = "*" ]; then continue; fi 
- 
-         # See if interface exists 
-         if [ ! -e /sys/class/net/$interface ]; then continue; fi 
- 
-         # Is interface UP? 
-         ip link show $interface 2>/dev/null | grep -q "state UP" 
-         if [ $? -ne 0 ];  then continue; fi 
- 
-         /sbin/ifdown ${interface} 
-      done 
-      ;; 
- 
-   restart) 
-      ${0} stop 
-      sleep 1 
-      ${0} start 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|stop|restart}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End network 
-D.17. /etc/rc.d/init.d/sendsignals 
-#!/bin/sh 
-######################################################################## 
-# Begin sendsignals 
-# 
-# Description : Sendsignals Script 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            sendsignals 
-# Required-Start: 
-# Should-Start: 
-# Required-Stop:       $local_fs swap localnet 
-# Should-Stop: 
-# Default-Start: 
-# Default-Stop:        0 6 
-# Short-Description:   Attempts to kill remaining processes. 
-# Description:         Attempts to kill remaining processes. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   stop) 
-      omit=$(pidof mdmon) 
-      [ -n "$omit" ] && omit="-o $omit" 
- 
-      log_info_msg "Sending all processes the TERM signal..." 
-      killall5 -15 $omit 
-      error_value=${?} 
- 
-      sleep ${KILLDELAY} 
- 
-      if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then 
-         log_success_msg 
-      else 
-         log_failure_msg 
-      fi 
- 
-      log_info_msg "Sending all processes the KILL signal..." 
-      killall5 -9 $omit 
-      error_value=${?} 
- 
-      sleep ${KILLDELAY} 
- 
-      if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then 
-         log_success_msg 
-      else 
-         log_failure_msg 
-      fi 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {stop}" 
-      exit 1 
-      ;; 
- 
-esac 
- 
-exit 0 
- 
-# End sendsignals 
-D.18. /etc/rc.d/init.d/reboot 
-#!/bin/sh 
-######################################################################## 
-# Begin reboot 
-# 
-# Description : Reboot Scripts 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-#             : Pierre Labastie - pierre AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-# Notes       : Update March 24th, 2022: change "stop" to "start". 
-#               Add the $last facility to Required-start 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            reboot 
-# Required-Start:      $last 
-# Should-Start: 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       6 
-# Default-Stop: 
-# Short-Description:   Reboots the system. 
-# Description:         Reboots the System. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Restarting system..." 
-      reboot -d -f -i 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start}" 
-      exit 1 
-      ;; 
- 
-esac 
- 
-# End reboot 
-D.19. /etc/rc.d/init.d/halt 
-#!/bin/sh 
-######################################################################## 
-# Begin halt 
-# 
-# Description : Halt Script 
-# 
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-#             : Pierre Labastie - pierre AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.0 
-# 
-# Notes       : Update March 24th, 2022: change "stop" to "start". 
-#               Add the $last facility to Required-start 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            halt 
-# Required-Start:      $last 
-# Should-Start: 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start:       0 
-# Default-Stop: 
-# Short-Description:   Halts the system. 
-# Description:         Halts the System. 
-# X-LFS-Provided-By:   LFS 
-### END INIT INFO 
- 
-case "${1}" in 
-   start) 
-      halt -d -f -i -p 
-      ;; 
- 
-   *) 
-      echo "Usage: {start}" 
-      exit 1 
-      ;; 
-esac 
- 
-# End halt 
-D.20. /etc/rc.d/init.d/template 
-#!/bin/sh 
-######################################################################## 
-# Begin scriptname 
-# 
-# Description : 
-# 
-# Authors     : 
-# 
-# Version     : LFS x.x 
-# 
-# Notes       : 
-# 
-######################################################################## 
- 
-### BEGIN INIT INFO 
-# Provides:            template 
-# Required-Start: 
-# Should-Start: 
-# Required-Stop: 
-# Should-Stop: 
-# Default-Start: 
-# Default-Stop: 
-# Short-Description: 
-# Description: 
-# X-LFS-Provided-By: 
-### END INIT INFO 
- 
-. /lib/lsb/init-functions 
- 
-case "${1}" in 
-   start) 
-      log_info_msg "Starting..." 
-    # if it is possible to use start_daemon 
-      start_daemon fully_qualified_path 
-    # if it is not possible to use start_daemon 
-    # (command to start the daemon is not simple enough) 
-      if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then 
-         command_to_start_the_service 
-      fi 
-      evaluate_retval 
-      ;; 
- 
-   stop) 
-      log_info_msg "Stopping..." 
-    # if it is possible to use killproc 
-      killproc fully_qualified_path 
-    # if it is not possible to use killproc 
-    # (the daemon shouldn't be stopped by killing it) 
-      if pidofproc daemon_name_as_reported_by_ps >/dev/null; then 
-         command_to_stop_the_service 
-      fi 
-      evaluate_retval 
-      ;; 
- 
-   restart) 
-      ${0} stop 
-      sleep 1 
-      ${0} start 
-      ;; 
- 
-   *) 
-      echo "Usage: ${0} {start|stop|restart}" 
-      exit 1 
-      ;; 
-esac 
- 
-exit 0 
- 
-# End scriptname 
-D.21. /etc/sysconfig/modules 
-######################################################################## 
-# Begin /etc/sysconfig/modules 
-# 
-# Description : Module auto-loading configuration 
-# 
-# Authors     : 
-# 
-# Version     : 00.00 
-# 
-# Notes       : The syntax of this file is as follows: 
-#               <module> [<arg1> <arg2> ...] 
-# 
-# Each module should be on its own line, and any options that you want 
-# passed to the module should follow it.  The line deliminator is either 
-# a space or a tab. 
-######################################################################## 
- 
-# End /etc/sysconfig/modules 
-D.22. /etc/sysconfig/createfiles 
-######################################################################## 
-# Begin /etc/sysconfig/createfiles 
-# 
-# Description : Createfiles script config file 
-# 
-# Authors     : 
-# 
-# Version     : 00.00 
-# 
-# Notes       : The syntax of this file is as follows: 
-#               if type is equal to "file" or "dir" 
-#                <filename> <type> <permissions> <user> <group> 
-#               if type is equal to "dev" 
-#                <filename> <type> <permissions> <user> <group> <devtype> 
-#             <major> <minor> 
-# 
-#               <filename> is the name of the file which is to be created 
-#               <type> is either file, dir, or dev. 
-#                       file creates a new file 
-#                       dir creates a new directory 
-#                       dev creates a new device 
-#               <devtype> is either block, char or pipe 
-#                       block creates a block device 
-#                       char creates a character device 
-#                       pipe creates a pipe, this will ignore the <major> and 
-#           <minor> fields 
-#               <major> and <minor> are the major and minor numbers used for 
-#     the device. 
-######################################################################## 
- 
-# End /etc/sysconfig/createfiles 
-D.23. /etc/sysconfig/udev-retry 
-######################################################################## 
-# Begin /etc/sysconfig/udev_retry 
-# 
-# Description : udev_retry script configuration 
-# 
-# Authors     : 
-# 
-# Version     : 00.00 
-# 
-# Notes       : Each subsystem that may need to be re-triggered after mountfs 
-#               runs should be listed in this file.  Probable subsystems to be 
-#               listed here are rtc (due to /var/lib/hwclock/adjtime) and sound 
-#               (due to both /var/lib/alsa/asound.state and /usr/sbin/alsactl). 
-#               Entries are whitespace-separated. 
-######################################################################## 
- 
-rtc 
- 
-# End /etc/sysconfig/udev_retry 
-D.24. /sbin/ifup 
-#!/bin/sh 
-######################################################################## 
-# Begin /sbin/ifup 
-# 
-# Description : Interface Up 
-# 
-# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org 
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# 
-# Version     : LFS 7.7 
-# 
-# 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() 
-{ 
-  log_info_msg "Bringing up the ${1} interface..." 
- 
-  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 "Interface ${IFACE} doesn't exist." 
-     exit 1 
-  fi 
- 
-  evaluate_retval 
-} 
- 
-RELEASE="7.7" 
- 
-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 
- 
-if [ ! -r "${file}" ]; then 
-   log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed." 
-   exit 1 
-fi 
- 
-.  $file 
- 
-if [ "$IFACE" = "" ]; then 
-   log_failure_msg "Unable to bring up ${1} interface! ${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 
-   exit 0 
-fi 
- 
-# Bring up the interface 
-if [ "$VIRTINT" != "yes" ]; then 
-   up ${IFACE} 
-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 
- 
-#if [ "${SERVICE}" = "wpa" ]; then log_success_msg; fi 
- 
-# Create/configure the interface 
-for S in ${SERVICE}; do 
-  IFCONFIG=${file} /lib/services/${S} ${IFACE} up 
-done 
- 
-# Set link up virtual interfaces 
-if [ "${VIRTINT}" == "yes" ]; then 
-   up ${IFACE} 
-fi 
- 
-# Bring up any additional interface components 
-for I in $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 "Gateway already setup; skipping." 
-   else 
-      log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..." 
-      ip route add default via ${GATEWAY} dev ${IFACE} 
-      evaluate_retval 
-   fi 
-fi 
- 
-# End /sbin/ifup 
-D.25. /sbin/ifdown 
-#!/bin/bash 
-######################################################################## 
-# Begin /sbin/ifdown 
-# 
-# Description : Interface Down 
-# 
-# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org 
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T 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 
-D.26. /lib/services/ipv4-static 
-#!/bin/sh 
-######################################################################## 
-# Begin /lib/services/ipv4-static 
-# 
-# Description : IPV4 Static Boot Script 
-# 
-# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org 
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T 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 "${LABEL}" ]; then 
-   args="${args} label ${LABEL}" 
-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 
-         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 
-D.27. /lib/services/ipv4-static-route 
-#!/bin/sh 
-######################################################################## 
-# Begin /lib/services/ipv4-static-route 
-# 
-# Description : IPV4 Static Route Script 
-# 
-# Authors     : Kevin P. Fleming - kpfleming@linuxfromscratch.org 
-#               DJ Lucas - dj AT linuxfromscratch D0T org 
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T 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 "${GATEWAY}" ]; then 
-   MSG="The GATEWAY variable cannot be set in ${IFCONFIG} for static routes.\n" 
-   log_failure_msg "$MSG Use STATIC_GATEWAY only, cannot continue" 
-   exit 1 
-fi 
- 
-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 "${STATIC_GATEWAY}" ]; then 
-      log_failure_msg "STATIC_GATEWAY variable missing from ${IFCONFIG}, cannot continue." 
-      exit 1 
-   fi 
-   args="${args} via ${STATIC_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 
software/linux_server/lfs/appendices/boot_and_sysconfig_scripts.1740305265.txt.gz · Последнее изменение: vladpolskiy