diff options
author | Sn4il <sn4il@thedroth.rocks> | 2024-09-02 15:54:35 +0300 |
---|---|---|
committer | Sn4il <sn4il@thedroth.rocks> | 2024-09-02 15:54:35 +0300 |
commit | 2203e654b389586650d553251b04544a34f189bf (patch) | |
tree | 0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.2-sysv/scripts | |
parent | 200d528e55ca954d37769f4d143f10c9519b00e7 (diff) | |
download | sn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip |
LFS 12.2
Diffstat (limited to 'lfs-12.2-sysv/scripts')
30 files changed, 5487 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/scripts/apds01.html b/lfs-12.2-sysv/scripts/apds01.html new file mode 100644 index 0000000..35abfd1 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="scripts.html" title= + "Скрипты загрузки и настройки системы-20240825">Пред.</a> + <p> + Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="rc" name="rc"></a>D.1. /etc/rc.d/init.d/rc + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 ] && source /etc/sysconfig/rc.site + +DISTRO=${DISTRO:-"Linux From Scratch"} +DISTRO_CONTACT=${DISTRO_CONTACT:-"lfs-dev@lists.linuxfromscratch.org (Registration required)"} +DISTRO_MINI=${DISTRO_MINI:-"LFS"} +IPROMPT=${IPROMPT:-"no"} + +# These 3 signals will not cause our script to exit +trap "" INT QUIT TSTP + +[ "${1}" != "" ] && runlevel=${1} + +if [ "${runlevel}" == "" ]; then + echo "Usage: ${0} <runlevel>" >&2 + exit 1 +fi + +previous=${PREVLEVEL} +[ "${previous}" == "" ] && previous=N + +if [ ! -d /etc/rc.d/rc${runlevel}.d ]; then + log_info_msg "/etc/rc.d/rc${runlevel}.d does not exist.\n" + exit 1 +fi + +if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; then IPROMPT="no"; fi + +# Note: In ${LOGLEVEL:-7}, it is ':' 'dash' '7', not minus 7 +if [ "$runlevel" == "S" ]; then + [ -r /etc/sysconfig/console ] && source /etc/sysconfig/console + dmesg -n "${LOGLEVEL:-7}" +fi + +if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; then + # The total length of the distro welcome string, without escape codes + wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )} + welcome_message=${welcome_message:-"Welcome to ${INFO}${DISTRO}${NORMAL}"} + + # The total length of the interactive string, without escape codes + ilen=${ilen:-$(echo "Press 'I' to enter interactive startup" | wc -c )} + i_message=${i_message:-"Press '${FAILURE}I${NORMAL}' to enter interactive startup"} + + + # dcol and icol are spaces before the message to center the message + # on screen. itime is the amount of wait time for the user to press a key + wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 )) + icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 )) + itime=${itime:-"3"} + + echo -e "\n\n" + echo -e "\\033[${wcol}G${welcome_message}" + echo -e "\\033[${icol}G${i_message}${NORMAL}" + echo "" + read -t "${itime}" -n 1 interactive 2>&1 > /dev/null +fi + +# Make lower case +[ "${interactive}" == "I" ] && interactive="i" +[ "${interactive}" != "i" ] && interactive="" + +# Read the state file if it exists from runlevel S +[ -r /run/interactive ] && source /run/interactive + +# Stop all services marked as K, except if marked as K in the previous +# runlevel: it is the responsibility of the script to not try to kill +# a non running service +if [ "${previous}" != "N" ]; then + for i in $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) + do + check_script_status + if [ "${SCRIPT_STAT}" == "1" ]; then + SCRIPT_STAT="0" + continue + fi + + suffix=${i#/etc/rc.d/rc${runlevel}.d/K[0-9][0-9]} + [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue + + run ${i} stop + error_value=${?} + + if [ "${error_value}" != "0" ]; then print_error_msg; fi + done +fi + +if [ "${previous}" == "N" ]; then export IN_BOOT=1; fi + +if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; then + touch /fastboot +fi + + +# Start all services marked as S in this runlevel, except if marked as +# S in the previous runlevel +# it is the responsibility of the script to not try to start an already running +# service +for i in $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null) +do + + if [ "${previous}" != "N" ]; then + suffix=${i#/etc/rc.d/rc${runlevel}.d/S[0-9][0-9]} + [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue + fi + + check_script_status + if [ "${SCRIPT_STAT}" == "1" ]; then + SCRIPT_STAT="0" + continue + fi + + run ${i} start + + error_value=${?} + + if [ "${error_value}" != "0" ]; then print_error_msg; fi +done + +# Store interactive variable on switch from runlevel S and remove if not +if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; then + echo "interactive=\"i\"" > /run/interactive +else + rm -f /run/interactive 2> /dev/null +fi + +# Copy the boot log on initial boot only +if [ "${previous}" == "N" -a "${runlevel}" != "S" ]; then + cat $BOOTLOG >> /var/log/boot.log + + # Mark the end of boot + echo "--------" >> /var/log/boot.log + + # Remove the temporary file + rm -f $BOOTLOG 2> /dev/null +fi + +# End rc +</pre> + </div> + <div class="navfooter"> + <ul> + <li class="prev"> + <a accesskey="p" href="scripts.html" title= + "Скрипты загрузки и настройки системы-20240825">Пред.</a> + <p> + Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds02.html b/lfs-12.2-sysv/scripts/apds02.html new file mode 100644 index 0000000..cd13b83 --- /dev/null +++ b/lfs-12.2-sysv/scripts/apds02.html @@ -0,0 +1,944 @@ +<!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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="init-functions" name="init-functions"></a>D.2. + /lib/lsb/init-functions + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 ] && . /etc/sysconfig/rc.site + +# If HEADLESS is set, use that. +# If file descriptor 1 or 2 (stdout and stderr) is not open or +# does not refer to a terminal, consider the script headless. +[ ! -t 1 -o ! -t 2 ] && HEADLESS=${HEADLESS:-yes} + +if [ "x$HEADLESS" != "xyes" ] +then + ## Screen Dimensions + # Find current screen size + if [ -z "${COLUMNS}" ]; then + COLUMNS=$(stty size) + COLUMNS=${COLUMNS##* } + fi +else + COLUMNS=80 +fi + +# When using remote connections, such as a serial port, stty size returns 0 +if [ "${COLUMNS}" = "0" ]; then + COLUMNS=80 +fi + +## Measurements for positioning result messages +COL=$((${COLUMNS} - 8)) +WCOL=$((${COL} - 2)) + +## Set Cursor Position Commands, used via echo +SET_COL="\\033[${COL}G" # at the $COL char +SET_WCOL="\\033[${WCOL}G" # at the $WCOL char +CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char +CURS_ZERO="\\033[0G" + +################################################################################ +# start_daemon() # +# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...] # +# # +# Purpose: This runs the specified program as a daemon # +# # +# Inputs: -f: (force) run the program even if it is already running. # +# -n nicelevel: specify a nice level. See 'man nice(1)'. # +# -p pidfile: use the specified file to determine PIDs. # +# pathname: the complete path to the specified program # +# args: additional arguments passed to the program (pathname) # +# # +# Return values (as defined by LSB exit codes): # +# 0 - program is running or service is OK # +# 1 - generic or unspecified error # +# 2 - invalid or excessive argument(s) # +# 5 - program is not installed # +################################################################################ +start_daemon() +{ + local force="" + local nice="0" + local pidfile="" + local pidlist="" + local retval="" + + # Process arguments + while true + do + case "${1}" in + + -f) + force="1" + shift 1 + ;; + + -n) + nice="${2}" + shift 2 + ;; + + -p) + pidfile="${2}" + shift 2 + ;; + + -*) + return 2 + ;; + + *) + program="${1}" + break + ;; + esac + done + + # Check for a valid program + if [ ! -e "${program}" ]; then return 5; fi + + # Execute + if [ -z "${force}" ]; then + if [ -z "${pidfile}" ]; then + # Determine the pid by discovery + pidlist=`pidofproc "${1}"` + retval="${?}" + else + # The PID file contains the needed PIDs + # Note that by LSB requirement, the path must be given to pidofproc, + # however, it is not used by the current implementation or standard. + pidlist=`pidofproc -p "${pidfile}" "${1}"` + retval="${?}" + fi + + # Return a value ONLY + # It is the init script's (or distribution's functions) responsibility + # to log messages! + case "${retval}" in + + 0) + # Program is already running correctly, this is a + # successful start. + return 0 + ;; + + 1) + # Program is not running, but an invalid pid file exists + # remove the pid file and continue + rm -f "${pidfile}" + ;; + + 3) + # Program is not running and no pidfile exists + # do nothing here, let start_deamon continue. + ;; + + *) + # Others as returned by status values shall not be interpreted + # and returned as an unspecified error. + return 1 + ;; + esac + fi + + # Do the start! + nice -n "${nice}" "${@}" +} + +################################################################################ +# killproc() # +# Usage: killproc [-p pidfile] pathname [signal] # +# # +# Purpose: Send control signals to running processes # +# # +# Inputs: -p pidfile, uses the specified pidfile # +# pathname, pathname to the specified program # +# signal, send this signal to pathname # +# # +# Return values (as defined by LSB exit codes): # +# 0 - program (pathname) has stopped/is already stopped or a # +# running program has been sent specified signal and stopped # +# successfully # +# 1 - generic or unspecified error # +# 2 - invalid or excessive argument(s) # +# 5 - program is not installed # +# 7 - program is not running and a signal was supplied # +################################################################################ +killproc() +{ + local pidfile + local program + local prefix + local progname + local signal="-TERM" + local fallback="-KILL" + local nosig + local pidlist + local retval + local pid + local delay="30" + local piddead + local dtime + + # Process arguments + while true; do + case "${1}" in + -p) + pidfile="${2}" + shift 2 + ;; + + *) + program="${1}" + if [ -n "${2}" ]; then + signal="${2}" + fallback="" + else + nosig=1 + fi + + # Error on additional arguments + if [ -n "${3}" ]; then + return 2 + else + break + fi + ;; + esac + done + + # Check for a valid program + if [ ! -e "${program}" ]; then return 5; fi + + # Check for a valid signal + check_signal "${signal}" + if [ "${?}" -ne "0" ]; then return 2; fi + + # Get a list of pids + if [ -z "${pidfile}" ]; then + # determine the pid by discovery + pidlist=`pidofproc "${1}"` + retval="${?}" + else + # The PID file contains the needed PIDs + # Note that by LSB requirement, the path must be given to pidofproc, + # however, it is not used by the current implementation or standard. + pidlist=`pidofproc -p "${pidfile}" "${1}"` + retval="${?}" + fi + + # Return a value ONLY + # It is the init script's (or distribution's functions) responsibility + # to log messages! + case "${retval}" in + + 0) + # Program is running correctly + # Do nothing here, let killproc continue. + ;; + + 1) + # Program is not running, but an invalid pid file exists + # Remove the pid file. + + progname=${program##*/} + + if [[ -e "/run/${progname}.pid" ]]; then + pidfile="/run/${progname}.pid" + rm -f "${pidfile}" + fi + + # This is only a success if no signal was passed. + if [ -n "${nosig}" ]; then + return 0 + else + return 7 + fi + ;; + + 3) + # Program is not running and no pidfile exists + # This is only a success if no signal was passed. + if [ -n "${nosig}" ]; then + return 0 + else + return 7 + fi + ;; + + *) + # Others as returned by status values shall not be interpreted + # and returned as an unspecified error. + return 1 + ;; + esac + + # Perform different actions for exit signals and control signals + check_sig_type "${signal}" + + if [ "${?}" -eq "0" ]; then # Signal is used to terminate the program + + # Account for empty pidlist (pid file still exists and no + # signal was given) + if [ "${pidlist}" != "" ]; then + + # Kill the list of pids + for pid in ${pidlist}; do + + kill -0 "${pid}" 2> /dev/null + + if [ "${?}" -ne "0" ]; then + # Process is dead, continue to next and assume all is well + continue + else + kill "${signal}" "${pid}" 2> /dev/null + + # Wait up to ${delay}/10 seconds to for "${pid}" to + # terminate in 10ths of a second + + while [ "${delay}" -ne "0" ]; do + kill -0 "${pid}" 2> /dev/null || piddead="1" + if [ "${piddead}" = "1" ]; then break; fi + sleep 0.1 + delay="$(( ${delay} - 1 ))" + done + + # If a fallback is set, and program is still running, then + # use the fallback + if [ -n "${fallback}" -a "${piddead}" != "1" ]; then + kill "${fallback}" "${pid}" 2> /dev/null + sleep 1 + # Check again, and fail if still running + kill -0 "${pid}" 2> /dev/null && return 1 + fi + fi + done + fi + + # Check for and remove stale PID files. + if [ -z "${pidfile}" ]; then + # Find the basename of $program + prefix=`echo "${program}" | sed 's/[^/]*$//'` + progname=`echo "${program}" | sed "s@${prefix}@@"` + + if [ -e "/run/${progname}.pid" ]; then + rm -f "/run/${progname}.pid" 2> /dev/null + fi + else + if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2> /dev/null; fi + fi + + # For signals that do not expect a program to exit, simply + # let kill do its job, and evaluate kill's return for value + + else # check_sig_type - signal is not used to terminate program + for pid in ${pidlist}; do + kill "${signal}" "${pid}" + if [ "${?}" -ne "0" ]; then return 1; fi + done + fi +} + +################################################################################ +# pidofproc() # +# Usage: pidofproc [-p pidfile] pathname # +# # +# Purpose: This function returns one or more pid(s) for a particular daemon # +# # +# Inputs: -p pidfile, use the specified pidfile instead of pidof # +# pathname, path to the specified program # +# # +# Return values (as defined by LSB status codes): # +# 0 - Success (PIDs to stdout) # +# 1 - Program is dead, PID file still exists (remaining PIDs output) # +# 3 - Program is not running (no output) # +################################################################################ +pidofproc() +{ + local pidfile + local program + local prefix + local progname + local pidlist + local lpids + local exitstatus="0" + + # Process arguments + while true; do + case "${1}" in + + -p) + pidfile="${2}" + shift 2 + ;; + + *) + program="${1}" + if [ -n "${2}" ]; then + # Too many arguments + # Since this is status, return unknown + return 4 + else + break + fi + ;; + esac + done + + # If a PID file is not specified, try and find one. + if [ -z "${pidfile}" ]; then + # Get the program's basename + prefix=`echo "${program}" | sed 's/[^/]*$//'` + + if [ -z "${prefix}" ]; then + progname="${program}" + else + progname=`echo "${program}" | sed "s@${prefix}@@"` + fi + + # If a PID file exists with that name, assume that is it. + if [ -e "/run/${progname}.pid" ]; then + pidfile="/run/${progname}.pid" + fi + fi + + # If a PID file is set and exists, use it. + if [ -n "${pidfile}" -a -e "${pidfile}" ]; then + # Use the value in the first line of the pidfile + pidlist=`/bin/head -n1 "${pidfile}"` + else + # Use pidof + pidlist=`pidof "${program}"` + fi + + # Figure out if all listed PIDs are running. + for pid in ${pidlist}; do + kill -0 ${pid} 2> /dev/null + + if [ "${?}" -eq "0" ]; then + lpids="${lpids}${pid} " + else + exitstatus="1" + fi + done + + if [ -z "${lpids}" -a ! -f "${pidfile}" ]; then + return 3 + else + echo "${lpids}" + return "${exitstatus}" + fi +} + +################################################################################ +# statusproc() # +# Usage: statusproc [-p pidfile] pathname # +# # +# Purpose: This function prints the status of a particular daemon to stdout # +# # +# Inputs: -p pidfile, use the specified pidfile instead of pidof # +# pathname, path to the specified program # +# # +# Return values: # +# 0 - Status printed # +# 1 - Input error. The daemon to check was not specified. # +################################################################################ +statusproc() +{ + local pidfile + local pidlist + + if [ "${#}" = "0" ]; then + echo "Usage: statusproc [-p pidfle] {program}" + exit 1 + fi + + # Process arguments + while true; do + case "${1}" in + + -p) + pidfile="${2}" + shift 2 + ;; + + *) + if [ -n "${2}" ]; then + echo "Too many arguments" + return 1 + else + break + fi + ;; + esac + done + + if [ -n "${pidfile}" ]; then + pidlist=`pidofproc -p "${pidfile}" $@` + else + pidlist=`pidofproc $@` + fi + + # Trim trailing blanks + pidlist=`echo "${pidlist}" | sed -r 's/ +$//'` + + base="${1##*/}" + + if [ -n "${pidlist}" ]; then + /bin/echo -e "${INFO}${base} is running with Process" \ + "ID(s) ${pidlist}.${NORMAL}" + else + if [ -n "${base}" -a -e "/run/${base}.pid" ]; then + /bin/echo -e "${WARNING}${1} is not running but" \ + "/run/${base}.pid exists.${NORMAL}" + else + if [ -n "${pidfile}" -a -e "${pidfile}" ]; then + /bin/echo -e "${WARNING}${1} is not running" \ + "but ${pidfile} exists.${NORMAL}" + else + /bin/echo -e "${INFO}${1} is not running.${NORMAL}" + fi + fi + fi +} + +################################################################################ +# timespec() # +# # +# Purpose: An internal utility function to format a timestamp # +# a boot log file. Sets the STAMP variable. # +# # +# Return value: Not used # +################################################################################ +timespec() +{ + STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) " + return 0 +} + +################################################################################ +# log_success_msg() # +# Usage: log_success_msg ["message"] # +# # +# Purpose: Print a successful status message to the screen and # +# a boot log file. # +# # +# Inputs: $@ - Message # +# # +# Return values: Not used # +################################################################################ +log_success_msg() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" + else + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -e "${logmessage} OK" + fi + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + + timespec + /bin/echo -e "${STAMP} ${logmessage} OK" >> ${BOOTLOG} + + return 0 +} + +log_success_msg2() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" + else + echo " OK" + fi + + echo " OK" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# log_failure_msg() # +# Usage: log_failure_msg ["message"] # +# # +# Purpose: Print a failure status message to the screen and # +# a boot log file. # +# # +# Inputs: $@ - Message # +# # +# Return values: Not used # +################################################################################ +log_failure_msg() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" + else + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -e "${logmessage} FAIL" + fi + + # Strip non-printable characters from log file + + timespec + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -e "${STAMP} ${logmessage} FAIL" >> ${BOOTLOG} + + return 0 +} + +log_failure_msg2() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" + else + echo "FAIL" + fi + + echo "FAIL" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# log_warning_msg() # +# Usage: log_warning_msg ["message"] # +# # +# Purpose: Print a warning status message to the screen and # +# a boot log file. # +# # +# Return values: Not used # +################################################################################ +log_warning_msg() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}" + else + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -e "${logmessage} WARN" + fi + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + timespec + /bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG} + + return 0 +} + +log_skip_msg() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}" + else + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo "SKIP" + fi + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo "SKIP" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# log_info_msg() # +# Usage: log_info_msg message # +# # +# Purpose: Print an information message to the screen and # +# a boot log file. Does not print a trailing newline character. # +# # +# Return values: Not used # +################################################################################ +log_info_msg() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${BMPREFIX}${@}" + else + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -n -e "${logmessage}" + fi + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + timespec + /bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG} + + return 0 +} + +log_info_msg2() +{ + if [ "x$HEADLESS" != "xyes" ] + then + /bin/echo -n -e "${@}" + else + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -n -e "${logmessage}" + fi + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -n -e "${logmessage}" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# evaluate_retval() # +# Usage: Evaluate a return value and print success or failure as appropriate # +# # +# Purpose: Convenience function to terminate an info message # +# # +# Return values: Not used # +################################################################################ +evaluate_retval() +{ + local error_value="${?}" + + if [ ${error_value} = 0 ]; then + log_success_msg2 + else + log_failure_msg2 + fi +} + +################################################################################ +# check_signal() # +# Usage: check_signal [ -{signal} ] # +# # +# Purpose: Check for a valid signal. This is not defined by any LSB draft, # +# however, it is required to check the signals to determine if the # +# signals chosen are invalid arguments to the other functions. # +# # +# Inputs: Accepts a single string value in the form of -{signal} # +# # +# Return values: # +# 0 - Success (signal is valid # +# 1 - Signal is not valid # +################################################################################ +check_signal() +{ + local valsig + + # Add error handling for invalid signals + valsig=" -ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2" + valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN" + valsig="${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP" + valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 -4 -5 -6 -8 -9" + valsig="${valsig} -11 -13 -14 -15 " + + echo "${valsig}" | grep -- " ${1} " > /dev/null + + if [ "${?}" -eq "0" ]; then + return 0 + else + return 1 + fi +} + +################################################################################ +# check_sig_type() # +# Usage: check_signal [ -{signal} | {signal} ] # +# # +# Purpose: Check if signal is a program termination signal or a control signal # +# This is not defined by any LSB draft, however, it is required to # +# check the signals to determine if they are intended to end a # +# program or simply to control it. # +# # +# Inputs: Accepts a single string value in the form or -{signal} or {signal} # +# # +# Return values: # +# 0 - Signal is used for program termination # +# 1 - Signal is used for program control # +################################################################################ +check_sig_type() +{ + local valsig + + # The list of termination signals (limited to generally used items) + valsig=" -ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15 " + + echo "${valsig}" | grep -- " ${1} " > /dev/null + + if [ "${?}" -eq "0" ]; then + return 0 + else + return 1 + fi +} + +################################################################################ +# wait_for_user() # +# # +# Purpose: Wait for the user to respond if not a headless system # +# # +################################################################################ +wait_for_user() +{ + # Wait for the user by default + [ "${HEADLESS=0}" = "0" ] && read ENTER + return 0 +} + +################################################################################ +# is_true() # +# # +# Purpose: Utility to test if a variable is true | yes | 1 # +# # +################################################################################ +is_true() +{ + [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ] || [ "$1" = "y" ] || + [ "$1" = "t" ] +} + +# End /lib/lsb/init-functions +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds03.html b/lfs-12.2-sysv/scripts/apds03.html new file mode 100644 index 0000000..27392ac --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="mountvirtfs" name="mountvirtfs"></a>D.3. + /etc/rc.d/init.d/mountvirtfs + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 >/dev/null; then + mount /run || failed=1 + fi + + mkdir -p /run/lock + chmod 1777 /run/lock + + log_info_msg "Mounting virtual file systems: ${INFO}/run" + + if ! mountpoint /proc >/dev/null; then + log_info_msg2 " ${INFO}/proc" + mount -o nosuid,noexec,nodev /proc || failed=1 + fi + + if ! mountpoint /sys >/dev/null; then + log_info_msg2 " ${INFO}/sys" + mount -o nosuid,noexec,nodev /sys || failed=1 + fi + + if ! mountpoint /dev >/dev/null; then + log_info_msg2 " ${INFO}/dev" + mount -o mode=0755,nosuid /dev || failed=1 + fi + + mkdir -p /dev/shm + log_info_msg2 " ${INFO}/dev/shm" + mount -o nosuid,nodev /dev/shm || failed=1 + + mkdir -p /sys/fs/cgroup + log_info_msg2 " ${INFO}/sys/fs/cgroup" + mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1 + + (exit ${failed}) + evaluate_retval + if [ "${failed}" = 1 ]; then + exit 1 + fi + + log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin" + ln -sf /proc/self/fd/0 /dev/stdin || failed=1 + + log_info_msg2 " ${INFO}/dev/stdout" + ln -sf /proc/self/fd/1 /dev/stdout || failed=1 + + log_info_msg2 " ${INFO}/dev/stderr" + ln -sf /proc/self/fd/2 /dev/stderr || failed=1 + + log_info_msg2 " ${INFO}/dev/fd" + ln -sfn /proc/self/fd /dev/fd || failed=1 + + if [ -e /proc/kcore ]; then + log_info_msg2 " ${INFO}/dev/core" + ln -sf /proc/kcore /dev/core || failed=1 + fi + + (exit ${failed}) + evaluate_retval + exit $failed + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End mountvirtfs +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds04.html b/lfs-12.2-sysv/scripts/apds04.html new file mode 100644 index 0000000..c791f9b --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="modules" name="modules"></a>D.4. /etc/rc.d/init.d/modules + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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} >/dev/null + + # Print the module name if successful, otherwise take note. + if [ $? -eq 0 ]; then + log_info_msg2 " ${module}" + else + failedmod="${failedmod} ${module}" + fi + done < /etc/sysconfig/modules + + # Print a message about successfully loaded modules on the correct line. + log_success_msg2 + + # Print a failure message with a list of any modules that + # may have failed to load. + if [ -n "${failedmod}" ]; then + log_failure_msg "Failed to load modules:${failedmod}" + exit 1 + fi + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +exit 0 + +# End modules +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds05.html b/lfs-12.2-sysv/scripts/apds05.html new file mode 100644 index 0000000..d55d40f --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="udev" name="udev"></a>D.5. /etc/rc.d/init.d/udev + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 start + fi + + # Start the udev daemon to continually watch for, and act on, + # uevents + SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon + + # Now traverse /sys in order to "coldplug" devices that have + # already been discovered + /bin/udevadm trigger --action=add --type=subsystems + /bin/udevadm trigger --action=add --type=devices + /bin/udevadm trigger --action=change --type=devices + + # Now wait for udevd to process the uevents we triggered + if ! is_true "$OMIT_UDEV_SETTLE"; then + /bin/udevadm settle + fi + + # If any LVM based partitions are on the system, ensure they + # are activated so they can be used. + if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi + + log_success_msg2 + ;; + + *) + echo "Usage ${0} {start}" + exit 1 + ;; +esac + +exit 0 + +# End udev +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds06.html b/lfs-12.2-sysv/scripts/apds06.html new file mode 100644 index 0000000..c9b40ae --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="swap" name="swap"></a>D.6. /etc/rc.d/init.d/swap + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds07.html b/lfs-12.2-sysv/scripts/apds07.html new file mode 100644 index 0000000..cb3f2a1 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="setclock" name="setclock"></a>D.7. /etc/rc.d/init.d/setclock + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 ] && . /etc/sysconfig/clock + + +case "${UTC}" in + yes|true|1) + CLOCKPARAMS="${CLOCKPARAMS} --utc" + ;; + + no|false|0) + CLOCKPARAMS="${CLOCKPARAMS} --localtime" + ;; + +esac + +case ${1} in + start) + hwclock --hctosys ${CLOCKPARAMS} >/dev/null + ;; + + stop) + log_info_msg "Setting hardware clock..." + hwclock --systohc ${CLOCKPARAMS} >/dev/null + evaluate_retval + ;; + + *) + echo "Usage: ${0} {start|stop}" + exit 1 + ;; + +esac + +exit 0 +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds08.html b/lfs-12.2-sysv/scripts/apds08.html new file mode 100644 index 0000000..ac01ffe --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="checkfs" name="checkfs"></a>D.8. /etc/rc.d/init.d/checkfs + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 / >/dev/null + + if [ ${?} != 0 ]; then + log_failure_msg2 + msg="\n\nCannot check root " + msg="${msg}filesystem because it could not be mounted " + msg="${msg}in read-only mode.\n\n" + msg="${msg}After you press Enter, this system will be " + msg="${msg}halted and powered off.\n\n" + log_failure_msg "${msg}" + + log_info_msg "Press Enter to continue..." + wait_for_user + /etc/rc.d/init.d/halt start + else + log_success_msg2 + fi + + if [ -f /forcefsck ]; then + msg="/forcefsck found, forcing file" + msg="${msg} system checks as requested." + log_success_msg "$msg" + options="-f" + else + options="" + fi + + log_info_msg "Checking file systems..." + # Note: -a option used to be -p; but this fails e.g. on fsck.minix + if is_true "$VERBOSE_FSCK"; then + fsck ${options} -a -A -C -T + else + fsck ${options} -a -A -C -T >/dev/null + fi + + error_value=${?} + + if [ "${error_value}" = 0 ]; then + log_success_msg2 + fi + + if [ "${error_value}" = 1 ]; then + msg="\nWARNING:\n\nFile system errors " + msg="${msg}were found and have been corrected.\n" + msg="${msg} You may want to double-check that " + msg="${msg}everything was fixed properly." + log_warning_msg "$msg" + fi + + if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then + msg="\nWARNING:\n\nFile system errors " + msg="${msg}were found and have been " + msg="${msg}corrected, but the nature of the " + msg="${msg}errors require this system to be rebooted.\n\n" + msg="${msg}After you press enter, " + msg="${msg}this system will be rebooted\n\n" + log_failure_msg "$msg" + + log_info_msg "Press Enter to continue..." + wait_for_user + reboot -f + fi + + if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then + msg="\nFAILURE:\n\nFile system errors " + msg="${msg}were encountered that could not be " + msg="${msg}fixed automatically.\nThis system " + msg="${msg}cannot continue to boot and will " + msg="${msg}therefore be halted until those " + msg="${msg}errors are fixed manually by a " + msg="${msg}System Administrator.\n\n" + msg="${msg}After you press Enter, this system will be " + msg="${msg}halted and powered off.\n\n" + log_failure_msg "$msg" + + log_info_msg "Press Enter to continue..." + wait_for_user + /etc/rc.d/init.d/halt start + fi + + if [ "${error_value}" -ge 16 ]; then + msg="FAILURE:\n\nUnexpected failure " + msg="${msg}running fsck. Exited with error " + msg="${msg} code: ${error_value}.\n" + log_info_msg $msg + exit ${error_value} + fi + + exit 0 + ;; + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End checkfs +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds09.html b/lfs-12.2-sysv/scripts/apds09.html new file mode 100644 index 0000000..d3091be --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="mountfs" name="mountfs"></a>D.9. /etc/rc.d/init.d/mountfs + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 / >/dev/null + evaluate_retval + + # Remove fsck-related file system watermarks. + rm -f /fastboot /forcefsck + + # Make sure /dev/pts exists + mkdir -p /dev/pts + + # This will mount all filesystems that do not have _netdev in + # their option list. _netdev denotes a network filesystem. + + log_info_msg "Mounting remaining file systems..." + failed=0 + mount --all --test-opts no_netdev >/dev/null || failed=1 + evaluate_retval + exit $failed + ;; + + stop) + # Don't unmount virtual file systems like /run + log_info_msg "Unmounting all other currently mounted file systems..." + # Ensure any loop devices are removed + losetup -D + umount --all --detach-loop --read-only \ + --types notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null + evaluate_retval + + # Make sure / is mounted read only (umount bug) + mount --options remount,ro / + + # Make all LVM volume groups unavailable, if appropriate + # This fails if swap or / are on an LVM partition + #if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi + if [ -r /etc/mdadm.conf ]; then + log_info_msg "Mark arrays as clean..." + mdadm --wait-clean --scan + evaluate_retval + fi + ;; + + *) + echo "Usage: ${0} {start|stop}" + exit 1 + ;; +esac + +# End mountfs +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds10.html b/lfs-12.2-sysv/scripts/apds10.html new file mode 100644 index 0000000..84f83fc --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="udev_retry" name="udev_retry"></a>D.10. + /etc/rc.d/init.d/udev_retry + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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" = '*' ] && break + cat $file >> /etc/udev/rules.d/$dest + rm -f $file + done + + # Re-trigger the uevents that may have failed, + # in hope they will succeed now + /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \ + while read line ; do + for subsystem in $line ; do + /bin/udevadm trigger --subsystem-match=$subsystem --action=add + done + done + + # Now wait for udevd to process the uevents we triggered + if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then + /bin/udevadm settle + fi + + evaluate_retval + ;; + + *) + echo "Usage ${0} {start}" + exit 1 + ;; +esac + +exit 0 + +# End udev_retry +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds11.html b/lfs-12.2-sysv/scripts/apds11.html new file mode 100644 index 0000000..a00f0f3 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="cleanfs" name="cleanfs"></a>D.11. /etc/rc.d/init.d/cleanfs + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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>&0 < /etc/sysconfig/createfiles + + while read name type perm usr grp dtype maj min junk + do + # Ignore comments and blank lines. + case "${name}" in + ""|\#*) continue ;; + esac + + # Ignore existing files. + if [ ! -e "${name}" ]; then + # Create stuff based on its type. + case "${type}" in + dir) + mkdir "${name}" + ;; + file) + :> "${name}" + ;; + dev) + case "${dtype}" in + char) + mknod "${name}" c ${maj} ${min} + ;; + block) + mknod "${name}" b ${maj} ${min} + ;; + pipe) + mknod "${name}" p + ;; + *) + log_warning_msg "\nUnknown device type: ${dtype}" + ;; + esac + ;; + *) + log_warning_msg "\nUnknown type: ${type}" + continue + ;; + esac + + # Set up the permissions, too. + chown ${usr}:${grp} "${name}" + chmod ${perm} "${name}" + fi + done + + # Close file descriptor 9 (end redirection) + exec 0>&9 9>&- + return 0 +} + +case "${1}" in + start) + log_info_msg "Cleaning file systems:" + + if [ "${SKIPTMPCLEAN}" = "" ]; then + log_info_msg2 " /tmp" + cd /tmp && + find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1 + fi + + > /run/utmp + + if grep -q '^utmp:' /etc/group ; then + chmod 664 /run/utmp + chgrp utmp /run/utmp + fi + + (exit ${failed}) + evaluate_retval + + if grep -E -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then + log_info_msg "Creating files and directories... " + create_files # Always returns 0 + evaluate_retval + fi + + exit $failed + ;; + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End cleanfs +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds12.html b/lfs-12.2-sysv/scripts/apds12.html new file mode 100644 index 0000000..d2cfbed --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="console" name="console"></a>D.12. /etc/rc.d/init.d/console + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 ] && . /etc/sysconfig/console + +failed=0 + +case "${1}" in + start) + # See if we need to do anything + if [ -z "${KEYMAP}" ] && [ -z "${KEYMAP_CORRECTIONS}" ] && + [ -z "${FONT}" ] && [ -z "${LEGACY_CHARSET}" ] && + ! is_true "${UNICODE}"; then + exit 0 + fi + + # There should be no bogus failures below this line! + log_info_msg "Setting up Linux console..." + + # Figure out if a framebuffer console is used + [ -d /sys/class/graphics/fbcon ] && use_fb=1 || use_fb=0 + + # Figure out the command to set the console into the + # desired mode + is_true "${UNICODE}" && + MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" || + MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a" + + # On framebuffer consoles, font has to be set for each vt in + # UTF-8 mode. This doesn't hurt in non-UTF-8 mode also. + + ! is_true "${use_fb}" || [ -z "${FONT}" ] || + MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}" + + # Apply that command to all consoles mentioned in + # /etc/inittab. Important: in the UTF-8 mode this should + # happen before setfont, otherwise a kernel bug will + # show up and the unicode map of the font will not be + # used. + + for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab | + grep -o '\btty[[:digit:]]*\b'` + do + openvt -f -w -c ${TTY#tty} -- \ + /bin/sh -c "${MODE_COMMAND}" || failed=1 + done + + # Set the font (if not already set above) and the keymap + [ "${use_fb}" == "1" ] || [ -z "${FONT}" ] || setfont $FONT || failed=1 + + [ -z "${KEYMAP}" ] || + loadkeys ${KEYMAP} >/dev/null 2>&1 || + failed=1 + + [ -z "${KEYMAP_CORRECTIONS}" ] || + loadkeys ${KEYMAP_CORRECTIONS} >/dev/null 2>&1 || + failed=1 + + # Convert the keymap from $LEGACY_CHARSET to UTF-8 + [ -z "$LEGACY_CHARSET" ] || + dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u >/dev/null 2>&1 || + failed=1 + + # If any of the commands above failed, the trap at the + # top would set $failed to 1 + ( exit $failed ) + evaluate_retval + + exit $failed + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End console +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds13.html b/lfs-12.2-sysv/scripts/apds13.html new file mode 100644 index 0000000..0d0e787 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="localnet" name="localnet"></a>D.13. /etc/rc.d/init.d/localnet + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 ] && . /etc/sysconfig/network +[ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname` + +case "${1}" in + start) + log_info_msg "Bringing up the loopback interface..." + ip addr add 127.0.0.1/8 label lo dev lo + ip link set lo up + evaluate_retval + + log_info_msg "Setting hostname to ${HOSTNAME}..." + hostname ${HOSTNAME} + evaluate_retval + ;; + + stop) + log_info_msg "Bringing down the loopback interface..." + ip link set lo down + evaluate_retval + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + status) + echo "Hostname is: $(hostname)" + ip link show lo + ;; + + *) + echo "Usage: ${0} {start|stop|restart|status}" + exit 1 + ;; +esac + +exit 0 + +# End localnet +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds14.html b/lfs-12.2-sysv/scripts/apds14.html new file mode 100644 index 0000000..7bb5369 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="sysctlscript" name="sysctlscript"></a>D.14. + /etc/rc.d/init.d/sysctl + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds15.html b/lfs-12.2-sysv/scripts/apds15.html new file mode 100644 index 0000000..94f9b44 --- /dev/null +++ b/lfs-12.2-sysv/scripts/apds15.html @@ -0,0 +1,154 @@ +<!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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="sysklogd" name="sysklogd"></a>D.15. /etc/rc.d/init.d/sysklogd + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 +# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org LFS12.1 +# Remove kernel log daemon. The functionality has been +# merged with syslogd. +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: $syslog +# Required-Start: $first localnet +# Should-Start: +# Required-Stop: $local_fs +# Should-Stop: sendsignals +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Starts system log daemon. +# Description: Starts system log daemon. +# /etc/fstab. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Starting system log daemon..." + parms=${SYSKLOGD_PARMS-'-m 0'} + start_daemon /sbin/syslogd $parms + evaluate_retval + ;; + + stop) + log_info_msg "Stopping system log daemon..." + killproc /sbin/syslogd + evaluate_retval + ;; + + reload) + log_info_msg "Reloading system log daemon config file..." + pid=`pidofproc syslogd` + kill -HUP "${pid}" + evaluate_retval + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + status) + statusproc /sbin/syslogd + ;; + + *) + echo "Usage: ${0} {start|stop|reload|restart|status}" + exit 1 + ;; +esac + +exit 0 + +# End sysklogd +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds16.html b/lfs-12.2-sysv/scripts/apds16.html new file mode 100644 index 0000000..fa30a66 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="network" name="network"></a>D.16. /etc/rc.d/init.d/network + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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>/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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds17.html b/lfs-12.2-sysv/scripts/apds17.html new file mode 100644 index 0000000..cf6016a --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="sendsignals" name="sendsignals"></a>D.17. + /etc/rc.d/init.d/sendsignals + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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" ] && 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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds18.html b/lfs-12.2-sysv/scripts/apds18.html new file mode 100644 index 0000000..ea089af --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="rebootscript" name="rebootscript"></a>D.18. + /etc/rc.d/init.d/reboot + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds19.html b/lfs-12.2-sysv/scripts/apds19.html new file mode 100644 index 0000000..b81ca94 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="haltscript" name="haltscript"></a>D.19. /etc/rc.d/init.d/halt + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds20.html b/lfs-12.2-sysv/scripts/apds20.html new file mode 100644 index 0000000..2ba3091 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="template" name="template"></a>D.20. /etc/rc.d/init.d/template + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 >/dev/null; then + command_to_start_the_service + fi + evaluate_retval + ;; + + stop) + log_info_msg "Stopping..." + # if it is possible to use killproc + killproc fully_qualified_path + # if it is not possible to use killproc + # (the daemon shouldn't be stopped by killing it) + if pidofproc daemon_name_as_reported_by_ps >/dev/null; then + command_to_stop_the_service + fi + evaluate_retval + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 + +# End scriptname +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds21.html b/lfs-12.2-sysv/scripts/apds21.html new file mode 100644 index 0000000..cdb5f6c --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="modulessys" name="modulessys"></a>D.21. /etc/sysconfig/modules + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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: +# <module> [<arg1> <arg2> ...] +# +# Each module should be on its own line, and any options that you want +# passed to the module should follow it. The line deliminator is either +# a space or a tab. +######################################################################## + +# End /etc/sysconfig/modules +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds22.html b/lfs-12.2-sysv/scripts/apds22.html new file mode 100644 index 0000000..52f3225 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="createfiles" name="createfiles"></a>D.22. + /etc/sysconfig/createfiles + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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" +# <filename> <type> <permissions> <user> <group> +# if type is equal to "dev" +# <filename> <type> <permissions> <user> <group> <devtype> +# <major> <minor> +# +# <filename> is the name of the file which is to be created +# <type> is either file, dir, or dev. +# file creates a new file +# dir creates a new directory +# dev creates a new device +# <devtype> is either block, char or pipe +# block creates a block device +# char creates a character device +# pipe creates a pipe, this will ignore the <major> and +# <minor> fields +# <major> and <minor> are the major and minor numbers used for +# the device. +######################################################################## + +# End /etc/sysconfig/createfiles +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds23.html b/lfs-12.2-sysv/scripts/apds23.html new file mode 100644 index 0000000..a2d9a13 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="config-udev-retry" name="config-udev-retry"></a>D.23. + /etc/sysconfig/udev-retry + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds24.html b/lfs-12.2-sysv/scripts/apds24.html new file mode 100644 index 0000000..4b496a6 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ifup" name="ifup"></a>D.24. /sbin/ifup + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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 > /dev/null 2>&1; then + link_status=`ip link show $1` + + if [ -n "${link_status}" ]; then + if ! echo "${link_status}" | grep -q UP; then + ip link set $1 up + fi + fi + + else + log_failure_msg "Interface ${IFACE} doesn't exist." + exit 1 + fi + + evaluate_retval +} + +RELEASE="7.7" + +USAGE="Usage: $0 [ -hV ] [--help] [--version] interface" +VERSTR="LFS ifup, version ${RELEASE}" + +while [ $# -gt 0 ]; do + case "$1" in + --help | -h) help="y"; break ;; + + --version | -V) echo "${VERSTR}"; exit 0 ;; + + -*) echo "ifup: ${1}: invalid option" >&2 + echo "${USAGE}" >& 2 + exit 2 ;; + + *) break ;; + esac +done + +if [ -n "$help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +ifup is used to bring up a network interface. The interface +parameter, e.g. eth0 or eth0:2, must match the trailing part of the +interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2. + +HERE_EOF + exit 0 +fi + +file=/etc/sysconfig/ifconfig.${1} + +# Skip backup files +[ "${file}" = "${file%""~""}" ] || exit 0 + +. /lib/lsb/init-functions + +if [ ! -r "${file}" ]; then + log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed." + exit 1 +fi + +. $file + +if [ "$IFACE" = "" ]; then + log_failure_msg "Unable to bring up ${1} interface! ${file} does not define an interface [IFACE]." + exit 1 +fi + +# Do not process this service if started by boot, and ONBOOT +# is not set to yes +if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then + exit 0 +fi + +# Bring up the interface +if [ "$VIRTINT" != "yes" ]; then + up ${IFACE} +fi + +for S in ${SERVICE}; do + if [ ! -x "/lib/services/${S}" ]; then + MSG="\nUnable to process ${file}. Either " + MSG="${MSG}the SERVICE '${S} was not present " + MSG="${MSG}or cannot be executed." + log_failure_msg "$MSG" + exit 1 + fi +done + +#if [ "${SERVICE}" = "wpa" ]; then log_success_msg; fi + +# Create/configure the interface +for S in ${SERVICE}; do + IFCONFIG=${file} /lib/services/${S} ${IFACE} up +done + +# Set link up virtual interfaces +if [ "${VIRTINT}" == "yes" ]; then + up ${IFACE} +fi + +# Bring up any additional interface components +for I in $INTERFACE_COMPONENTS; do up $I; done + +# Set MTU if requested. Check if MTU has a "good" value. +if test -n "${MTU}"; then + if [[ ${MTU} =~ ^[0-9]+$ ]] && [[ $MTU -ge 68 ]] ; then + for I in $IFACE $INTERFACE_COMPONENTS; do + ip link set dev $I mtu $MTU; + done + else + log_info_msg2 "Invalid MTU $MTU" + fi +fi + +# Set the route default gateway if requested +if [ -n "${GATEWAY}" ]; then + if ip route | grep -q default; then + log_warning_msg "Gateway already setup; skipping." + else + log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..." + ip route add default via ${GATEWAY} dev ${IFACE} + evaluate_retval + fi +fi + +# End /sbin/ifup +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds25.html b/lfs-12.2-sysv/scripts/apds25.html new file mode 100644 index 0000000..f7a6a4c --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ifdown" name="ifdown"></a>D.25. /sbin/ifdown + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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" >&2 + echo "${USAGE}" >& 2 + exit 2 ;; + + *) break ;; + esac +done + +if [ -n "$help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +ifdown is used to bring down a network interface. The interface +parameter, e.g. eth0 or eth0:2, must match the trailing part of the +interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2. + +HERE_EOF + exit 0 +fi + +file=/etc/sysconfig/ifconfig.${1} + +# Skip backup files +[ "${file}" = "${file%""~""}" ] || exit 0 + +. /lib/lsb/init-functions + +if [ ! -r "${file}" ]; then + log_warning_msg "${file} is missing or cannot be accessed." + exit 1 +fi + +. ${file} + +if [ "$IFACE" = "" ]; then + log_failure_msg "${file} does not define an interface [IFACE]." + exit 1 +fi + +# We only need to first service to bring down the interface +S=`echo ${SERVICE} | cut -f1 -d" "` + +if ip link show ${IFACE} > /dev/null 2>&1; then + if [ -n "${S}" -a -x "/lib/services/${S}" ]; then + IFCONFIG=${file} /lib/services/${S} ${IFACE} down + else + MSG="Unable to process ${file}. Either " + MSG="${MSG}the SERVICE variable was not set " + MSG="${MSG}or the specified service cannot be executed." + log_failure_msg "$MSG" + exit 1 + fi +else + log_warning_msg "Interface ${1} doesn't exist." +fi + +# Leave the interface up if there are additional interfaces in the device +link_status=`ip link show ${IFACE} 2>/dev/null` + +if [ -n "${link_status}" ]; then + if [ "$(echo "${link_status}" | grep UP)" != "" ]; then + if [ "$(ip addr show ${IFACE} | grep 'inet ')" == "" ]; then + log_info_msg "Bringing down the ${IFACE} interface..." + ip link set ${IFACE} down + evaluate_retval + fi + fi +fi + +# End /sbin/ifdown +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds26.html b/lfs-12.2-sysv/scripts/apds26.html new file mode 100644 index 0000000..03bfde1 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ipv4static" name="ipv4static"></a>D.26. + /lib/services/ipv4-static + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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>/dev/null | grep ${IP}/)" = "" ]; then + log_info_msg "Adding IPv4 address ${IP} to the ${1} interface..." + ip addr add ${args} dev ${1} + evaluate_retval + else + log_warning_msg "Cannot add IPv4 address ${IP} to ${1}. Already present." + fi + ;; + + down) + if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" != "" ]; then + log_info_msg "Removing IPv4 address ${IP} from the ${1} interface..." + ip addr del ${args} dev ${1} + evaluate_retval + fi + + if [ -n "${GATEWAY}" ]; then + # Only remove the gateway if there are no remaining ipv4 addresses + if [ "$(ip addr show ${1} 2>/dev/null | grep 'inet ')" != "" ]; then + log_info_msg "Removing default gateway..." + ip route del default + evaluate_retval + fi + fi + ;; + + *) + echo "Usage: ${0} [interface] {up|down}" + exit 1 + ;; +esac + +# End /lib/services/ipv4-static +</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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apds27.html b/lfs-12.2-sysv/scripts/apds27.html new file mode 100644 index 0000000..fa3091a --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Приложение D. Скрипты загрузки и настройки системы-20240825 + </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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ipv4route" name="ipv4route"></a>D.27. + /lib/services/ipv4-static-route + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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. Скрипты загрузки и настройки системы-20240825">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/apes01.html b/lfs-12.2-sysv/scripts/apes01.html new file mode 100644 index 0000000..28c00d7 --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </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.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="lfsrules" name="lfsrules"></a>E.1. 55-lfs.rules + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <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.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/scripts.html b/lfs-12.2-sysv/scripts/scripts.html new file mode 100644 index 0000000..c987918 --- /dev/null +++ b/lfs-12.2-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. Скрипты загрузки и настройки системы-20240825 + </title> + <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> + <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Часть V. Приложения + </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= + "Часть V. Приложения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="appendix"> + <a id="scripts" name="scripts"></a>D. Скрипты загрузки и настройки + системы-20240825 + </h1> + <div class="appendix"> + <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= + "Часть V. Приложения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.2-sysv/scripts/udev-rules.html b/lfs-12.2-sysv/scripts/udev-rules.html new file mode 100644 index 0000000..64acdba --- /dev/null +++ b/lfs-12.2-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 Vsnapshot" /> + <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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Часть V. Приложения + </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= + "Часть V. Приложения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="appendix"> + <a id="rules" name="rules"></a>E. Правила настройки Udev + </h1> + <div class="appendix"> + <p> + Правила в этом приложении перечислены для удобства. Установка обычно + выполняются с помощью инструкций приведенных в <a class="xref" href= + "../chapter08/udev.html" title= + "8.76. Udev из Systemd-256.4">Раздел 8.76, «Udev из + Systemd-256.4»</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= + "Часть V. Приложения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> |