summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.0-sysv/scripts')
-rw-r--r--lfs-12.0-sysv/scripts/apds01.html313
-rw-r--r--lfs-12.0-sysv/scripts/apds02.html892
-rw-r--r--lfs-12.0-sysv/scripts/apds03.html186
-rw-r--r--lfs-12.0-sysv/scripts/apds04.html163
-rw-r--r--lfs-12.0-sysv/scripts/apds05.html158
-rw-r--r--lfs-12.0-sysv/scripts/apds06.html144
-rw-r--r--lfs-12.0-sysv/scripts/apds07.html144
-rw-r--r--lfs-12.0-sysv/scripts/apds08.html230
-rw-r--r--lfs-12.0-sysv/scripts/apds09.html164
-rw-r--r--lfs-12.0-sysv/scripts/apds10.html155
-rw-r--r--lfs-12.0-sysv/scripts/apds11.html203
-rw-r--r--lfs-12.0-sysv/scripts/apds12.html188
-rw-r--r--lfs-12.0-sysv/scripts/apds13.html151
-rw-r--r--lfs-12.0-sysv/scripts/apds14.html136
-rw-r--r--lfs-12.0-sysv/scripts/apds15.html160
-rw-r--r--lfs-12.0-sysv/scripts/apds16.html171
-rw-r--r--lfs-12.0-sysv/scripts/apds17.html151
-rw-r--r--lfs-12.0-sysv/scripts/apds18.html129
-rw-r--r--lfs-12.0-sysv/scripts/apds19.html124
-rw-r--r--lfs-12.0-sysv/scripts/apds20.html150
-rw-r--r--lfs-12.0-sysv/scripts/apds21.html100
-rw-r--r--lfs-12.0-sysv/scripts/apds22.html114
-rw-r--r--lfs-12.0-sysv/scripts/apds23.html100
-rw-r--r--lfs-12.0-sysv/scripts/apds24.html229
-rw-r--r--lfs-12.0-sysv/scripts/apds25.html179
-rw-r--r--lfs-12.0-sysv/scripts/apds26.html161
-rw-r--r--lfs-12.0-sysv/scripts/apds27.html180
-rw-r--r--lfs-12.0-sysv/scripts/apes01.html90
-rw-r--r--lfs-12.0-sysv/scripts/scripts.html91
-rw-r--r--lfs-12.0-sysv/scripts/udev-rules.html85
30 files changed, 5441 insertions, 0 deletions
diff --git a/lfs-12.0-sysv/scripts/apds01.html b/lfs-12.0-sysv/scripts/apds01.html
new file mode 100644
index 0000000..1d203f3
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds01.html
@@ -0,0 +1,313 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.1. /etc/rc.d/init.d/rc
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="scripts.html" title=
+ "Скрипты загрузки и настройки системы-20230728">Пред.</a>
+ <p>
+ Скрипты загрузки и настройки системы-20230728
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds02.html" title=
+ "/lib/lsb/init-functions">След.</a>
+ <p>
+ /lib/lsb/init-functions
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="rc" name="rc"></a>D.1. /etc/rc.d/init.d/rc
+ </h1>
+ <p>
+ Скрипт <code class="systemitem">rc</code> это первый скрипт,
+ вызываемый системой инициализации <span class=
+ "application">init</span> и инициирующий процесс загрузки.
+ </p>
+ <pre class="screen">#!/bin/bash
+########################################################################
+# Begin rc
+#
+# Description : Main Run Level Control Script
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# : DJ Lucas - dj@linuxfromscratch.org
+# Updates : Bruce Dubbs - bdubbs@linuxfromscratch.org
+# : Pierre Labastie - pierre@linuxfromscratch.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 ] &amp;&amp; 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}" != "" ] &amp;&amp; runlevel=${1}
+
+if [ "${runlevel}" == "" ]; then
+ echo "Usage: ${0} &lt;runlevel&gt;" &gt;&amp;2
+ exit 1
+fi
+
+previous=${PREVLEVEL}
+[ "${previous}" == "" ] &amp;&amp; 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 ] &amp;&amp; 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&gt;&amp;1 &gt; /dev/null
+fi
+
+# Make lower case
+[ "${interactive}" == "I" ] &amp;&amp; interactive="i"
+[ "${interactive}" != "i" ] &amp;&amp; interactive=""
+
+# Read the state file if it exists from runlevel S
+[ -r /run/interactive ] &amp;&amp; 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&gt; /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 ] &amp;&amp; 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&gt; /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 ] &amp;&amp; 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\"" &gt; /run/interactive
+else
+ rm -f /run/interactive 2&gt; /dev/null
+fi
+
+# Copy the boot log on initial boot only
+if [ "${previous}" == "N" -a "${runlevel}" != "S" ]; then
+ cat $BOOTLOG &gt;&gt; /var/log/boot.log
+
+ # Mark the end of boot
+ echo "--------" &gt;&gt; /var/log/boot.log
+
+ # Remove the temporary file
+ rm -f $BOOTLOG 2&gt; /dev/null
+fi
+
+# End rc
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="scripts.html" title=
+ "Скрипты загрузки и настройки системы-20230728">Пред.</a>
+ <p>
+ Скрипты загрузки и настройки системы-20230728
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds02.html" title=
+ "/lib/lsb/init-functions">След.</a>
+ <p>
+ /lib/lsb/init-functions
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds02.html b/lfs-12.0-sysv/scripts/apds02.html
new file mode 100644
index 0000000..43d4727
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds02.html
@@ -0,0 +1,892 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.2. /lib/lsb/init-functions
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds01.html" title=
+ "/etc/rc.d/init.d/rc">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/rc
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds03.html" title=
+ "/etc/rc.d/init.d/mountvirtfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/mountvirtfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="init-functions" name="init-functions"></a>D.2.
+ /lib/lsb/init-functions
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+#
+# Begin /lib/lsb/init-funtions
+#
+# Description : Run Level Control Functions
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# : DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version : LFS 7.0
+#
+# Notes : With code based on Matthias Benkmann's simpleinit-msb
+# http://winterdrache.de/linux/newboot/index.html
+#
+# The file should be located in /lib/lsb
+#
+########################################################################
+
+## Environmental setup
+# Setup default values for environment
+umask 022
+export PATH="/bin:/usr/bin:/sbin:/usr/sbin"
+
+## 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 ] &amp;&amp; . /etc/sysconfig/rc.site
+
+## Screen Dimensions
+# Find current screen size
+if [ -z "${COLUMNS}" ]; then
+ COLUMNS=$(stty size)
+ COLUMNS=${COLUMNS##* }
+fi
+
+# When using remote connections, such as a serial port, stty size returns 0
+if [ "${COLUMNS}" = "0" ]; then
+ COLUMNS=80
+fi
+
+## Measurements for positioning result messages
+COL=$((${COLUMNS} - 8))
+WCOL=$((${COL} - 2))
+
+## Set Cursor Position Commands, used via echo
+SET_COL="\\033[${COL}G" # at the $COL char
+SET_WCOL="\\033[${WCOL}G" # at the $WCOL char
+CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char
+CURS_ZERO="\\033[0G"
+
+################################################################################
+# 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&gt; /dev/null
+
+ if [ "${?}" -ne "0" ]; then
+ # Process is dead, continue to next and assume all is well
+ continue
+ else
+ kill "${signal}" "${pid}" 2&gt; /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&gt; /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&gt; /dev/null
+ sleep 1
+ # Check again, and fail if still running
+ kill -0 "${pid}" 2&gt; /dev/null &amp;&amp; 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&gt; /dev/null
+ fi
+ else
+ if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2&gt; /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}"`
+ # This can optionally be written as 'sed 1q' to repalce 'head -n1'
+ # should LFS move /bin/head to /usr/bin/head
+ else
+ # Use pidof
+ pidlist=`pidof "${program}"`
+ fi
+
+ # Figure out if all listed PIDs are running.
+ for pid in ${pidlist}; do
+ kill -0 ${pid} 2&gt; /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()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
+
+ # Strip non-printable characters from log file
+ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+
+ timespec
+ /bin/echo -e "${STAMP} ${logmessage} OK" &gt;&gt; ${BOOTLOG}
+
+ return 0
+}
+
+log_success_msg2()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
+
+ echo " OK" &gt;&gt; ${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()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
+
+ # Strip non-printable characters from log file
+
+ timespec
+ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+ /bin/echo -e "${STAMP} ${logmessage} FAIL" &gt;&gt; ${BOOTLOG}
+
+ return 0
+}
+
+log_failure_msg2()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
+
+ echo "FAIL" &gt;&gt; ${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()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
+
+ # Strip non-printable characters from log file
+ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+ timespec
+ /bin/echo -e "${STAMP} ${logmessage} WARN" &gt;&gt; ${BOOTLOG}
+
+ return 0
+}
+
+log_skip_msg()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
+
+ # Strip non-printable characters from log file
+ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+ /bin/echo "SKIP" &gt;&gt; ${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()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+
+ # Strip non-printable characters from log file
+ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+ timespec
+ /bin/echo -n -e "${STAMP} ${logmessage}" &gt;&gt; ${BOOTLOG}
+
+ return 0
+}
+
+log_info_msg2()
+{
+ /bin/echo -n -e "${@}"
+
+ # Strip non-printable characters from log file
+ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+ /bin/echo -n -e "${logmessage}" &gt;&gt; ${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} " &gt; /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} " &gt; /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" ] &amp;&amp; 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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds01.html" title=
+ "/etc/rc.d/init.d/rc">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/rc
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds03.html" title=
+ "/etc/rc.d/init.d/mountvirtfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/mountvirtfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds03.html b/lfs-12.0-sysv/scripts/apds03.html
new file mode 100644
index 0000000..eba93b9
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds03.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.3. /etc/rc.d/init.d/mountvirtfs
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds02.html" title=
+ "/lib/lsb/init-functions">Пред.</a>
+ <p>
+ /lib/lsb/init-functions
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds04.html" title=
+ "/etc/rc.d/init.d/modules">След.</a>
+ <p>
+ /etc/rc.d/init.d/modules
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="mountvirtfs" name="mountvirtfs"></a>D.3.
+ /etc/rc.d/init.d/mountvirtfs
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin mountvirtfs
+#
+# Description : Ensure proc, sysfs, run, and dev are mounted
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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 &gt;/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 &gt;/dev/null; then
+ log_info_msg2 " ${INFO}/proc"
+ mount -o nosuid,noexec,nodev /proc || failed=1
+ fi
+
+ if ! mountpoint /sys &gt;/dev/null; then
+ log_info_msg2 " ${INFO}/sys"
+ mount -o nosuid,noexec,nodev /sys || failed=1
+ fi
+
+ if ! mountpoint /dev &gt;/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 -sf /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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds02.html" title=
+ "/lib/lsb/init-functions">Пред.</a>
+ <p>
+ /lib/lsb/init-functions
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds04.html" title=
+ "/etc/rc.d/init.d/modules">След.</a>
+ <p>
+ /etc/rc.d/init.d/modules
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds04.html b/lfs-12.0-sysv/scripts/apds04.html
new file mode 100644
index 0000000..05dc2b1
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds04.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.4. /etc/rc.d/init.d/modules
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds03.html" title=
+ "/etc/rc.d/init.d/mountvirtfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/mountvirtfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds05.html" title=
+ "/etc/rc.d/init.d/udev">След.</a>
+ <p>
+ /etc/rc.d/init.d/udev
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="modules" name="modules"></a>D.4. /etc/rc.d/init.d/modules
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin modules
+#
+# Description : Module auto-loading script
+#
+# Authors : Zack Winkles
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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} &gt;/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 &lt; /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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds03.html" title=
+ "/etc/rc.d/init.d/mountvirtfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/mountvirtfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds05.html" title=
+ "/etc/rc.d/init.d/udev">След.</a>
+ <p>
+ /etc/rc.d/init.d/udev
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds05.html b/lfs-12.0-sysv/scripts/apds05.html
new file mode 100644
index 0000000..1e9b5b3
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds05.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.5. /etc/rc.d/init.d/udev
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds04.html" title=
+ "/etc/rc.d/init.d/modules">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/modules
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds06.html" title=
+ "/etc/rc.d/init.d/swap">След.</a>
+ <p>
+ /etc/rc.d/init.d/swap
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="udev" name="udev"></a>D.5. /etc/rc.d/init.d/udev
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin udev
+#
+# Description : Udev cold-plugging script
+#
+# Authors : Zack Winkles, Alexander E. Patrakov
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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 stop
+ 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 &gt;/dev/null; fi
+
+ log_success_msg2
+ ;;
+
+ *)
+ echo "Usage ${0} {start}"
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# End udev
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds04.html" title=
+ "/etc/rc.d/init.d/modules">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/modules
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds06.html" title=
+ "/etc/rc.d/init.d/swap">След.</a>
+ <p>
+ /etc/rc.d/init.d/swap
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds06.html b/lfs-12.0-sysv/scripts/apds06.html
new file mode 100644
index 0000000..69ad1e2
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds06.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.6. /etc/rc.d/init.d/swap
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds05.html" title=
+ "/etc/rc.d/init.d/udev">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/udev
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds07.html" title=
+ "/etc/rc.d/init.d/setclock">След.</a>
+ <p>
+ /etc/rc.d/init.d/setclock
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="swap" name="swap"></a>D.6. /etc/rc.d/init.d/swap
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin swap
+#
+# Description : Swap Control Script
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds05.html" title=
+ "/etc/rc.d/init.d/udev">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/udev
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds07.html" title=
+ "/etc/rc.d/init.d/setclock">След.</a>
+ <p>
+ /etc/rc.d/init.d/setclock
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds07.html b/lfs-12.0-sysv/scripts/apds07.html
new file mode 100644
index 0000000..c80209a
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds07.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.7. /etc/rc.d/init.d/setclock
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds06.html" title=
+ "/etc/rc.d/init.d/swap">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/swap
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds08.html" title=
+ "/etc/rc.d/init.d/checkfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/checkfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="setclock" name="setclock"></a>D.7. /etc/rc.d/init.d/setclock
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin setclock
+#
+# Description : Setting Linux Clock
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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 ] &amp;&amp; . /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} &gt;/dev/null
+ ;;
+
+ stop)
+ log_info_msg "Setting hardware clock..."
+ hwclock --systohc ${CLOCKPARAMS} &gt;/dev/null
+ evaluate_retval
+ ;;
+
+ *)
+ echo "Usage: ${0} {start|stop}"
+ exit 1
+ ;;
+
+esac
+
+exit 0
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds06.html" title=
+ "/etc/rc.d/init.d/swap">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/swap
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds08.html" title=
+ "/etc/rc.d/init.d/checkfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/checkfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds08.html b/lfs-12.0-sysv/scripts/apds08.html
new file mode 100644
index 0000000..a773e18
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds08.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.8. /etc/rc.d/init.d/checkfs
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds07.html" title=
+ "/etc/rc.d/init.d/setclock">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/setclock
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds09.html" title=
+ "/etc/rc.d/init.d/mountfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/mountfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="checkfs" name="checkfs"></a>D.8. /etc/rc.d/init.d/checkfs
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin checkfs
+#
+# Description : File System Check
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# A. Luebke - luebke@users.sourceforge.net
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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 / &gt;/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 stop
+ 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 &gt;/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 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 stop
+ 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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds07.html" title=
+ "/etc/rc.d/init.d/setclock">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/setclock
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds09.html" title=
+ "/etc/rc.d/init.d/mountfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/mountfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds09.html b/lfs-12.0-sysv/scripts/apds09.html
new file mode 100644
index 0000000..8d29e43
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds09.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.9. /etc/rc.d/init.d/mountfs
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds08.html" title=
+ "/etc/rc.d/init.d/checkfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/checkfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds10.html" title=
+ "/etc/rc.d/init.d/udev_retry">След.</a>
+ <p>
+ /etc/rc.d/init.d/udev_retry
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="mountfs" name="mountfs"></a>D.9. /etc/rc.d/init.d/mountfs
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin mountfs
+#
+# Description : File System Mount Script
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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 / &gt;/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 &gt;/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 &gt;/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 &gt; /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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds08.html" title=
+ "/etc/rc.d/init.d/checkfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/checkfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds10.html" title=
+ "/etc/rc.d/init.d/udev_retry">След.</a>
+ <p>
+ /etc/rc.d/init.d/udev_retry
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds10.html b/lfs-12.0-sysv/scripts/apds10.html
new file mode 100644
index 0000000..adf160c
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds10.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.10. /etc/rc.d/init.d/udev_retry
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds09.html" title=
+ "/etc/rc.d/init.d/mountfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/mountfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds11.html" title=
+ "/etc/rc.d/init.d/cleanfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/cleanfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="udev_retry" name="udev_retry"></a>D.10.
+ /etc/rc.d/init.d/udev_retry
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin udev_retry
+#
+# Description : Udev cold-plugging script (retry)
+#
+# Authors : Alexander E. Patrakov
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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" = '*' ] &amp;&amp; break
+ cat $file &gt;&gt; /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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds09.html" title=
+ "/etc/rc.d/init.d/mountfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/mountfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds11.html" title=
+ "/etc/rc.d/init.d/cleanfs">След.</a>
+ <p>
+ /etc/rc.d/init.d/cleanfs
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds11.html b/lfs-12.0-sysv/scripts/apds11.html
new file mode 100644
index 0000000..bc63aab
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds11.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.11. /etc/rc.d/init.d/cleanfs
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds10.html" title=
+ "/etc/rc.d/init.d/udev_retry">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/udev_retry
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds12.html" title=
+ "/etc/rc.d/init.d/console">След.</a>
+ <p>
+ /etc/rc.d/init.d/console
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="cleanfs" name="cleanfs"></a>D.11. /etc/rc.d/init.d/cleanfs
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin cleanfs
+#
+# Description : Clean file system
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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&gt;&amp;0 &lt; /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)
+ :&gt; "${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&gt;&amp;9 9&gt;&amp;-
+ return 0
+}
+
+case "${1}" in
+ start)
+ log_info_msg "Cleaning file systems:"
+
+ if [ "${SKIPTMPCLEAN}" = "" ]; then
+ log_info_msg2 " /tmp"
+ cd /tmp &amp;&amp;
+ find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1
+ fi
+
+ &gt; /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&gt;/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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds10.html" title=
+ "/etc/rc.d/init.d/udev_retry">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/udev_retry
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds12.html" title=
+ "/etc/rc.d/init.d/console">След.</a>
+ <p>
+ /etc/rc.d/init.d/console
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds12.html b/lfs-12.0-sysv/scripts/apds12.html
new file mode 100644
index 0000000..28cf650
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds12.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.12. /etc/rc.d/init.d/console
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds11.html" title=
+ "/etc/rc.d/init.d/cleanfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/cleanfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds13.html" title=
+ "/etc/rc.d/init.d/localnet">След.</a>
+ <p>
+ /etc/rc.d/init.d/localnet
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="console" name="console"></a>D.12. /etc/rc.d/init.d/console
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin console
+#
+# Description : Sets keymap and screen font
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# Alexander E. Patrakov
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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 ] &amp;&amp; . /etc/sysconfig/console
+
+failed=0
+
+case "${1}" in
+ start)
+ # See if we need to do anything
+ if [ -z "${KEYMAP}" ] &amp;&amp; [ -z "${KEYMAP_CORRECTIONS}" ] &amp;&amp;
+ [ -z "${FONT}" ] &amp;&amp; [ -z "${LEGACY_CHARSET}" ] &amp;&amp;
+ ! 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/fb0 ] &amp;&amp; use_fb=1 || use_fb=0
+
+ # Figure out the command to set the console into the
+ # desired mode
+ is_true "${UNICODE}" &amp;&amp;
+ MODE_COMMAND="echo -en '\033%G' &amp;&amp; kbd_mode -u" ||
+ MODE_COMMAND="echo -en '\033%@\033(K' &amp;&amp; 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} &amp;&amp; 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} &gt;/dev/null 2&gt;&amp;1 ||
+ failed=1
+
+ [ -z "${KEYMAP_CORRECTIONS}" ] ||
+ loadkeys ${KEYMAP_CORRECTIONS} &gt;/dev/null 2&gt;&amp;1 ||
+ failed=1
+
+ # Convert the keymap from $LEGACY_CHARSET to UTF-8
+ [ -z "$LEGACY_CHARSET" ] ||
+ dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u &gt;/dev/null 2&gt;&amp;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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds11.html" title=
+ "/etc/rc.d/init.d/cleanfs">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/cleanfs
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds13.html" title=
+ "/etc/rc.d/init.d/localnet">След.</a>
+ <p>
+ /etc/rc.d/init.d/localnet
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds13.html b/lfs-12.0-sysv/scripts/apds13.html
new file mode 100644
index 0000000..8034472
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds13.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.13. /etc/rc.d/init.d/localnet
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds12.html" title=
+ "/etc/rc.d/init.d/console">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/console
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds14.html" title=
+ "/etc/rc.d/init.d/sysctl">След.</a>
+ <p>
+ /etc/rc.d/init.d/sysctl
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="localnet" name="localnet"></a>D.13. /etc/rc.d/init.d/localnet
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin localnet
+#
+# Description : Loopback device
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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 ] &amp;&amp; . /etc/sysconfig/network
+[ -r /etc/hostname ] &amp;&amp; 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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds12.html" title=
+ "/etc/rc.d/init.d/console">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/console
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds14.html" title=
+ "/etc/rc.d/init.d/sysctl">След.</a>
+ <p>
+ /etc/rc.d/init.d/sysctl
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds14.html b/lfs-12.0-sysv/scripts/apds14.html
new file mode 100644
index 0000000..16847e1
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds14.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.14. /etc/rc.d/init.d/sysctl
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds13.html" title=
+ "/etc/rc.d/init.d/localnet">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/localnet
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds15.html" title=
+ "/etc/rc.d/init.d/sysklogd">След.</a>
+ <p>
+ /etc/rc.d/init.d/sysklogd
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="sysctlscript" name="sysctlscript"></a>D.14.
+ /etc/rc.d/init.d/sysctl
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin sysctl
+#
+# Description : File uses /etc/sysctl.conf to set kernel runtime
+# parameters
+#
+# Authors : Nathan Coulson (nathan@linuxfromscratch.org)
+# Matthew Burgress (matthew@linuxfromscratch.org)
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds13.html" title=
+ "/etc/rc.d/init.d/localnet">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/localnet
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds15.html" title=
+ "/etc/rc.d/init.d/sysklogd">След.</a>
+ <p>
+ /etc/rc.d/init.d/sysklogd
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds15.html b/lfs-12.0-sysv/scripts/apds15.html
new file mode 100644
index 0000000..e7e8383
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds15.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.15. /etc/rc.d/init.d/sysklogd
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds14.html" title=
+ "/etc/rc.d/init.d/sysctl">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/sysctl
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds16.html" title=
+ "/etc/rc.d/init.d/network">След.</a>
+ <p>
+ /etc/rc.d/init.d/network
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="sysklogd" name="sysklogd"></a>D.15. /etc/rc.d/init.d/sysklogd
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin sysklogd
+#
+# Description : Sysklogd loader
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# 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 kernel and system log daemons.
+# Description: Starts kernel and system log daemons.
+# /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
+
+ log_info_msg "Starting kernel log daemon..."
+ start_daemon /sbin/klogd
+ evaluate_retval
+ ;;
+
+ stop)
+ log_info_msg "Stopping kernel log daemon..."
+ killproc /sbin/klogd
+ evaluate_retval
+
+ 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
+ statusproc klogd
+ ;;
+
+ *)
+ echo "Usage: ${0} {start|stop|reload|restart|status}"
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# End sysklogd
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds14.html" title=
+ "/etc/rc.d/init.d/sysctl">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/sysctl
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds16.html" title=
+ "/etc/rc.d/init.d/network">След.</a>
+ <p>
+ /etc/rc.d/init.d/network
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds16.html b/lfs-12.0-sysv/scripts/apds16.html
new file mode 100644
index 0000000..cffc592
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds16.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.16. /etc/rc.d/init.d/network
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds15.html" title=
+ "/etc/rc.d/init.d/sysklogd">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/sysklogd
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds17.html" title=
+ "/etc/rc.d/init.d/sendsignals">След.</a>
+ <p>
+ /etc/rc.d/init.d/sendsignals
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="network" name="network"></a>D.16. /etc/rc.d/init.d/network
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin network
+#
+# Description : Network Control Script
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# Nathan Coulson - nathan@linuxfromscratch.org
+# Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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&gt;/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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds15.html" title=
+ "/etc/rc.d/init.d/sysklogd">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/sysklogd
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds17.html" title=
+ "/etc/rc.d/init.d/sendsignals">След.</a>
+ <p>
+ /etc/rc.d/init.d/sendsignals
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds17.html b/lfs-12.0-sysv/scripts/apds17.html
new file mode 100644
index 0000000..f67d58a
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds17.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.17. /etc/rc.d/init.d/sendsignals
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds16.html" title=
+ "/etc/rc.d/init.d/network">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/network
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds18.html" title=
+ "/etc/rc.d/init.d/reboot">След.</a>
+ <p>
+ /etc/rc.d/init.d/reboot
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="sendsignals" name="sendsignals"></a>D.17.
+ /etc/rc.d/init.d/sendsignals
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin sendsignals
+#
+# Description : Sendsignals Script
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.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" ] &amp;&amp; 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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds16.html" title=
+ "/etc/rc.d/init.d/network">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/network
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds18.html" title=
+ "/etc/rc.d/init.d/reboot">След.</a>
+ <p>
+ /etc/rc.d/init.d/reboot
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds18.html b/lfs-12.0-sysv/scripts/apds18.html
new file mode 100644
index 0000000..235459c
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds18.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.18. /etc/rc.d/init.d/reboot
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds17.html" title=
+ "/etc/rc.d/init.d/sendsignals">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/sendsignals
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds19.html" title=
+ "/etc/rc.d/init.d/halt">След.</a>
+ <p>
+ /etc/rc.d/init.d/halt
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="rebootscript" name="rebootscript"></a>D.18.
+ /etc/rc.d/init.d/reboot
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin reboot
+#
+# Description : Reboot Scripts
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Updates : Bruce Dubbs - bdubbs@linuxfromscratch.org
+# : Pierre Labastie - pierre@linuxfromscratch.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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds17.html" title=
+ "/etc/rc.d/init.d/sendsignals">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/sendsignals
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds19.html" title=
+ "/etc/rc.d/init.d/halt">След.</a>
+ <p>
+ /etc/rc.d/init.d/halt
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds19.html b/lfs-12.0-sysv/scripts/apds19.html
new file mode 100644
index 0000000..7836407
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds19.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.19. /etc/rc.d/init.d/halt
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds18.html" title=
+ "/etc/rc.d/init.d/reboot">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/reboot
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds20.html" title=
+ "/etc/rc.d/init.d/template">След.</a>
+ <p>
+ /etc/rc.d/init.d/template
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="haltscript" name="haltscript"></a>D.19. /etc/rc.d/init.d/halt
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin halt
+#
+# Description : Halt Script
+#
+# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+# : Pierre Labastie - pierre@linuxfromscratch.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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds18.html" title=
+ "/etc/rc.d/init.d/reboot">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/reboot
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds20.html" title=
+ "/etc/rc.d/init.d/template">След.</a>
+ <p>
+ /etc/rc.d/init.d/template
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds20.html b/lfs-12.0-sysv/scripts/apds20.html
new file mode 100644
index 0000000..6c8f39f
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds20.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.20. /etc/rc.d/init.d/template
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds19.html" title=
+ "/etc/rc.d/init.d/halt">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/halt
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds21.html" title=
+ "/etc/sysconfig/modules">След.</a>
+ <p>
+ /etc/sysconfig/modules
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="template" name="template"></a>D.20. /etc/rc.d/init.d/template
+ </h1>
+ <pre class="screen">#!/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 &gt;/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 &gt;/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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds19.html" title=
+ "/etc/rc.d/init.d/halt">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/halt
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds21.html" title=
+ "/etc/sysconfig/modules">След.</a>
+ <p>
+ /etc/sysconfig/modules
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds21.html b/lfs-12.0-sysv/scripts/apds21.html
new file mode 100644
index 0000000..f664453
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds21.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.21. /etc/sysconfig/modules
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds20.html" title=
+ "/etc/rc.d/init.d/template">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/template
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds22.html" title=
+ "/etc/sysconfig/createfiles">След.</a>
+ <p>
+ /etc/sysconfig/createfiles
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="modulessys" name="modulessys"></a>D.21. /etc/sysconfig/modules
+ </h1>
+ <pre class=
+ "screen">########################################################################
+# Begin /etc/sysconfig/modules
+#
+# Description : Module auto-loading configuration
+#
+# Authors :
+#
+# Version : 00.00
+#
+# Notes : The syntax of this file is as follows:
+# &lt;module&gt; [&lt;arg1&gt; &lt;arg2&gt; ...]
+#
+# 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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds20.html" title=
+ "/etc/rc.d/init.d/template">Пред.</a>
+ <p>
+ /etc/rc.d/init.d/template
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds22.html" title=
+ "/etc/sysconfig/createfiles">След.</a>
+ <p>
+ /etc/sysconfig/createfiles
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds22.html b/lfs-12.0-sysv/scripts/apds22.html
new file mode 100644
index 0000000..e63b800
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds22.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.22. /etc/sysconfig/createfiles
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds21.html" title=
+ "/etc/sysconfig/modules">Пред.</a>
+ <p>
+ /etc/sysconfig/modules
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds23.html" title=
+ "/etc/sysconfig/udev-retry">След.</a>
+ <p>
+ /etc/sysconfig/udev-retry
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="createfiles" name="createfiles"></a>D.22.
+ /etc/sysconfig/createfiles
+ </h1>
+ <pre class=
+ "screen">########################################################################
+# 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"
+# &lt;filename&gt; &lt;type&gt; &lt;permissions&gt; &lt;user&gt; &lt;group&gt;
+# if type is equal to "dev"
+# &lt;filename&gt; &lt;type&gt; &lt;permissions&gt; &lt;user&gt; &lt;group&gt; &lt;devtype&gt;
+# &lt;major&gt; &lt;minor&gt;
+#
+# &lt;filename&gt; is the name of the file which is to be created
+# &lt;type&gt; is either file, dir, or dev.
+# file creates a new file
+# dir creates a new directory
+# dev creates a new device
+# &lt;devtype&gt; is either block, char or pipe
+# block creates a block device
+# char creates a character device
+# pipe creates a pipe, this will ignore the &lt;major&gt; and
+# &lt;minor&gt; fields
+# &lt;major&gt; and &lt;minor&gt; are the major and minor numbers used for
+# the device.
+########################################################################
+
+# End /etc/sysconfig/createfiles
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds21.html" title=
+ "/etc/sysconfig/modules">Пред.</a>
+ <p>
+ /etc/sysconfig/modules
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds23.html" title=
+ "/etc/sysconfig/udev-retry">След.</a>
+ <p>
+ /etc/sysconfig/udev-retry
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds23.html b/lfs-12.0-sysv/scripts/apds23.html
new file mode 100644
index 0000000..ad56c00
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds23.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.23. /etc/sysconfig/udev-retry
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds22.html" title=
+ "/etc/sysconfig/createfiles">Пред.</a>
+ <p>
+ /etc/sysconfig/createfiles
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds24.html" title="/sbin/ifup">След.</a>
+ <p>
+ /sbin/ifup
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="config-udev-retry" name="config-udev-retry"></a>D.23.
+ /etc/sysconfig/udev-retry
+ </h1>
+ <pre class=
+ "screen">########################################################################
+# 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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds22.html" title=
+ "/etc/sysconfig/createfiles">Пред.</a>
+ <p>
+ /etc/sysconfig/createfiles
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds24.html" title="/sbin/ifup">След.</a>
+ <p>
+ /sbin/ifup
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds24.html b/lfs-12.0-sysv/scripts/apds24.html
new file mode 100644
index 0000000..93037ff
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds24.html
@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.24. /sbin/ifup
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds23.html" title=
+ "/etc/sysconfig/udev-retry">Пред.</a>
+ <p>
+ /etc/sysconfig/udev-retry
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds25.html" title="/sbin/ifdown">След.</a>
+ <p>
+ /sbin/ifdown
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ifup" name="ifup"></a>D.24. /sbin/ifup
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin /sbin/ifup
+#
+# Description : Interface Up
+#
+# Authors : Nathan Coulson - nathan@linuxfromscratch.org
+# Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.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 &gt; /dev/null 2&gt;&amp;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" &gt;&amp;2
+ echo "${USAGE}" &gt;&amp; 2
+ exit 2 ;;
+
+ *) break ;;
+ esac
+done
+
+if [ -n "$help" ]; then
+ echo "${VERSTR}"
+ echo "${USAGE}"
+ echo
+ cat &lt;&lt; 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]+$ ]] &amp;&amp; [[ $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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds23.html" title=
+ "/etc/sysconfig/udev-retry">Пред.</a>
+ <p>
+ /etc/sysconfig/udev-retry
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds25.html" title="/sbin/ifdown">След.</a>
+ <p>
+ /sbin/ifdown
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds25.html b/lfs-12.0-sysv/scripts/apds25.html
new file mode 100644
index 0000000..4b65350
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds25.html
@@ -0,0 +1,179 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.25. /sbin/ifdown
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds24.html" title="/sbin/ifup">Пред.</a>
+ <p>
+ /sbin/ifup
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds26.html" title=
+ "/lib/services/ipv4-static">След.</a>
+ <p>
+ /lib/services/ipv4-static
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ifdown" name="ifdown"></a>D.25. /sbin/ifdown
+ </h1>
+ <pre class="screen">#!/bin/bash
+########################################################################
+# Begin /sbin/ifdown
+#
+# Description : Interface Down
+#
+# Authors : Nathan Coulson - nathan@linuxfromscratch.org
+# Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version : LFS 7.0
+#
+# Notes : the IFCONFIG variable is passed to the scripts found
+# in the /lib/services directory, to indicate what file the
+# service should source to get interface specifications.
+#
+########################################################################
+
+RELEASE="7.0"
+
+USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
+VERSTR="LFS ifdown, version ${RELEASE}"
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --help | -h) help="y"; break ;;
+
+ --version | -V) echo "${VERSTR}"; exit 0 ;;
+
+ -*) echo "ifup: ${1}: invalid option" &gt;&amp;2
+ echo "${USAGE}" &gt;&amp; 2
+ exit 2 ;;
+
+ *) break ;;
+ esac
+done
+
+if [ -n "$help" ]; then
+ echo "${VERSTR}"
+ echo "${USAGE}"
+ echo
+ cat &lt;&lt; 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} &gt; /dev/null 2&gt;&amp;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&gt;/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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds24.html" title="/sbin/ifup">Пред.</a>
+ <p>
+ /sbin/ifup
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds26.html" title=
+ "/lib/services/ipv4-static">След.</a>
+ <p>
+ /lib/services/ipv4-static
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds26.html b/lfs-12.0-sysv/scripts/apds26.html
new file mode 100644
index 0000000..e66cce8
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds26.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.26. /lib/services/ipv4-static
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds25.html" title="/sbin/ifdown">Пред.</a>
+ <p>
+ /sbin/ifdown
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds27.html" title=
+ "/lib/services/ipv4-static-route">След.</a>
+ <p>
+ /lib/services/ipv4-static-route
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ipv4static" name="ipv4static"></a>D.26.
+ /lib/services/ipv4-static
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin /lib/services/ipv4-static
+#
+# Description : IPV4 Static Boot Script
+#
+# Authors : Nathan Coulson - nathan@linuxfromscratch.org
+# Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version : LFS 7.0
+#
+########################################################################
+
+. /lib/lsb/init-functions
+. ${IFCONFIG}
+
+if [ -z "${IP}" ]; then
+ log_failure_msg "\nIP variable missing from ${IFCONFIG}, cannot continue."
+ exit 1
+fi
+
+if [ -z "${PREFIX}" -a -z "${PEER}" ]; then
+ log_warning_msg "\nPREFIX variable missing from ${IFCONFIG}, assuming 24."
+ PREFIX=24
+ args="${args} ${IP}/${PREFIX}"
+
+elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then
+ log_failure_msg "\nPREFIX and PEER both specified in ${IFCONFIG}, cannot continue."
+ exit 1
+
+elif [ -n "${PREFIX}" ]; then
+ args="${args} ${IP}/${PREFIX}"
+
+elif [ -n "${PEER}" ]; then
+ args="${args} ${IP} peer ${PEER}"
+fi
+
+if [ -n "${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&gt;/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&gt;/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&gt;/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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds25.html" title="/sbin/ifdown">Пред.</a>
+ <p>
+ /sbin/ifdown
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds27.html" title=
+ "/lib/services/ipv4-static-route">След.</a>
+ <p>
+ /lib/services/ipv4-static-route
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apds27.html b/lfs-12.0-sysv/scripts/apds27.html
new file mode 100644
index 0000000..f20985d
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apds27.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ D.27. /lib/services/ipv4-static-route
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds26.html" title=
+ "/lib/services/ipv4-static">Пред.</a>
+ <p>
+ /lib/services/ipv4-static
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="udev-rules.html" title=
+ "Правила настройки Udev">След.</a>
+ <p>
+ Правила настройки Udev
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ipv4route" name="ipv4route"></a>D.27.
+ /lib/services/ipv4-static-route
+ </h1>
+ <pre class="screen">#!/bin/sh
+########################################################################
+# Begin /lib/services/ipv4-static-route
+#
+# Description : IPV4 Static Route Script
+#
+# Authors : Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# DJ Lucas - dj@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version : LFS 7.0
+#
+########################################################################
+
+. /lib/lsb/init-functions
+. ${IFCONFIG}
+
+case "${TYPE}" in
+ ("" | "network")
+ need_ip=1
+ need_gateway=1
+ ;;
+
+ ("default")
+ need_gateway=1
+ args="${args} default"
+ desc="default"
+ ;;
+
+ ("host")
+ need_ip=1
+ ;;
+
+ ("unreachable")
+ need_ip=1
+ args="${args} unreachable"
+ desc="unreachable "
+ ;;
+
+ (*)
+ log_failure_msg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue."
+ exit 1
+ ;;
+esac
+
+if [ -n "${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
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds26.html" title=
+ "/lib/services/ipv4-static">Пред.</a>
+ <p>
+ /lib/services/ipv4-static
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="udev-rules.html" title=
+ "Правила настройки Udev">След.</a>
+ <p>
+ Правила настройки Udev
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="scripts.html" title=
+ "Приложение D. Скрипты загрузки и настройки системы-20230728">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/apes01.html b/lfs-12.0-sysv/scripts/apes01.html
new file mode 100644
index 0000000..72ed4fc
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/apes01.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ E.1. 55-lfs.rules
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Приложение E. Правила настройки Udev
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="udev-rules.html" title=
+ "Правила настройки Udev">Пред.</a>
+ <p>
+ Правила настройки Udev
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../appendices/licenses.html" title=
+ "Лицензии LFS">След.</a>
+ <p>
+ Лицензии LFS
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="udev-rules.html" title=
+ "Приложение E. Правила настройки Udev">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="lfsrules" name="lfsrules"></a>E.1. 55-lfs.rules
+ </h1>
+ <pre class=
+ "screen"># /etc/udev/rules.d/55-lfs.rules: Rule definitions for LFS.
+
+# Core kernel devices
+
+# This causes the system clock to be set as soon as /dev/rtc becomes available.
+SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
+KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
+
+</pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="udev-rules.html" title=
+ "Правила настройки Udev">Пред.</a>
+ <p>
+ Правила настройки Udev
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../appendices/licenses.html" title=
+ "Лицензии LFS">След.</a>
+ <p>
+ Лицензии LFS
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="udev-rules.html" title=
+ "Приложение E. Правила настройки Udev">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/scripts.html b/lfs-12.0-sysv/scripts/scripts.html
new file mode 100644
index 0000000..a15ff16
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/scripts.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ Приложение D. Скрипты загрузки и настройки системы-20230728
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Часть&nbsp;V.&nbsp;Приложения
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../appendices/dependencies.html" title=
+ "Зависимости">Пред.</a>
+ <p>
+ Зависимости
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds01.html" title=
+ "/etc/rc.d/init.d/rc">След.</a>
+ <p>
+ /etc/rc.d/init.d/rc
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part5.html" title=
+ "Часть&nbsp;V.&nbsp;Приложения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="appendix">
+ <h1 class="appendix">
+ <a id="scripts" name="scripts"></a>D. Скрипты загрузки и настройки
+ системы-20230728
+ </h1>
+ <p>
+ Скрипты в приложении перечислены с указанием каталога, в котором они
+ обычно находятся. Порядок такой: <code class=
+ "filename">/etc/rc.d/init.d</code>, <code class=
+ "filename">/etc/sysconfig</code>, <code class=
+ "filename">/etc/sysconfig/network-devices</code>, и <code class=
+ "filename">/etc/sysconfig/network-devices/services</code>. В каждом
+ разделе файлы перечислены в том порядке, в котором они обычно
+ вызываются.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../appendices/dependencies.html" title=
+ "Зависимости">Пред.</a>
+ <p>
+ Зависимости
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apds01.html" title=
+ "/etc/rc.d/init.d/rc">След.</a>
+ <p>
+ /etc/rc.d/init.d/rc
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part5.html" title=
+ "Часть&nbsp;V.&nbsp;Приложения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/scripts/udev-rules.html b/lfs-12.0-sysv/scripts/udev-rules.html
new file mode 100644
index 0000000..2a3d507
--- /dev/null
+++ b/lfs-12.0-sysv/scripts/udev-rules.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ Приложение E. Правила настройки Udev
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Часть&nbsp;V.&nbsp;Приложения
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds27.html" title=
+ "/lib/services/ipv4-static-route">Пред.</a>
+ <p>
+ /lib/services/ipv4-static-route
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apes01.html" title="55-lfs.rules">След.</a>
+ <p>
+ 55-lfs.rules
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part5.html" title=
+ "Часть&nbsp;V.&nbsp;Приложения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="appendix">
+ <h1 class="appendix">
+ <a id="rules" name="rules"></a>E. Правила настройки Udev
+ </h1>
+ <p>
+ Правила в этом приложении перечислены для удобства. Установка обычно
+ выполняются с помощью инструкций приведенных в <a class="xref" href=
+ "../chapter08/udev.html" title=
+ "8.74. Udev из Systemd-254">Раздел&nbsp;8.74, «Udev из
+ Systemd-254»</a>.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="apds27.html" title=
+ "/lib/services/ipv4-static-route">Пред.</a>
+ <p>
+ /lib/services/ipv4-static-route
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="apes01.html" title="55-lfs.rules">След.</a>
+ <p>
+ 55-lfs.rules
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part5.html" title=
+ "Часть&nbsp;V.&nbsp;Приложения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>