Rewrite bootscripts and Chaper 7

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@9574 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Bruce Dubbs 2011-08-02 02:15:42 +00:00
parent 75fe59983c
commit 0cda8984a8
47 changed files with 2093 additions and 2126 deletions

View File

@ -1,21 +1,37 @@
2011-05-31 DJ Lucas <dj@linuxfromscratch.org>
2011-07-14 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* Major rewrite of all LFS scripts
** Move ifup/ifdown to /sbin
** Move functions and network services to /lib/boot
** Remove contrib directory
** Move all READ commands to functions and allow the user to specify
HEADLESS=1 to skip READ commands
** Add /etc/sysconfig/init_params for adding environmental parameters
to all functions used in bootscripts
** Move network configuration to /etc/sysconfig/ifconfig.*. The
ifconfig files can have any extention. Use IFACE parameter to
specify the target network interface within the configuration file.
** Adds an optional parameter, SKIPTMPCLEAN, to skip the removal of
files in /tmp at bootup. Specify the variable in
/etc/sysconfig/init_params.
2011-05-31 DJ Lucas <dj@linuxfromscratch.org>
* lfs/init.d/udev: Add multiple udev triggers for both subsystems and
devices per upstream recommendation.
2011-04-19 Bruce Dubbs <bdubbs@linuxfromscratch.org>
2011-04-19 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* lfs/init.d/mountvirtfs: Add creation of /run/{var,lock,shm}.
* lfs/init.d/udev: Add /dev/shm -> /run/shm symlink.
2011-04-18 Bruce Dubbs <bdubbs@linuxfromscratch.org>
2011-04-18 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* lfs/init.d/mountvirtfs: Change name from mountkernfs to mountvirtfs.
Add mounting of /run filesystem.
2010-05-29 Matt Burgess <matthew@linuxfromscratch.org>
2010-05-29 Matt Burgess <matthew@linuxfromscratch.org>
* lfs/init.d/udev: Only copy /lib/udev/devices/null, as Udev >= 155 copies
devices from /lib/udev/devices to /dev itself. Udevd still needs /dev/null
present before starting up though.
2010-04-20 Bryan Kadzban <bryan@linuxfromscratch.org>
2010-04-20 Bryan Kadzban <bryan@linuxfromscratch.org>
* lfs/init.d/udev, lfs/init.d/udev_retry: Add --action=add, to handle udev
version 152 and newer, which send "change" events by default in udevtrigger
now.

View File

@ -1,29 +0,0 @@
Copyright (c) 1999-2002, Gerard Beekmans
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions in any form must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Neither the name of "Linux From Scratch" nor the names of its
contributors may be used to endorse or promote products derived from
this material without specific prior written permission.
* Any material derived from Linux From Scratch must contain a
reference to the "Linux From Scratch" project.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,5 +1,6 @@
ETCDIR=/etc
EXTDIR=${DESTDIR}${ETCDIR}
LIBDIR=${DESTDIR}/lib/boot
MODE=754
DIRMODE=755
CONFMODE=644
@ -17,14 +18,13 @@ create-dirs:
install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rcsysinit.d
install -d -m ${DIRMODE} ${EXTDIR}/rc.d/init.d
install -d -m ${DIRMODE} ${EXTDIR}/sysconfig
install -d -m ${DIRMODE} ${LIBDIR}
create-service-dir:
install -d -m ${DIRMODE} ${EXTDIR}/sysconfig/network-devices/services
install: create-dirs create-service-dir
install: create-dirs
install -m ${MODE} lfs/init.d/checkfs ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/cleanfs ${EXTDIR}/rc.d/init.d/
install -m ${CONFMODE} lfs/init.d/functions ${EXTDIR}/rc.d/init.d/
install -m ${CONFMODE} lfs/init.d/functions ${LIBDIR}
install -m ${MODE} lfs/init.d/halt ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/console ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/consolelog ${EXTDIR}/rc.d/init.d/
@ -37,31 +37,31 @@ install: create-dirs create-service-dir
install -m ${MODE} lfs/init.d/reboot ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/sendsignals ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/setclock ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/sysklogd ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/sysklogd ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/swap ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/sysctl ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/template ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/udev ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/udev_retry ${EXTDIR}/rc.d/init.d/
ln -sf ../init.d/network ${EXTDIR}/rc.d/rc0.d/K80network
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc0.d/K90sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc0.d/K90sysklogd
ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc0.d/S60sendsignals
ln -sf ../init.d/mountfs ${EXTDIR}/rc.d/rc0.d/S70mountfs
ln -sf ../init.d/swap ${EXTDIR}/rc.d/rc0.d/S80swap
ln -sf ../init.d/localnet ${EXTDIR}/rc.d/rc0.d/S90localnet
ln -sf ../init.d/halt ${EXTDIR}/rc.d/rc0.d/S99halt
ln -sf ../init.d/network ${EXTDIR}/rc.d/rc1.d/K80network
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc1.d/K90sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc1.d/K90sysklogd
ln -sf ../init.d/network ${EXTDIR}/rc.d/rc2.d/K80network
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc2.d/K90sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc3.d/S10sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc2.d/K90sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc3.d/S10sysklogd
ln -sf ../init.d/network ${EXTDIR}/rc.d/rc3.d/S20network
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc4.d/S10sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc4.d/S10sysklogd
ln -sf ../init.d/network ${EXTDIR}/rc.d/rc4.d/S20network
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc5.d/S10sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc5.d/S10sysklogd
ln -sf ../init.d/network ${EXTDIR}/rc.d/rc5.d/S20network
ln -sf ../init.d/network ${EXTDIR}/rc.d/rc6.d/K80network
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc6.d/K90sysklogd
ln -sf ../init.d/sysklogd ${EXTDIR}/rc.d/rc6.d/K90sysklogd
ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc6.d/S60sendsignals
ln -sf ../init.d/mountfs ${EXTDIR}/rc.d/rc6.d/S70mountfs
ln -sf ../init.d/swap ${EXTDIR}/rc.d/rc6.d/S80swap
@ -79,28 +79,29 @@ install: create-dirs create-service-dir
ln -sf ../init.d/console ${EXTDIR}/rc.d/rcsysinit.d/S70console
ln -sf ../init.d/localnet ${EXTDIR}/rc.d/rcsysinit.d/S80localnet
ln -sf ../init.d/sysctl ${EXTDIR}/rc.d/rcsysinit.d/S90sysctl
if [ ! -f ${EXTDIR}/sysconfig/createfiles ]; then install -m ${CONFMODE} lfs/sysconfig/createfiles ${EXTDIR}/sysconfig/; fi
if [ ! -f ${EXTDIR}/sysconfig/modules ]; then install -m ${CONFMODE} lfs/sysconfig/modules ${EXTDIR}/sysconfig/; fi
if [ ! -f ${EXTDIR}/sysconfig/rc ]; then install -m ${CONFMODE} lfs/sysconfig/rc ${EXTDIR}/sysconfig/; fi
install -m ${MODE} lfs/sysconfig/network-devices/ifup ${EXTDIR}/sysconfig/network-devices/
install -m ${MODE} lfs/sysconfig/network-devices/ifdown ${EXTDIR}/sysconfig/network-devices/
install -m ${MODE} lfs/sysconfig/network-devices/services/ipv4-static ${EXTDIR}/sysconfig/network-devices/services/
install -m ${MODE} lfs/sysconfig/network-devices/services/ipv4-static-route ${EXTDIR}/sysconfig/network-devices/services/
if [ ! -f ${EXTDIR}/sysconfig/createfiles ]; then \
install -m ${CONFMODE} lfs/sysconfig/createfiles ${EXTDIR}/sysconfig/ ;\
fi
if [ ! -f ${EXTDIR}/sysconfig/modules ]; then \
install -m ${CONFMODE} lfs/sysconfig/modules ${EXTDIR}/sysconfig/ ;\
fi
if [ ! -f ${EXTDIR}/sysconfig/rc ]; then \
install -m ${CONFMODE} lfs/sysconfig/rc ${EXTDIR}/sysconfig/ ;\
fi
install -m ${MODE} lfs/sysconfig/network-devices/ifup /sbin
install -m ${MODE} lfs/sysconfig/network-devices/ifdown /sbin
install -m ${MODE} lfs/sysconfig/network-devices/services/ipv4-static ${LIBDIR}
install -m ${MODE} lfs/sysconfig/network-devices/services/ipv4-static-route ${LIBDIR}
install-consolelog: create-dirs
install -m ${MODE} contrib/init.d/consolelog ${EXTDIR}/rc.d/init.d
ln -sf ../init.d/consolelog ${EXTDIR}/rc.d/rcsysinit.d/S00consolelog
install-lsb-compliant:
make -C contrib/lsb
install-service-mtu: create-service-dir
install -m ${MODE} contrib/sysconfig/network-devices/services/mtu ${EXTDIR}/sysconfig/network-devices/services
minimal: create-dirs create-service-dir
minimal: create-dirs
install -m ${MODE} lfs/init.d/checkfs ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/cleanfs ${EXTDIR}/rc.d/init.d/
install -m ${CONFMODE} lfs/init.d/functions ${EXTDIR}/rc.d/init.d/
install -m ${CONFMODE} lfs/init.d/functions ${LIBDIR}
install -m ${MODE} lfs/init.d/halt ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/localnet ${EXTDIR}/rc.d/init.d/
install -m ${MODE} lfs/init.d/mountfs ${EXTDIR}/rc.d/init.d/
@ -125,8 +126,9 @@ minimal: create-dirs create-service-dir
ln -sf ../init.d/checkfs ${EXTDIR}/rc.d/rcsysinit.d/S30checkfs
ln -sf ../init.d/mountfs ${EXTDIR}/rc.d/rcsysinit.d/S40mountfs
ln -sf ../init.d/cleanfs ${EXTDIR}/rc.d/rcsysinit.d/S45cleanfs
if [ ! -f ${EXTDIR}/sysconfig/rc ]; then install -m ${CONFMODE} lfs/sysconfig/rc ${EXTDIR}/sysconfig/; fi
if [ ! -f ${EXTDIR}/sysconfig/rc ]; then \
install -m ${CONFMODE} lfs/sysconfig/rc ${EXTDIR}/sysconfig/; \
fi
.PHONY: all create-dirs create-service-dir \
install install-service-mtu
.PHONY: all create-dirs install

View File

@ -1,76 +1,79 @@
Network Configuration:
Script Files:
rc.d/init.d/network
sysconfig/network-devices/ifup
sysconfig/network-devices/ifdown
sysconfig/network-devices/services/*
Script Files:
/etc/rc.d/init.d/network
/sbin/ifup
/sbin/ifdown
/lib/boot/*/*
Configuration Files:
sysconfig/network-devices/ifconfig.*/*
Note: ifconfig.* could be either a file or directory,
but the filename extension must be the same name
as the network interface you wish it to belong to.
The files within the directory will be processed
in alphanumerical order on boot, and reversed on
shutdown.
- SERVICE: which script to run in services directory.
- ONBOOT: if set to yes, this interface will be started on
bootup, and stopped on shutdown
Configuration Files:
/etc/sysconfig/ifconfig.*
Note: ifconfig.* could be either a file or directory,
but the filename extension must be the same name
as the network interface you wish it to belong to.
The files within the directory will be processed
in alphanumerical order on boot, and reversed on
shutdown.
- IFACE: the interface that is being configured (e.g. eth0)
- SERVICE: which script to run in services directory.
- ONBOOT: if set to yes, this interface will be started on
bootup, and stopped on shutdown
sysconfig/network
- HOSTNAME: Value of the system's hostname
/etc/sysconfig/network
- HOSTNAME: Value of the system's hostname
Additional Configuration:
sysconfig/network-devices/ifconfig.*
ipv4-static:
- IP: static IP Address
- GATEWAY: Specifies the IP Address of the gateway server
- PREFIX: CIDR prefix of IP Address, defaults to 24 if not set
- PEER: IP Address of peer (for point-to-point connections and tunnels)
- BROADCAST: broadcast address
ipv4-static-route:
- TYPE: network (default type if not specified), default, host or
unreachable
- IP: IP Address of target (for network, host and unreachable)
- PREFIX: CIDR prefix of target (for network, host and unreachable)
- GATEWAY: IP Address of gateway to reach target (for network and default)
Additional Configuration:
ipv4-static:
- IP: static IP Address
- GATEWAY: Specifies the IP Address of the gateway server
- PREFIX: CIDR prefix of IP Address, defaults to 24 if not set
- PEER: IP Address of peer (for point-to-point connections and tunnels)
- BROADCAST: broadcast address
ipv4-static-route:
- TYPE: network (default type if not specified), default, host or
unreachable
- IP: IP Address of target (for network, host and unreachable)
- PREFIX: CIDR prefix of target (for network, host and unreachable)
- GATEWAY: IP Address of gateway to reach target (for network and default)
SetClock configuration:
Script Files:
rc.d/init.d/setclock
Script Files:
/etc/rc.d/init.d/setclock
- SKIPTMPCLEAN: skips cleaning of /tmp directory
Configuration Files:
sysconfig/clock
- UTC: 1 assumes hwclock is in UTC
0 assumes hwclock is in local time
- CLOCKPARAMS: any additional options to be passed to hwclock
Configuration Files:
/etc/sysconfig/clock
- UTC: 1 assumes hwclock is in UTC
0 assumes hwclock is in local time
- CLOCKPARAMS: any additional options to be passed to hwclock
CleanFS configuration:
Script Files:
rc.d/init.d/cleanfs
Script Files:
/etc/rc.d/init.d/cleanfs
Configuration Files:
/etc/sysconfig/createfiles
Each line is parsed, using space as a deliminator.
[NAME] [TYPE] [PERMISSIONS] [USER] [GROUP]
The below fields are currently only used on dev type.
([DEV TYPE] [MAJOR#] [MINOR#])
Name:
File/Directory/Device name
Type:
dir: creates a directory
file: creates a file
dev: creates a device
Permissions:
chmod the created file
User/Group:
chown the created file/dir to this user/group
Dev Type:
char: character [needs MAJOR#, MINOR#]
block: block [needs MAJOR#, MINOR#]
pipe: pipe
Major#:
Used by character and block devices.
Minor#:
Used by character and block devices.
Configuration Files:
/etc/sysconfig/createfiles
Each line is parsed, using space as a deliminator.
[NAME] [TYPE] [PERMISSIONS] [USER] [GROUP]
The below fields are currently only used on dev type.
([DEV TYPE] [MAJOR#] [MINOR#])
Name:
File/Directory/Device name
Type:
dir: creates a directory
file: creates a file
dev: creates a device
Permissions:
chmod the created file
User/Group:
chown the created file/dir to this user/group
Dev Type:
char: character [needs MAJOR#, MINOR#]
block: block [needs MAJOR#, MINOR#]
pipe: pipe
Major#:
Used by character and block devices.
Minor#:
Used by character and block devices.

View File

@ -1,11 +0,0 @@
ETCDIR=/etc
EXTDIR=${DESTDIR}${ETCDIR}
MODE=754
DIRMODE=755
CONFMODE=644
install:
install -d -m ${DIRMODE} ${DESTDIR}/lib/lsb
install -m ${CONFMODE} lib/init-functions ${DESTDIR}/lib/lsb
.PHONY: install

View File

@ -1,348 +0,0 @@
#*******************************************************************************
# Function - start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args]
#
# Purpose: This runs the specified program as a daemon
#
# Inputs: -f, run the program even if it is already running
# -n nicelevel, specifies a nice level. See nice(1).
# -p pidfile, uses the specified pidfile
# pathname, pathname to the specified program
# args, arguments to pass to specified program
#
# Outputs: return 0 - Success
# return 2 - Invalid or excessive number of arguments,
# warning in stdout
# return 4 - Program or service status is unknown
#
# Dependencies: nice
#
# Todo: none
#
#*******************************************************************************
start_daemon()
{
local pidfile=""
local forcestart=""
local nicelevel="0"
while true
do
case "${1}" in
-f)
forcestart="1"
shift 1
;;
-n)
nicelevel="${2}"
shift 2
;;
-p)
pidfile="${2}"
shift 2
;;
-*)
log_failure_msg "Unknown Option: ${1}"
return 2
;;
*)
break
;;
esac
done
if [ -z "${forcestart}" ]; then
if [ -z "${pidfile}" ]; then
pidofproc "${1}" > /dev/null
else
pidofproc -p "${pidfile}" "${1}" > /dev/null
fi
case "${?}" in
0)
log_warning_msg "Unable to continue: ${1} is running"
return 4
;;
1)
log_warning_msg "Unable to continue: ${pidfile} exists"
return 4
;;
3)
;;
*)
log_failure_msg "Unknown error code from pidofproc: ${?}"
return 4
;;
esac
fi
nice -n "${nicelevel}" "${@}"
}
#*******************************************************************************
# Function - killproc [-p pidfile] pathname [signal]
#
# Purpose:
#
# Inputs: -p pidfile, uses the specified pidfile
# pathname, pathname to the specified program
# signal, send this signal to pathname
#
# Outputs: return 0 - Success
# return 1 - Invalid or excessive number of arguments,
# warning in stdout
# return 4 - Unknown Status
#
# Dependencies: kill
#
# Todo: test
#
#*******************************************************************************
killproc()
{
local pidfile=""
local killsig=""
local pidlist=""
while true
do
case "${1}" in
-p)
pidfile="${2}"
shift 2
;;
-*)
log_failure_msg "Unknown Option: ${1}"
return 1
;;
*)
break
;;
esac
done
if [ "${#}" = "2" ]; then
killsig="${2}"
elif [ "${#}" != "1" ]; then
shift 2
log_failure_msg "Excess Arguments: $@"
return 1
fi
if [ -z "${pidfile}" ]; then
pidlist=`pidofproc "${1}"`
else
pidlist=`pidofproc -p "${pidfile}" "${1}"`
fi
for pid in ${pidlist}
do
kill -${killsig:-TERM} ${pid} 2> /dev/null
if [ -z "${killsig}" ]; then
# Wait up to 3 seconds, for ${pid} to terminate
local dtime=3
while [ "${dtime}" != "0" ]
do
kill -0 ${pid} 2> /dev/null || break
sleep 1
dtime=$(( ${dtime} - 1))
done
# If ${pid} is still running, kill it
kill -0 ${pid} 2> /dev/null && kill -KILL ${pid} 2> /dev/null
fi
done
if [ -z "${killsig}" ]; then
pidofproc "${1}" 2>&1 > /dev/null
# Program was terminated
if [ "$?" != "0" ]; then
# Pidfile Exists
if [ -f "${pidfile}" ]; then
rm -f "${pidfile}" 2>&1 > /dev/null
fi
return 0
else # Program is still running
return 4 # Unknown Status
fi
else
if [ -z "${pidfile}" ]; then
pidofproc "${1}" 2> /dev/null
else
pidofproc -p "${pidfile}" "${1}" 2> /dev/null
fi
fi
}
#*******************************************************************************
# Function - 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
#
# Outputs: return 0 - Success, pid's in stdout
# return 1 - Invalid or excessive number of arguments,
# warning in stdout
# return 1 - Program is dead, pidfile exists
# return 3 - Program is not running
#
# Dependencies: pidof, echo
#
# Todo: - Invalid or excessive argments, and program is dead pidfile exists
# conflict with eachother
#
#*******************************************************************************
pidofproc()
{
local pidfile=""
local lpids=""
local pidlist=""
while true
do
case "${1}" in
-p)
pidfile="${2}"
shift 2
;;
-*)
log_failure_msg "Unknown Option: ${1}"
return 1
;;
*)
break
;;
esac
done
if [ "${#}" != "1" ]; then
shift 1
log_failure_msg "Excess Arguments: $@"
return 1
fi
if [ -n "${pidfile}" ]; then
if [ ! -r "${pidfile}" ]; then
return 3 # Program is not running
fi
lpids=`head -n 1 ${pidfile}`
for pid in ${lpids}
do
if [ "${pid}" -ne "$$" -a "${pid}" -ne "${PPID}" ]; then
kill -0 "${pid}" 2> /dev/null &&
pidlist="${pidlist} ${pid}"
fi
echo ${pidlist}
test -z "${pidlist}" && return 1 # Program is dead, pidfile exists
return 0
done
else
pidof "${1}"
fi
if [ "$?" != "0" ]; then
return 3 # Program is not running
fi
}
# Screen Dimentions
if [ -z "${COLUMNS}" ]; then
COLUMNS=$(stty size)
COLUMNS=${COLUMNS##* }
fi
# When using remote connections, such as a serial port, stty size returns 0
if [ "${COLUMNS}" = "0" ]; then
COLUMNS=80
fi
# Measurements for positioning result messages
COL=$((${COLUMNS} - 8))
WCOL=$((${COL} - 2))
# Set Cursur Position Commands, used via echo -e
SET_COL="\\033[${COL}G" # at the $COL char
SET_WCOL="\\033[${WCOL}G" # at the $WCOL char
CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char
# Set color commands, used via echo -e
# Please consult `man console_codes` for more information
# under the "Set Graphics Resolution" 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
BOOTMESG_PREFIX=" * " # Text at the beginning of every line
#*******************************************************************************
# Function - log_success_msg "message"
#
# Purpose: Print a success message
#
# Inputs:
#
# Outputs:
#
# Dependencies: echo
#
# Todo: logging
#
#*******************************************************************************
log_success_msg()
{
echo -n -e "${BOOTMESG_PREFIX}${@}"
echo -e "${SET_COL}""${BRACKET}""[""${SUCCESS}"" OK ""${BRACKET}""]""${NORMAL}"
return 0
}
#*******************************************************************************
# Function - log_failure_msg "message"
#
# Purpose: Print a failure message
#
# Inputs: $@ - Message
#
# Outputs: Text output to screen
#
# Dependencies: echo
#
# Todo: logging
#
#*******************************************************************************
log_failure_msg() {
echo -n -e "${BOOTMESG_PREFIX}${@}"
echo -e "${SET_COL}""${BRACKET}""[""${FAILURE}"" FAIL ""${BRACKET}""]""${NORMAL}"
return 0
}
#*******************************************************************************
# Function - log_warning_msg "message"
#
# Purpose: print a warning message
#
# Inputs: $@ - Message
#
# Outputs: Text output to screen
#
# Dependencies: echo
#
# Todo: logging
#
#*******************************************************************************
log_warning_msg() {
echo -n -e "${BOOTMESG_PREFIX}${@}"
echo -e "${SET_COL}""${BRACKET}""[""${WARNING}"" WARN ""${BRACKET}""]""${NORMAL}"
return 0
}

View File

@ -1,45 +0,0 @@
#!/bin/sh
########################################################################
# Begin $network_devices/services/mtu
#
# Description : Sets MTU per interface
#
# Authors : Nathan Coulson - nathan@linuxfromscratch.org
# Jim Gifford - jim@linuxfromscratch.org
#
# Version : 00.00
#
# Notes : This sets the maximum amount of bytes that can be
# transmitted within a packet. By default, this
# value is set to 1500.
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
. ${IFCONFIG}
if [ -z "${MTU}" ]
then
boot_mesg "MTU variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
case "${2}" in
up)
boot_mesg "Setting the MTU for ${1} to ${MTU}..."
echo "${MTU}" > "/sys/class/net/${1}/mtu"
evaluate_retval
;;
down)
;;
*)
echo "Usage: ${0} [interface] {up|down}"
exit 1
;;
esac
# End $network_devices/services/mtu

View File

@ -1,15 +1,14 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/checkfs
# Begin checkfs
#
# Description : File System Check
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# A. Luebke - luebke@users.sourceforge.net
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
# Based on checkfs script from LFS-3.1 and earlier.
#
@ -25,107 +24,119 @@
#
#########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: checkfs
# Required-Start: udev swap $time
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Checks local filesystems before mounting.
# Description: Checks local filesystmes before mounting.
# X-LFS-Provided-By: LFS
### END INIT INFO
. /lib/boot/functions
case "${1}" in
start)
if [ -f /fastboot ]; then
boot_mesg -n "/fastboot found, will not perform" ${INFO}
boot_mesg " file system checks as requested."
echo_ok
exit 0
fi
start)
if [ -f /fastboot ]; then
boot_mesg -n "/fastboot found, will not perform" ${INFO}
boot_mesg " file system checks as requested."
echo_ok
exit 0
fi
boot_mesg "Mounting root file system in read-only mode..."
mount -n -o remount,ro / >/dev/null
evaluate_retval
boot_mesg "Mounting root file system in read-only mode..."
mount -n -o remount,ro / >/dev/null
evaluate_retval
if [ ${?} != 0 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nCannot check root" ${FAILURE}
boot_mesg -n " filesystem because it could not be mounted"
boot_mesg -n " in read-only mode.\n\nAfter you"
boot_mesg -n " press Enter, this system will be"
boot_mesg -n " halted and powered off."
boot_mesg -n "\n\nPress enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
read ENTER
${rc_base}/init.d/halt stop
fi
if [ ${?} != 0 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nCannot check root" ${FAILURE}
boot_mesg -n " filesystem because it could not be mounted"
boot_mesg -n " in read-only mode.\n\nAfter you"
boot_mesg -n " press Enter, this system will be"
boot_mesg -n " halted and powered off."
boot_mesg -n "\n\nPress enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
wait_for_user
/etc/rc.d/init.d/halt stop
fi
if [ -f /forcefsck ]; then
boot_mesg -n "/forcefsck found, forcing file" ${INFO}
boot_mesg " system checks as requested."
echo_ok
options="-f"
else
options=""
fi
if [ -f /forcefsck ]; then
boot_mesg -n "/forcefsck found, forcing file" ${INFO}
boot_mesg " system checks as requested."
echo_ok
options="-f"
else
options=""
fi
boot_mesg "Checking file systems..."
# Note: -a option used to be -p; but this fails e.g.
# on fsck.minix
fsck ${options} -a -A -C -T
error_value=${?}
boot_mesg "Checking file systems..."
# Note: -a option used to be -p; but this fails e.g.
# on fsck.minix
fsck ${options} -a -A -C -T
error_value=${?}
if [ "${error_value}" = 0 ]; then
echo_ok
fi
if [ "${error_value}" = 0 ]; then
echo_ok
fi
if [ "${error_value}" = 1 ]; then
echo_warning
boot_mesg -n "WARNING:\n\nFile system errors" ${WARNING}
boot_mesg -n " were found and have been corrected."
boot_mesg -n " You may want to double-check that"
boot_mesg -n " everything was fixed properly."
boot_mesg "" ${NORMAL}
fi
if [ "${error_value}" = 1 ]; then
echo_warning
boot_mesg -n "WARNING:\n\nFile system errors" ${WARNING}
boot_mesg -n " were found and have been corrected. "
boot_mesg -n " You may want to double-check that"
boot_mesg -n " everything was fixed properly."
boot_mesg "" ${NORMAL}
fi
if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then
echo_warning
boot_mesg -n "WARNING:\n\nFile system errors" ${WARNING}
boot_mesg -n " were found and have been been"
boot_mesg -n " corrected, but the nature of the"
boot_mesg -n " errors require this system to be"
boot_mesg -n " rebooted.\n\nAfter you press enter,"
boot_mesg -n " this system will be rebooted"
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
read ENTER
reboot -f
fi
if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then
echo_warning
boot_mesg -n "WARNING:\n\nFile system errors" ${WARNING}
boot_mesg -n " were found and have been been"
boot_mesg -n " corrected, but the nature of the"
boot_mesg -n " errors require this system to be"
boot_mesg -n " rebooted.\n\nAfter you press enter,"
boot_mesg -n " this system will be rebooted"
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
wait_for_user
reboot -f
fi
if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nFile system errors" ${FAILURE}
boot_mesg -n " were encountered that could not be"
boot_mesg -n " fixed automatically. This system"
boot_mesg -n " cannot continue to boot and will"
boot_mesg -n " therefore be halted until those"
boot_mesg -n " errors are fixed manually by a"
boot_mesg -n " System Administrator.\n\nAfter you"
boot_mesg -n " press Enter, this system will be"
boot_mesg -n " halted and powered off."
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
read ENTER
${rc_base}/init.d/halt stop
fi
if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nFile system errors" ${FAILURE}
boot_mesg -n " were encountered that could not be"
boot_mesg -n " fixed automatically. This system"
boot_mesg -n " cannot continue to boot and will"
boot_mesg -n " therefore be halted until those"
boot_mesg -n " errors are fixed manually by a"
boot_mesg -n " System Administrator.\n\nAfter you"
boot_mesg -n " press Enter, this system will be"
boot_mesg -n " halted and powered off."
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
wait_for_user
/etc/rc.d/init.d/halt stop
fi
if [ "${error_value}" -ge 16 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nUnexpected Failure" ${FAILURE}
boot_mesg -n " running fsck. Exited with error"
boot_mesg -n " code: ${error_value}."
boot_mesg "" ${NORMAL}
exit ${error_value}
fi
;;
*)
echo "Usage: ${0} {start}"
exit 1
;;
if [ "${error_value}" -ge 16 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nUnexpected Failure" ${FAILURE}
boot_mesg -n " running fsck. Exited with error"
boot_mesg -n " code: ${error_value}."
boot_mesg "" ${NORMAL}
exit ${error_value}
fi
;;
*)
echo "Usage: ${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/checkfs
# End checkfs

View File

@ -1,19 +1,32 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/cleanfs
# Begin cleanfs
#
# Description : Clean file system
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### 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 /var/run, /var/lock, and
# optionally) /tmp. cleanfs also creates /var/run/utmp
# and any files defined in /etc/sysconfig/createfiles.
# X-LFS-Provided-By: LFS
### END INIT INFO
. /lib/boot/functions
# Function to create files/directory on boot.
create_files() {
@ -21,7 +34,6 @@ create_files() {
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 ;;
@ -73,10 +85,11 @@ case "${1}" in
start)
boot_mesg -n "Cleaning file systems:" ${INFO}
boot_mesg -n " /tmp" ${NORMAL}
cd /tmp &&
find . -xdev -mindepth 1 ! -name lost+found \
-delete || failed=1
if [ "${SKIPTMPCLEAN}" = "" ]; then
boot_mesg -n " /tmp" ${NORMAL}
cd /tmp &&
find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1
fi
> /var/run/utmp
@ -100,4 +113,4 @@ case "${1}" in
;;
esac
# End $rc_base/init.d/cleanfs
# End cleanfs

View File

@ -1,96 +1,107 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/console
# Begin console
#
# Description : Sets keymap and screen font
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Alexander E. Patrakov
# Alexander E. Patrakov
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.03
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
. /lib/boot/functions
### BEGIN INIT INFO
# Provides: console
# Required-Start:
# Should-Start: $local_fs
# 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
# Native English speakers probably don't have /etc/sysconfig/console at all
if [ -f /etc/sysconfig/console ]
then
. /etc/sysconfig/console
if [ -r /etc/sysconfig/console ]; then
. /etc/sysconfig/console
else
exit 0
exit 0
fi
is_true() {
[ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ]
[ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ]
}
failed=0
case "${1}" in
start)
boot_mesg "Setting up Linux console..."
# There should be no bogus failures below this line!
# Figure out if a framebuffer console is used
[ -d /sys/class/graphics/fb0 ] && 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}"
start)
boot_mesg "Setting up Linux console..."
# There should be no bogus failures below this line!
# 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.
# FIXME: Fedora Core also initializes two spare consoles
# - do we want that?
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
# Figure out if a framebuffer console is used
[ -d /sys/class/graphics/fb0 ] && USE_FB=1 || USE_FB=0
# Set the font (if not already set above) and the keymap
is_true "${USE_FB}" || [ -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
# 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"
# Convert the keymap from $LEGACY_CHARSET to UTF-8
[ -z "$LEGACY_CHARSET" ] ||
dumpkeys -c "$LEGACY_CHARSET" |
loadkeys -u >/dev/null 2>&1 ||
failed=1
# 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.
# If any of the commands above failed, the trap at the
# top would set $failed to 1
( exit $failed )
evaluate_retval
;;
*)
echo $"Usage:" "${0} {start}"
exit 1
;;
! 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.
# FIXME: Fedora Core also initializes two spare consoles
# - do we want that?
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
is_true "${USE_FB}" || [ -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
;;
*)
echo $"Usage:" "${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/console
# End console

View File

@ -1,61 +1,73 @@
#!/bin/sh
# Begin $rc_base/init.d/consolelog
########################################################################
# Begin consolelog
#
# Description : Set the kernel log level for the console
#
# Authors : Dan Nicholson - dnicholson@linuxfromscratch.org
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
# Version : LFS 7.0
#
# Notes : /proc must be mounted before this can run
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: consolelog
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Sets the console log level.
# Description: Sets the console log level.
# X-LFS-Provided-By: LFS
### END INIT INFO
. /lib/boot/functions
# set the default loglevel
LOGLEVEL=7
if [ -r /etc/sysconfig/console ]; then
. /etc/sysconfig/console
fi
[ -r /etc/sysconfig/console ] && . /etc/sysconfig/console
case "${1}" in
start)
case "$LOGLEVEL" in
[1-8])
boot_mesg "Setting the console log level to ${LOGLEVEL}..."
dmesg -n $LOGLEVEL
evaluate_retval
;;
*)
boot_mesg "Console log level '${LOGLEVEL}' is invalid" ${FAILURE}
echo_failure
;;
esac
;;
status)
# Read the current value if possible
if [ -r /proc/sys/kernel/printk ]; then
read level line < /proc/sys/kernel/printk
else
boot_mesg "Can't read the current console log level" ${FAILURE}
echo_failure
fi
start)
case "$LOGLEVEL" in
[1-8])
boot_mesg "Setting the console log level to ${LOGLEVEL}..."
dmesg -n $LOGLEVEL
evaluate_retval
;;
*)
boot_mesg "Console log level '${LOGLEVEL}' is invalid" ${FAILURE}
echo_failure
;;
esac
;;
# Print the value
if [ -n "$level" ]; then
${ECHO} -e "${INFO}The current console log level" \
"is ${level}${NORMAL}"
fi
;;
status)
# Read the current value if possible
if [ -r /proc/sys/kernel/printk ]; then
read level line < /proc/sys/kernel/printk
else
boot_mesg "Can't read the current console log level" ${FAILURE}
echo_failure
fi
*)
echo "Usage: ${0} {start|status}"
exit 1
;;
# Print the value
if [ -n "$level" ]; then
${ECHO} -e "${INFO}The current console log level is ${level}${NORMAL}"
fi
;;
*)
echo "Usage: ${0} {start|status}"
exit 1
;;
esac
# End $rc_base/init.d/consolelog
# End consolelog

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +1,38 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/halt
# Begin halt
#
# Description : Halt Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: halt
# Required-Start:
# 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
stop)
halt -d -f -i -p
;;
*)
echo "Usage: {stop}"
exit 1
;;
stop)
halt -d -f -i -p
;;
*)
echo "Usage: {stop}"
exit 1
;;
esac
# End $rc_base/init.d/halt
# End halt

View File

@ -1,54 +1,66 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/localnet
# Begin localnet
#
# Description : Loopback device
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: localnet
# Required-Start: $local_fs
# Should-Start:
# 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/boot/functions
. /etc/sysconfig/network
case "${1}" in
start)
boot_mesg "Bringing up the loopback interface..."
ip addr add 127.0.0.1/8 label lo dev lo
ip link set lo up
evaluate_retval
start)
boot_mesg "Bringing up the loopback interface..."
ip addr add 127.0.0.1/8 label lo dev lo
ip link set lo up
evaluate_retval
boot_mesg "Setting hostname to ${HOSTNAME}..."
hostname ${HOSTNAME}
evaluate_retval
;;
boot_mesg "Setting hostname to ${HOSTNAME}..."
hostname ${HOSTNAME}
evaluate_retval
;;
stop)
boot_mesg "Bringing down the loopback interface..."
ip link set lo down
evaluate_retval
;;
stop)
boot_mesg "Bringing down the loopback interface..."
ip link set lo down
evaluate_retval
;;
restart)
${0} stop
sleep 1
${0} start
;;
restart)
${0} stop
sleep 1
${0} start
;;
status)
echo "Hostname is: $(hostname)"
ip link show lo
;;
status)
echo "Hostname is: $(hostname)"
ip link show lo
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 1
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 1
;;
esac
# End $rc_base/init.d/localnet
# End localnet

View File

@ -1,72 +1,83 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/modules
# Begin modules
#
# Description : Module auto-loading script
#
# Authors : Zack Winkles
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: modules
# Required-Start: mountvirtfs sysctl
# 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
. /lib/boot/functions
# Assure that the kernel has module support.
[ -e /proc/ksyms -o -e /proc/modules ] || exit 0
case "${1}" in
start)
start)
# Exit if there's no modules file or there are no
# valid entries
[ -r /etc/sysconfig/modules ] &&
egrep -qv '^($|#)' /etc/sysconfig/modules ||
exit 0
# Exit if there's no modules file or there are no
# valid entries
[ -r /etc/sysconfig/modules ] &&
egrep -qv '^($|#)' /etc/sysconfig/modules ||
exit 0
boot_mesg -n "Loading modules:" ${INFO}
boot_mesg -n "Loading modules:" ${INFO}
# Only try to load modules if the user has actually given us
# some modules to load.
while read module args; do
# 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
# Ignore comments and blank lines.
case "$module" in
""|"#"*) continue ;;
esac
# Attempt to load the module, making
# sure to pass any arguments provided.
modprobe ${module} ${args} >/dev/null
# Attempt to load the module, making
# sure to pass any arguments provided.
modprobe ${module} ${args} >/dev/null
# Print the module name if successful,
# otherwise take note.
if [ $? -eq 0 ]; then
boot_mesg -n " ${module}" ${NORMAL}
else
failedmod="${failedmod} ${module}"
fi
done < /etc/sysconfig/modules
# Print the module name if successful,
# otherwise take note.
if [ $? -eq 0 ]; then
boot_mesg -n " ${module}" ${NORMAL}
else
failedmod="${failedmod} ${module}"
fi
done < /etc/sysconfig/modules
boot_mesg "" ${NORMAL}
# Print a message about successfully loaded
# modules on the correct line.
echo_ok
boot_mesg "" ${NORMAL}
# Print a message about successfully loaded
# modules on the correct line.
echo_ok
# Print a failure message with a list of any
# modules that may have failed to load.
if [ -n "${failedmod}" ]; then
boot_mesg "Failed to load modules:${failedmod}" ${FAILURE}
echo_failure
fi
;;
# Print a failure message with a list of any
# modules that may have failed to load.
if [ -n "${failedmod}" ]; then
boot_mesg "Failed to load modules:${failedmod}" ${FAILURE}
echo_failure
fi
;;
*)
echo "Usage: ${0} {start}"
exit 1
;;
*)
echo "Usage: ${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/modules
# End modules

View File

@ -1,56 +1,70 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/mountfs
# Begin mountfs
#
# Description : File System Mount Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: $local_fs
# Required-Start: udev checkfs
# Should-Start:
# Required-Stop: swap
# 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/boot/functions
case "${1}" in
start)
boot_mesg "Remounting root file system in read-write mode..."
mount -n -o remount,rw / >/dev/null
evaluate_retval
start)
boot_mesg "Remounting root file system in read-write mode..."
mount -n -o remount,rw / >/dev/null
evaluate_retval
# Remove fsck-related file system watermarks.
rm -f /fastboot /forcefsck
# Remove fsck-related file system watermarks.
rm -f /fastboot /forcefsck
boot_mesg "Recording existing mounts in /etc/mtab..."
> /etc/mtab
boot_mesg "Recording existing mounts in /etc/mtab..."
> /etc/mtab
mount -f / || failed=1
mount -f /proc || failed=1
mount -f /sys || failed=1
mount -f /run || failed=1
(exit ${failed})
evaluate_retval
mount -f / || failed=1
mount -f /proc || failed=1
mount -f /sys || failed=1
mount -f /run || failed=1
(exit ${failed})
evaluate_retval
# This will mount all filesystems that do not have _netdev in
# their option list. _netdev denotes a network filesystem.
boot_mesg "Mounting remaining file systems..."
mount -a -O no_netdev >/dev/null
evaluate_retval
;;
# This will mount all filesystems that do not have _netdev in
# their option list. _netdev denotes a network filesystem.
boot_mesg "Mounting remaining file systems..."
mount -a -O no_netdev >/dev/null
evaluate_retval
;;
stop)
boot_mesg "Unmounting all other currently mounted file systems..."
umount -a -d -r >/dev/null
evaluate_retval
;;
stop)
boot_mesg "Unmounting all other currently mounted file systems..."
umount -a -d -r >/dev/null
evaluate_retval
;;
*)
echo "Usage: ${0} {start|stop}"
exit 1
;;
*)
echo "Usage: ${0} {start|stop}"
exit 1
;;
esac
# End $rc_base/init.d/mountfs
# End mountfs

View File

@ -1,50 +1,63 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/mountvirtfs
# Begin mountvirtfs
#
# Description : Mount proc, sysfs, and run
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: mountvirtfs
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Mounts /sys and /proc virtual (kernel) filesystems.
# Mounts /run tmpfs.
# Description: Mounts /sys and /proc virtual (kernel) filesystems.
# Mounts /run tmpfs.
# X-LFS-Provided-By: LFS
### END INIT INFO
. /lib/boot/functions
case "${1}" in
start)
boot_mesg -n "Mounting virtual file systems:" ${INFO}
start)
mkdir -p /run
mount -n /run || failed=1
mkdir -p /run/{var,lock,shm}
if ! mountpoint /proc >/dev/null; then
boot_mesg -n " /proc" ${NORMAL}
mount -n /proc || failed=1
fi
if ! mountpoint /sys >/dev/null; then
boot_mesg -n " /sys" ${NORMAL}
mount -n /sys || failed=1
fi
boot_mesg -n "Mounting virtual file systems:" ${INFO}
boot_mesg -n " /run" ${NORMAL}
if ! mountpoint /run >/dev/null; then
boot_mesg -n " /run" ${NORMAL}
mount -n /run || failed=1
mkdir /run/{var,lock,shm}
fi
if ! mountpoint /proc >/dev/null; then
boot_mesg -n " /proc" ${NORMAL}
mount -n /proc || failed=1
fi
boot_mesg "" ${NORMAL}
if ! mountpoint /sys >/dev/null; then
boot_mesg -n " /sys" ${NORMAL}
mount -n /sys || failed=1
fi
(exit ${failed})
evaluate_retval
;;
boot_mesg "" ${NORMAL}
*)
echo "Usage: ${0} {start}"
exit 1
;;
(exit ${failed})
evaluate_retval
;;
*)
echo "Usage: ${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/mountvertfs
# End mountvertfs

View File

@ -1,73 +1,81 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/network
# Begin network
#
# Description : Network Control Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Nathan Coulson - nathan@linuxfromscratch.org
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
# Nathan Coulson - nathan@linuxfromscratch.org
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network
### BEGIN INIT INFO
# Provides: $network
# Required-Start: $local_fs swap localnet
# Should-Start: $syslog
# Required-Stop: $local_fs swap localnet
# Should-Stop: $syslog
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 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)
# Start all network interfaces
for file in ${network_devices}/ifconfig.*
do
interface=${file##*/ifconfig.}
start)
# 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
# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi
IN_BOOT=1 ${network_devices}/ifup ${interface}
done
;;
/sbin/ifup ${interface}
done
;;
stop)
# Reverse list
FILES=""
for file in ${network_devices}/ifconfig.*
do
FILES="${file} ${FILES}"
done
stop)
# Reverse list
FILES=""
for file in /etc/sysconfig/ifconfig.*
do
FILES="${file} ${FILES}"
done
# Stop all network interfaces
for file in ${FILES}
do
interface=${file##*/ifconfig.}
# Stop all network interfaces
for file in ${FILES}
do
interface=${file##*/ifconfig.}
# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi
# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi
IN_BOOT=1 ${network_devices}/ifdown ${interface}
done
;;
/sbin/ifdown ${interface}
done
;;
restart)
${0} stop
sleep 1
${0} start
;;
restart)
${0} stop
sleep 1
${0} start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac
# End /etc/rc.d/init.d/network
# End network

View File

@ -1,19 +1,52 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/rc
# Begin rc
#
# Description : Main Run Level Control Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
. /lib/boot/functions
print_error_msg()
{
echo_failure
# $i is set when called
boot_mesg -n "FAILURE:\n\nYou should not be reading this error message.\n\n" ${FAILURE}
boot_mesg -n " It means that an unforeseen error took"
boot_mesg -n " place in ${i}, which exited with a return value of"
boot_mesg " ${error_value}.\n"
boot_mesg_flush
boot_mesg -n "If you're able to track this"
boot_mesg -n " error down to a bug in one of the files provided by"
boot_mesg -n " the LFS book, please be so kind to inform us at"
boot_mesg " lfs-dev@linuxfromscratch.org.\n"
boot_mesg_flush
boot_mesg -n "Press Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
wait_for_user
}
check_script_status()
{
# $i is set when called
if [ ! -f ${i} ]; then
boot_mesg "${i} is not a valid symlink." ${WARNING}
echo_warning
continue
fi
if [ ! -x ${i} ]; then
boot_mesg "${i} is not executable, skipping." ${WARNING}
echo_warning
continue
fi
}
# This sets a few default terminal options.
stty sane
@ -24,76 +57,77 @@ trap "" INT QUIT TSTP
[ "${1}" != "" ] && runlevel=${1}
if [ "${runlevel}" = "" ]; then
echo "Usage: ${0} <runlevel>" >&2
exit 1
echo "Usage: ${0} <runlevel>" >&2
exit 1
fi
previous=${PREVLEVEL}
[ "${previous}" = "" ] && previous=N
if [ ! -d ${rc_base}/rc${runlevel}.d ]; then
boot_mesg "${rc_base}/rc${runlevel}.d does not exist." ${WARNING}
boot_mesg_flush
exit 1
if [ ! -d /etc/rc.d/rc${runlevel}.d ]; then
boot_mesg "/etc/rc.d/rc${runlevel}.d does not exist."
exit 1
fi
# Attempt to stop all service started by previous runlevel,
# Attempt to stop all services started by the previous runlevel,
# and killed in this runlevel
if [ "${previous}" != "N" ]; then
for i in $(ls -v ${rc_base}/rc${runlevel}.d/K* 2> /dev/null)
do
check_script_status
for i in $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null)
do
check_script_status
suffix=${i#$rc_base/rc$runlevel.d/K[0-9][0-9]}
prev_start=$rc_base/rc$previous.d/S[0-9][0-9]$suffix
sysinit_start=$rc_base/rcsysinit.d/S[0-9][0-9]$suffix
suffix=${i#/etc/rc.d/rc$runlevel.d/K[0-9][0-9]}
prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix
sysinit_start=/etc/rc.d/rcsysinit.d/S[0-9][0-9]$suffix
if [ "${runlevel}" != "0" ] && [ "${runlevel}" != "6" ]; then
if [ ! -f ${prev_start} ] && [ ! -f ${sysinit_start} ]; then
boot_mesg -n "WARNING:\n\n${i} can't be" ${WARNING}
boot_mesg -n " executed because it was not"
boot_mesg -n " not started in the previous"
boot_mesg -n " runlevel (${previous})."
boot_mesg "" ${NORMAL}
boot_mesg_flush
continue
fi
fi
${i} stop
error_value=${?}
if [ "${runlevel}" != "0" ] && [ "${runlevel}" != "6" ]; then
if [ ! -f ${prev_start} ] && [ ! -f ${sysinit_start} ]; then
boot_mesg -n "WARNING:\n\n${i} can't be" ${WARNING}
boot_mesg -n " executed because it was not"
boot_mesg -n " not started in the previous"
boot_mesg -n " runlevel (${previous})."
boot_mesg "" ${NORMAL}
boot_mesg_flush
continue
fi
fi
${i} stop
error_value=${?}
if [ "${error_value}" != "0" ]; then
print_error_msg
fi
done
if [ "${error_value}" != "0" ]; then
print_error_msg
fi
done
fi
[ "${previous}" = "N" ] && IN_BOOT=1
#Start all functions in this runlevel
for i in $( ls -v ${rc_base}/rc${runlevel}.d/S* 2> /dev/null)
for i in $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null)
do
if [ "${previous}" != "N" ]; then
suffix=${i#$rc_base/rc$runlevel.d/S[0-9][0-9]}
stop=$rc_base/rc$runlevel.d/K[0-9][0-9]$suffix
prev_start=$rc_base/rc$previous.d/S[0-9][0-9]$suffix
if [ "${previous}" != "N" ]; then
suffix=${i#/etc/rc.d/rc$runlevel.d/S[0-9][0-9]}
stop=/etc/rc.d/rc$runlevel.d/K[0-9][0-9]$suffix
prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix
[ -f ${prev_start} ] && [ ! -f ${stop} ] && continue
fi
[ -f ${prev_start} ] && [ ! -f ${stop} ] && continue
fi
check_script_status
check_script_status
case ${runlevel} in
0|6)
${i} stop
;;
*)
${i} start
;;
esac
error_value=${?}
case ${runlevel} in
0|6)
${i} stop
;;
*)
${i} start
;;
esac
error_value=${?}
if [ "${error_value}" != "0" ]; then
print_error_msg
fi
if [ "${error_value}" != "0" ]; then
print_error_msg
fi
done
# End $rc_base/init.d/rc
# End rc

View File

@ -1,31 +1,42 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/reboot
# Begin reboot
#
# Description : Reboot Scripts
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: reboot
# Required-Start:
# 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/boot/functions
case "${1}" in
stop)
boot_mesg "Restarting system..."
reboot -d -f -i
;;
stop)
boot_mesg "Restarting system..."
reboot -d -f -i
;;
*)
echo "Usage: ${0} {stop}"
exit 1
;;
*)
echo "Usage: ${0} {stop}"
exit 1
;;
esac
# End $rc_base/init.d/reboot
# End reboot

View File

@ -1,52 +1,63 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/sendsignals
# Begin sendsignals
#
# Description : Sendsignals Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### 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/boot//functions
case "${1}" in
stop)
boot_mesg "Sending all processes the TERM signal..."
killall5 -15
error_value=${?}
stop)
boot_mesg "Sending all processes the TERM signal..."
killall5 -15
error_value=${?}
sleep ${KILLDELAY}
sleep ${KILLDELAY}
if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
echo_ok
else
echo_failure
fi
if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
echo_ok
else
echo_failure
fi
boot_mesg "Sending all processes the KILL signal..."
killall5 -9
error_value=${?}
boot_mesg "Sending all processes the KILL signal..."
killall5 -9
error_value=${?}
sleep ${KILLDELAY}
sleep ${KILLDELAY}
if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
echo_ok
else
echo_failure
fi
;;
if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
echo_ok
else
echo_failure
fi
;;
*)
echo "Usage: ${0} {stop}"
exit 1
;;
*)
echo "Usage: ${0} {stop}"
exit 1
;;
esac
# End $rc_base/init.d/sendsignals
# End sendsignals

View File

@ -1,47 +1,61 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/setclock
# Begin setclock
#
# Description : Setting Linux Clock
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/clock
### BEGIN INIT INFO
# Provides: $time
# 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 BLFS
### END INIT INFO
. /lib/boot/functions
[ -r /etc/sysconfig/clock ] && . /etc/sysconfig/clock
case "${UTC}" in
yes|true|1)
CLOCKPARAMS="${CLOCKPARAMS} --utc"
;;
yes|true|1)
CLOCKPARAMS="${CLOCKPARAMS} --utc"
;;
no|false|0)
CLOCKPARAMS="${CLOCKPARAMS} --localtime"
;;
no|false|0)
CLOCKPARAMS="${CLOCKPARAMS} --localtime"
;;
esac
case ${1} in
start)
boot_mesg "Setting system clock..."
hwclock --hctosys ${CLOCKPARAMS} >/dev/null
evaluate_retval
;;
start)
boot_mesg "Setting system clock..."
hwclock --hctosys ${CLOCKPARAMS} >/dev/null
evaluate_retval
;;
stop)
boot_mesg "Setting hardware clock..."
hwclock --systohc ${CLOCKPARAMS} >/dev/null
evaluate_retval
;;
stop)
boot_mesg "Setting hardware clock..."
hwclock --systohc ${CLOCKPARAMS} >/dev/null
evaluate_retval
;;
*)
echo "Usage: ${0} {start|stop}"
;;
*)
echo "Usage: ${0} {start|stop}"
;;
esac

View File

@ -1,50 +1,62 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/swap
# Begin swap
#
# Description : Swap Control Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: swap
# Required-Start: udev
# Should-Start: modules
# Required-Stop: localnet
# Should-Stop:
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Mounts and unmounts swap partitions.
# Description: Mounts and unmounts swap partitions defined in
# /etc/fstab.
# X-LFS-Provided-By: LFS
### END INIT INFO
. /lib/boot/functions
case "${1}" in
start)
boot_mesg "Activating all swap files/partitions..."
swapon -a
evaluate_retval
;;
start)
boot_mesg "Activating all swap files/partitions..."
swapon -a
evaluate_retval
;;
stop)
boot_mesg "Deactivating all swap files/partitions..."
swapoff -a
evaluate_retval
;;
stop)
boot_mesg "Deactivating all swap files/partitions..."
swapoff -a
evaluate_retval
;;
restart)
${0} stop
sleep 1
${0} start
;;
restart)
${0} stop
sleep 1
${0} start
;;
status)
boot_mesg "Retrieving swap status." ${INFO}
echo_ok
echo
swapon -s
;;
status)
boot_mesg "Retrieving swap status." ${INFO}
echo_ok
echo
swapon -s
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 1
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 1
;;
esac
# End $rc_base/init.d/swap
# End swap

View File

@ -1,39 +1,51 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/sysctl
# Begin sysctl
#
# Description : File uses /etc/sysctl.conf to set kernel runtime
# parameters
#
# Authors : Nathan Coulson (nathan@linuxfromscratch.org)
# Matthew Burgress (matthew@linuxfromscratch.org)
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: sysctl
# Required-Start: mountkernfs
# Should-Start:
# 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/boot/functions
case "${1}" in
start)
if [ -f "/etc/sysctl.conf" ]; then
boot_mesg "Setting kernel runtime parameters..."
sysctl -q -p
evaluate_retval
fi
;;
start)
if [ -f "/etc/sysctl.conf" ]; then
boot_mesg "Setting kernel runtime parameters..."
sysctl -q -p
evaluate_retval
fi
;;
status)
sysctl -a
;;
status)
sysctl -a
;;
*)
echo "Usage: ${0} {start|status}"
exit 1
;;
*)
echo "Usage: ${0} {start|status}"
exit 1
;;
esac
# End $rc_base/init.d/sysctl
# End sysctl

View File

@ -1,57 +1,70 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/sysklogd
# Begin sysklogd
#
# Description : Sysklogd loader
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: $syslog
# Required-Start: localnet
# Should-Start:
# Required-Stop: $local_fs sendsignals
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts kernel and system log daemons.
# Description: Starts kernel and system log daemons.
# /etc/fstab.
# X-LFS-Provided-By: LFS
### END INIT INFO
. /lib/boot/functions
case "${1}" in
start)
boot_mesg "Starting system log daemon..."
loadproc syslogd -m 0
start)
boot_mesg "Starting system log daemon..."
PARMS=${SYSKLOGD_PARMS=-'-m 0'}
loadproc syslogd $PARMS
boot_mesg "Starting kernel log daemon..."
loadproc klogd
;;
boot_mesg "Starting kernel log daemon..."
loadproc klogd
;;
stop)
boot_mesg "Stopping kernel log daemon..."
killproc klogd
stop)
boot_mesg "Stopping kernel log daemon..."
killproc klogd
boot_mesg "Stopping system log daemon..."
killproc syslogd
;;
boot_mesg "Stopping system log daemon..."
killproc syslogd
;;
reload)
boot_mesg "Reloading system log daemon config file..."
reloadproc syslogd
;;
reload)
boot_mesg "Reloading system log daemon config file..."
reloadproc syslogd
;;
restart)
${0} stop
sleep 1
${0} start
;;
restart)
${0} stop
sleep 1
${0} start
;;
status)
statusproc syslogd
statusproc klogd
;;
status)
statusproc syslogd
statusproc klogd
;;
*)
echo "Usage: ${0} {start|stop|reload|restart|status}"
exit 1
;;
*)
echo "Usage: ${0} {start|stop|reload|restart|status}"
exit 1
;;
esac
# End $rc_base/init.d/sysklogd
# End sysklogd

View File

@ -1,50 +1,62 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/
# Begin scriptname
#
# Description :
#
# Authors :
#
# Version : 00.00
# Version : LFS x.x
#
# Notes :
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### 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/boot/functions
case "${1}" in
start)
boot_mesg "Starting..."
loadproc
;;
start)
boot_mesg "Starting..."
loadproc
;;
stop)
boot_mesg "Stopping..."
killproc
;;
stop)
boot_mesg "Stopping..."
killproc
;;
reload)
boot_mesg "Reloading..."
reloadproc
;;
reload)
boot_mesg "Reloading..."
reloadproc
;;
restart)
${0} stop
sleep 1
${0} start
;;
restart)
${0} stop
sleep 1
${0} start
;;
status)
statusproc
;;
status)
statusproc
;;
*)
echo "Usage: ${0} {start|stop|reload|restart|status}"
exit 1
;;
*)
echo "Usage: ${0} {start|stop|reload|restart|status}"
exit 1
;;
esac
# End $rc_base/init.d/
# End scriptname

View File

@ -1,83 +1,94 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/udev
# Begin udev
#
# Description : Udev cold-plugging script
#
# Authors : Zack Winkles, Alexander E. Patrakov
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.02
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: udev
# Required-Start:
# 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/boot/functions
case "${1}" in
start)
boot_mesg "Populating /dev with device nodes..."
if ! grep -q '[[:space:]]sysfs' /proc/mounts; then
echo_failure
boot_mesg -n "FAILURE:\n\nUnable to create" ${FAILURE}
boot_mesg -n " devices without a SysFS filesystem"
boot_mesg -n "\n\nAfter you press Enter, this system"
boot_mesg -n " will be halted and powered off."
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
read ENTER
/etc/rc.d/init.d/halt stop
fi
start)
boot_mesg "Populating /dev with device nodes..."
if ! grep -q '[[:space:]]sysfs' /proc/mounts; then
echo_failure
boot_mesg -n "FAILURE:\n\nUnable to create" ${FAILURE}
boot_mesg -n " devices without a SysFS filesystem"
boot_mesg -n "\n\nAfter you press Enter, this system"
boot_mesg -n " will be halted and powered off."
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
wait_for_user
/etc/rc.d/init.d/halt stop
fi
# Mount a temporary file system over /dev, so that any devices
# made or removed during this boot don't affect the next one.
# The reason we don't write to mtab is because we don't ever
# want /dev to be unavailable (such as by `umount -a').
if ! mountpoint /dev > /dev/null; then
mount -n -t tmpfs tmpfs /dev -o mode=755
fi
if [ ${?} != 0 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nCannot mount a tmpfs" ${FAILURE}
boot_mesg -n " onto /dev, this system will be halted."
boot_mesg -n "\n\nAfter you press Enter, this system"
boot_mesg -n " will be halted and powered off."
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
read ENTER
/etc/rc.d/init.d/halt stop
fi
# Mount a temporary file system over /dev, so that any devices
# made or removed during this boot don't affect the next one.
# The reason we don't write to mtab is because we don't ever
# want /dev to be unavailable (such as by `umount -a').
if ! mountpoint /dev > /dev/null; then
mount -n -t tmpfs tmpfs /dev -o mode=755
fi
if [ ${?} != 0 ]; then
echo_failure
boot_mesg -n "FAILURE:\n\nCannot mount a tmpfs" ${FAILURE}
boot_mesg -n " onto /dev, this system will be halted."
boot_mesg -n "\n\nAfter you press Enter, this system"
boot_mesg -n " will be halted and powered off."
boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
boot_mesg "" ${NORMAL}
wait_for_user
/etc/rc.d/init.d/halt stop
fi
ln -s /run/shm /dev/shm
ln -s /run/shm /dev/shm
# Udev handles uevents itself, so we don't need to have
# the kernel call out to any binary in response to them
echo > /proc/sys/kernel/hotplug
# Udev handles uevents itself, so we don't need to have
# the kernel call out to any binary in response to them
echo > /proc/sys/kernel/hotplug
# Copy the only static device node that Udev >= 155 doesn't
# handle to /dev
cp -a /lib/udev/devices/null /dev
# Copy the only static device node that Udev >= 155 doesn't
# handle to /dev
cp -a /lib/udev/devices/null /dev
# Start the udev daemon to continually watch for, and act on,
# uevents
/sbin/udevd --daemon
# Start the udev daemon to continually watch for, and act on,
# uevents
/sbin/udevd --daemon
# Now traverse /sys in order to "coldplug" devices that have
# already been discovered
/sbin/udevadm trigger --action=add --type=subsystems
/sbin/udevadm trigger --action=add --type=devices
# Now traverse /sys in order to "coldplug" devices that have
# already been discovered
/sbin/udevadm trigger --action=add --type=subsystems
/sbin/udevadm trigger --action=add --type=devices
# Now wait for udevd to process the uevents we triggered
/sbin/udevadm settle
evaluate_retval
# Now wait for udevd to process the uevents we triggered
/sbin/udevadm settle
evaluate_retval
;;
;;
*)
echo "Usage ${0} {start}"
exit 1
;;
*)
echo "Usage ${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/udev
# End udev

View File

@ -1,45 +1,60 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/udev_retry
# Begin udev_retry
#
# Description : Udev cold-plugging script (retry)
#
# Authors : Alexander E. Patrakov
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.02
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
### BEGIN INIT INFO
# Provides: udev_retry
# Required-Start: udev
# Should-Start: $local_fs
# Required-Stop:
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Replays failed uevents and creates additonal 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/boot/functions
case "${1}" in
start)
boot_mesg "Retrying failed uevents, if any..."
start)
boot_mesg "Retrying failed uevents, if any..."
# From Debian: "copy the rules generated before / was mounted
# read-write":
for file in /dev/.udev/tmp-rules--*; do
dest=${file##*tmp-rules--}
[ "$dest" = '*' ] && break
cat $file >> /etc/udev/rules.d/$dest
rm -f $file
done
RUNDIR=$(/sbin/udevadm info --run)
# 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 failed uevents in hope they will succeed now
/sbin/udevadm trigger --type=failed --action=add
# Now wait for udevd to process the uevents we triggered
/sbin/udevadm settle
evaluate_retval
;;
# Re-trigger the failed uevents in hope they will succeed now
/sbin/udevadm trigger --type=failed --action=add
*)
echo "Usage ${0} {start}"
exit 1
;;
# Now wait for udevd to process the uevents we triggered
/sbin/udevadm settle
evaluate_retval
;;
*)
echo "Usage ${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/udev_retry
# End udev_retry

View File

@ -1,95 +1,66 @@
#!/bin/sh
########################################################################
# Begin $network_devices/ifdown
# 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 : 00.01
# Version : LFS 7.0
#
# Notes : the IFCONFIG variable is passed to the scripts found
# in the services directory, to indicate what file the
# in the /lib/boot directory, to indicate what file the
# service should source to get environmental variables.
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
file=/etc/sysconfig/ifconfig.${1}
# Collect a list of configuration files for our interface
if [ -n "${2}" ]; then
for file in ${@#$1}; do # All parameters except $1
FILES="${FILES} ${network_devices}/ifconfig.${1}/${file}"
done
elif [ -d "${network_devices}/ifconfig.${1}" ]; then
FILES=`echo ${network_devices}/ifconfig.${1}/*`
# Skip backup files
[ "${file}" = "${file%""~""}" ] || exit 0
. /lib/boot/functions
if [ ! -r "${file}" ]; then
boot_mesg "${file} is missing or cannot be accessed." ${WARNING}
echo_warning
exit 1
fi
. ${file}
if [ "$IFACE" = "" ]; then
boot_mesg "${file} does not define an interface [IFACE]." ${FAILURE}
echo_failure
exit 1
fi
# This will run the service script, if SERVICE is set
if [ -n "${SERVICE}" -a -x "/lib/boot/${SERVICE}" ]; then
if ip link show ${IFACE} > /dev/null 2>&1; then
IFCONFIG=${file} /lib/boot/${SERVICE} ${IFACE} down
else
boot_mesg "Interface ${1} doesn't exist." ${WARNING}
echo_warning
fi
else
FILES="${network_devices}/ifconfig.${1}"
boot_mesg "Unable to process ${file}. Either" ${FAILURE}
boot_mesg "the SERVICE variable was not set"
boot_mesg "or the specified service cannot be executed."
echo_failure
exit 1
fi
# Reverse the order configuration files are processed in
for file in ${FILES}; do
FILES2="${file} ${FILES2}"
done
FILES=${FILES2}
link_status=`ip link show ${IFACE} 2>/dev/null`
# Process each configuration file
for file in ${FILES}; do
# skip backup files
if [ "${file}" != "${file%""~""}" ]; then
continue
fi
if [ ! -f "${file}" ]; then
boot_mesg "${file} is not a network configuration file or directory." ${WARNING}
echo_warning
continue
fi
(
. ${file}
# Will not process this service if started by boot, and ONBOOT
# is not set to yes
if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then
continue
fi
# Will not process this service if started by hotplug, and
# ONHOTPLUG is not set to yes
if [ "${IN_HOTPLUG}" = "1" -a "${ONHOTPLUG}" != "yes" ]; then
continue
fi
# This will run the service script, if SERVICE is set
if [ -n "${SERVICE}" -a -x "${network_devices}/services/${SERVICE}" ]; then
if ip link show ${1} > /dev/null 2>&1
then
IFCONFIG=${file} ${network_devices}/services/${SERVICE} ${1} down
else
boot_mesg "Interface ${1} doesn't exist." ${WARNING}
echo_warning
fi
else
boot_mesg -n "Unable to process ${file}. Either" ${FAILURE}
boot_mesg -n " the SERVICE variable was not set,"
boot_mesg " or the specified service cannot be executed."
echo_failure
continue
fi
)
done
if [ -z "${2}" ]; then
link_status=`ip link show $1 2>/dev/null`
if [ -n "${link_status}" ]; then
if echo "${link_status}" | grep -q UP; then
boot_mesg "Bringing down the ${1} interface..."
ip link set ${1} down
evaluate_retval
fi
fi
if [ -n "${link_status}" ]; then
if echo "${link_status}" | grep -q UP; then
boot_mesg "Bringing down the ${IFACE} interface..."
ip link set ${IFACE} down
evaluate_retval
fi
fi
# End $network_devices/ifdown
# End /sbin/ifdown

View File

@ -1,90 +1,82 @@
#!/bin/sh
########################################################################
# Begin $network_devices/ifup
# Begin /sbin/ifup
#
# Description : Interface Up
#
# Authors : Nathan Coulson - nathan@linuxfromscratch.org
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
# Version : LFS 7.0
#
# Notes : the IFCONFIG variable is passed to the scripts found
# in the services directory, to indicate what file the
# Notes : The IFCONFIG variable is passed to the SERVICE script
# in the /lib/boot directory, to indicate what file the
# service should source to get environmental variables.
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
file=/etc/sysconfig/ifconfig.${1}
# Collect a list of configuration files for our interface
if [ -n "${2}" ]; then
for file in ${@#$1} # All parameters except $1
do
FILES="${FILES} ${network_devices}/ifconfig.${1}/${file}"
done
elif [ -d "${network_devices}/ifconfig.${1}" ]; then
FILES=`echo ${network_devices}/ifconfig.${1}/*`
else
FILES="${network_devices}/ifconfig.${1}"
fi
# Skip backup files
[ "${file}" = "${file%""~""}" ] || exit 0
. /lib/boot/functions
boot_mesg "Bringing up the ${1} interface..."
boot_mesg_flush
# Process each configruation file
for file in ${FILES}; do
# skip backup files
if [ "${file}" != "${file%""~""}" ]; then
continue
fi
if [ ! -r "${file}" ]; then
boot_mesg "${file} is missing or cannot be accessed." ${WARNING}
echo_warning
exit 1
fi
if [ ! -f "${file}" ]; then
boot_mesg "${file} is not a network configuration file or directory." ${WARNING}
echo_warning
continue
fi
. $file
(
. ${file}
if [ "$IFACE" = "" ]; then
boot_mesg "${file} does not define an interface [IFACE]." ${FAILURE}
echo_failure
exit 1
fi
# Will not process this service if started by boot, and ONBOOT
# is not set to yes
if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then
continue
fi
# Will not process this service if started by hotplug, and
# ONHOTPLUG is not set to yes
if [ "${IN_HOTPLUG}" = "1" -a "${ONHOTPLUG}" != "yes" \
-a "${HOSTNAME}" != "(none)" ]; then continue
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
echo_skipped
exit 0
fi
if [ -n "${SERVICE}" -a -x "${network_devices}/services/${SERVICE}" ]; then
if [ -z "${CHECK_LINK}" -o "${CHECK_LINK}" = "y" \
-o "${CHECK_LINK}" = "yes" -o "${CHECK_LINK}" = "1" ]; then
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
boot_mesg "Interface ${1} doesn't exist." ${WARNING}
echo_warning
continue
fi
fi
IFCONFIG=${file} ${network_devices}/services/${SERVICE} ${1} up
else
boot_mesg "Unable to process ${file}. Either" ${FAILURE}
boot_mesg " the SERVICE variable was not set,"
boot_mesg " or the specified service cannot be executed."
echo_failure
continue
fi
)
done
if [ -n "${SERVICE}" -a -x "/lib/boot/${SERVICE}" ]; then
if [ -z "${CHECK_LINK}" -o \
"${CHECK_LINK}" = "y" -o \
"${CHECK_LINK}" = "yes" -o \
"${CHECK_LINK}" = "1" ]; then
# End $network_devices/ifup
# Bring up the interface
if ip link show ${IFACE} > /dev/null 2>&1; then
link_status=`ip link show ${IFACE}`
if [ -n "${link_status}" ]; then
if ! echo "${link_status}" | grep -q UP; then
ip link set ${IFACE} up
fi
fi
else
boot_mesg "Interface ${IFACE} doesn't exist." ${WARNING}
echo_warning
fi
fi
IFCONFIG=${file} /lib/boot/${SERVICE} ${IFACE} up
else
boot_mesg "Unable to process ${file}. Either" ${FAILURE}
boot_mesg "the SERVICE variable was not set"
boot_mesg "or the specified service cannot be executed."
echo_failure
exit 1
fi
# End /sbin/ifup

View File

@ -1,82 +1,83 @@
#!/bin/sh
########################################################################
# Begin $network_devices/services/ipv4-static
# Begin /lib/boot/ipv4-static
#
# Description : IPV4 Static Boot Script
#
# Authors : Nathan Coulson - nathan@linuxfromscratch.org
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
. /lib/boot/functions
. ${IFCONFIG}
if [ -z "${IP}" ]; then
boot_mesg "IP variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
boot_mesg "IP variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
if [ -z "${PREFIX}" -a -z "${PEER}" ]; then
boot_mesg -n "PREFIX variable missing from ${IFCONFIG}," ${WARNING}
boot_mesg " assuming 24."
echo_warning
PREFIX=24
args="${args} ${IP}/${PREFIX}"
boot_mesg -n "PREFIX variable missing from ${IFCONFIG}," ${WARNING}
boot_mesg " assuming 24."
echo_warning
PREFIX=24
args="${args} ${IP}/${PREFIX}"
elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then
boot_mesg "PREFIX and PEER both specified in ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
boot_mesg "PREFIX and PEER both specified in ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
elif [ -n "${PREFIX}" ]; then
args="${args} ${IP}/${PREFIX}"
args="${args} ${IP}/${PREFIX}"
elif [ -n "${PEER}" ]; then
args="${args} ${IP} peer ${PEER}"
args="${args} ${IP} peer ${PEER}"
fi
if [ -n "${BROADCAST}" ]; then
args="${args} broadcast ${BROADCAST}"
args="${args} broadcast ${BROADCAST}"
fi
case "${2}" in
up)
boot_mesg "Adding IPv4 address ${IP} to the ${1} interface..."
ip addr add ${args} dev ${1}
evaluate_retval
if [ -n "${GATEWAY}" ]; then
if ip route | grep -q default; then
boot_mesg "Gateway already setup; skipping." ${WARNING}
echo_warning
else
boot_mesg "Setting up default gateway..."
ip route add default via ${GATEWAY} dev ${1}
evaluate_retval
fi
fi
;;
down)
if [ -n "${GATEWAY}" ]; then
boot_mesg "Removing default gateway..."
ip route del default
evaluate_retval
fi
boot_mesg "Removing IPv4 address ${IP} from the ${1} interface..."
ip addr del ${args} dev ${1}
evaluate_retval
;;
*)
echo "Usage: ${0} [interface] {up|down}"
exit 1
;;
up)
boot_mesg "Adding IPv4 address ${IP} to the ${1} interface..."
ip addr add ${args} dev ${1}
evaluate_retval
if [ -n "${GATEWAY}" ]; then
if ip route | grep -q default; then
boot_mesg "Gateway already setup; skipping." ${WARNING}
echo_warning
else
boot_mesg "Setting up default gateway..."
ip route add default via ${GATEWAY} dev ${1}
evaluate_retval
fi
fi
;;
down)
if [ -n "${GATEWAY}" ]; then
boot_mesg "Removing default gateway..."
ip route del default
evaluate_retval
fi
boot_mesg "Removing IPv4 address ${IP} from the ${1} interface..."
ip addr del ${args} dev ${1}
evaluate_retval
;;
*)
echo "Usage: ${0} [interface] {up|down}"
exit 1
;;
esac
# End $network_devices/services/ipv4-static
# End /lib/boot/ipv4-static

View File

@ -1,74 +1,72 @@
#!/bin/sh
########################################################################
# Begin $network_devices/services/ipv4-static-route
# Begin /lib/boot/ipv4-static-route
#
# Description : IPV4 Static Route Script
#
# Authors : Kevin P. Fleming - kpfleming@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
# Version : LFS 7.0
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
. /lib/boot/functions
. ${IFCONFIG}
case "${TYPE}" in
("" | "network")
need_ip=1
need_gateway=1
;;
("" | "network")
need_ip=1
need_gateway=1
;;
("default")
need_gateway=1
args="${args} default"
desc="default"
;;
("default")
need_gateway=1
args="${args} default"
desc="default"
;;
("host")
need_ip=1
;;
("host")
need_ip=1
;;
("unreachable")
need_ip=1
args="${args} unreachable"
desc="unreachable "
;;
("unreachable")
need_ip=1
args="${args} unreachable"
desc="unreachable "
;;
(*)
boot_mesg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
;;
(*)
boot_mesg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
;;
esac
if [ -n "${need_ip}" ]; then
if [ -z "${IP}" ]; then
boot_mesg "IP variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
if [ -z "${IP}" ]; then
boot_mesg "IP variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
if [ -z "${PREFIX}" ]; then
boot_mesg "PREFIX variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
args="${args} ${IP}/${PREFIX}"
desc="${desc}${IP}/${PREFIX}"
if [ -z "${PREFIX}" ]; then
boot_mesg "PREFIX variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
args="${args} ${IP}/${PREFIX}"
desc="${desc}${IP}/${PREFIX}"
fi
if [ -n "${need_gateway}" ]; then
if [ -z "${GATEWAY}" ]; then
boot_mesg "GATEWAY variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
args="${args} via ${GATEWAY}"
if [ -z "${GATEWAY}" ]; then
boot_mesg "GATEWAY variable missing from ${IFCONFIG}, cannot continue." ${FAILURE}
echo_failure
exit 1
fi
args="${args} via ${GATEWAY}"
fi
if [ -n "${SOURCE}" ]; then
@ -76,22 +74,22 @@ if [ -n "${SOURCE}" ]; then
fi
case "${2}" in
up)
boot_mesg "Adding '${desc}' route to the ${1} interface..."
ip route add ${args} dev ${1}
evaluate_retval
;;
down)
boot_mesg "Removing '${desc}' route from the ${1} interface..."
ip route del ${args} dev ${1}
evaluate_retval
;;
*)
echo "Usage: ${0} [interface] {up|down}"
exit 1
;;
up)
boot_mesg "Adding '${desc}' route to the ${1} interface..."
ip route add ${args} dev ${1}
evaluate_retval
;;
down)
boot_mesg "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 $network_devices/services/ipv4-static-route
# End /bib/boot/ipv4-static-route

View File

@ -36,6 +36,27 @@
</listitem>
-->
<listitem>
<para>2011-08-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Rewrite bootscripts and Chaper 7.</para>
<itemizedlist>
<listitem><para>Make scripts compatible with initd format (see BLFS).</para></listitem>
<listitem><para>Move functions and services to /lib/boot.</para></listitem>
<listitem><para>Log boot messages to /run/var/bootlog.</para></listitem>
<listitem><para>Move ifup/ifdown to /sbin.</para></listitem>
<listitem><para>Move network device configuration files to
/etc/sysconfig/ifconfig.*.</para></listitem>
<listitem><para>Add IFACE variable to network configuration files.
</para></listitem>
<listitem><para>Read optional configuration file /etc/sysconfig/init_params
in functions.</para></listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2011-07-17</para>
<itemizedlist>

View File

@ -74,52 +74,6 @@
</sect2>
<sect2 id="conf-sysvinit" role="configuration">
<title>Configuring Sysvinit</title>
<indexterm zone="conf-sysvinit">
<primary sortas="a-Sysvinit">Sysvinit</primary>
<secondary>configuring</secondary>
</indexterm>
<indexterm zone="conf-sysvinit">
<primary sortas="e-/etc/inittab">/etc/inittab</primary>
</indexterm>
<para>Create a new file <filename>/etc/inittab</filename> by running the
following:</para>
<screen><userinput>cat &gt; /etc/inittab &lt;&lt; "EOF"
<literal># Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab</literal>
EOF</userinput></screen>
</sect2>
<sect2 id="contents-sysvinit" role="content">
<title>Contents of Sysvinit</title>

View File

@ -49,7 +49,6 @@
<sect2 id="contents-bootscripts" role="content">
<title>Contents of LFS-Bootscripts</title>
<segmentedlist>
<segtitle>Installed scripts</segtitle>
<segtitle>Installed directories</segtitle>
@ -59,7 +58,7 @@
ifup, localnet, modules, mountfs, mountkernfs, network, rc, reboot,
sendsignals, setclock, static, swap, sysctl, sysklogd, template,
udev, and udev_retry</seg>
<seg>/etc/rc.d, /etc/sysconfig</seg>
<seg>/etc/rc.d, /etc/sysconfig, /lib/boot</seg>
</seglistitem>
</segmentedlist>
@ -140,7 +139,7 @@
<varlistentry id="ifdown-bootscripts">
<term><command>ifdown</command></term>
<listitem>
<para>Assists the network script with stopping network devices</para>
<para>Stops a network device</para>
<indexterm zone="ch-scripts-bootscripts ifdown-bootscripts">
<primary sortas="d-ifdown">ifdown</primary>
</indexterm>
@ -150,7 +149,7 @@
<varlistentry id="ifup-bootscripts">
<term><command>ifup</command></term>
<listitem>
<para>Assists the network script with starting network devices</para>
<para>Initializes a network device</para>
<indexterm zone="ch-scripts-bootscripts ifup-bootscripts">
<primary sortas="d-ifup">ifup</primary>
</indexterm>
@ -325,7 +324,7 @@
<term><command>udev_retry</command></term>
<listitem>
<para>Retries failed udev uevents, and copies generated rules
files from <filename class="directory">/dev/.udev</filename> to
files from to
<filename class="directory">/etc/udev/rules.d</filename> if required</para>
<indexterm zone="ch-scripts-bootscripts udev-retry-bootscripts">
<primary sortas="d-udev-retry">udev_retry</primary>

View File

@ -12,17 +12,17 @@
<title>Setting Up System Bootscripts</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="network.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hosts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="udev.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="symlinks.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bootscripts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="usage.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hostname.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="setclock.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="console.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sysklogd.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="inputrc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="profile.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="udev.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="symlinks.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hostname.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hosts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="network.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="inputrc.xml"/>
</chapter>

View File

@ -8,10 +8,10 @@
<sect1 id="ch-scripts-hostname">
<?dbhtml filename="hostname.html"?>
<title>Configuring the localnet Script</title>
<title>Configuring the system hostname</title>
<indexterm zone="ch-scripts-hostname">
<primary sortas="d-localnet">localnet</primary>
<primary sortas="d-hostname">hostname</primary>
<secondary>configuring</secondary>
</indexterm>
@ -26,7 +26,6 @@
<para><replaceable>&lt;lfs&gt;</replaceable> needs to be replaced with the name given
to the computer. Do not enter the Fully Qualified Domain Name (FQDN) here. That
information will be put in the <filename>/etc/hosts</filename> file in the next
section.</para>
information is put in the <filename>/etc/hosts</filename> file.</para>
</sect1>

View File

@ -61,7 +61,7 @@ EOF</userinput></screen>
<para>The <replaceable>&lt;192.168.1.1&gt;</replaceable> and
<replaceable>&lt;HOSTNAME.example.org&gt;</replaceable>
values need to be changed for specific users or requirements (if
values need to be changed for specific uses or requirements (if
assigned an IP address by a network/system administrator and the
machine will be connected to an existing network). The optional alias
name(s) can be omitted.</para>

View File

@ -10,18 +10,81 @@
<title>Introduction</title>
<para>This chapter details how to install and configure the LFS-Bootscripts
package. Most of these scripts will work without modification, but a few require
additional configuration files because they deal with hardware-dependent
information.</para>
<para>This chapter discusses configuration files and boot scripts.
First, the general configuration files needed to set up networking are
presented.</para>
<itemizedlist>
<listitem>
<para><xref linkend="ch-scripts-network" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-hosts" role="."/></para>
</listitem>
</itemizedlist>
<para>Second, issues that affect the proper setup of devices diescussed.</para>
<itemizedlist>
<listitem>
<para><xref linkend="ch-scripts-udev" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-symlinks" role="."/></para>
</listitem>
</itemizedlist>
<para>The next sections detail how to install and configure the LFS system
scripts needed during the boot process. Most of these scripts will work
without modification, but a few require additional configuration files
because they deal with hardware-dependent information.</para>
<para>System-V style init scripts are employed in this book because they are
widely used. For additional options, a hint detailing the BSD style init setup
is available at <ulink url="&hints-root;bsd-init.txt"/>.
Searching the LFS mailing lists for <quote>depinit</quote> will also offer
additional choices.</para>
widely used and relatively simple. For additional options, a hint detailing
the BSD style init setup is available at <ulink
url="&hints-root;bsd-init.txt"/>. Searching the LFS mailing lists for
<quote>depinit</quote>, <quote>upstart</quote>, or <quote>systemd</quote>
will also offer additional information.</para>
<para>If using an alternative style of init scripts, skip these sections.</para>
<para>A listing of the boot scripts are found in <xref linkend="scripts"
role="."/>.</para>
<itemizedlist>
<listitem>
<para><xref linkend="ch-scripts-bootscripts" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-usage" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-hostname" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-setclock" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-console" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-sysklogd" role="."/></para>
</listitem>
</itemizedlist>
<para>Finally, there is a brief introduction to the scripts and configuration
files used when the user logs into the system.</para>
<itemizedlist>
<listitem>
<para><xref linkend="ch-scripts-profile" role="."/></para>
</listitem>
<listitem>
<para><xref linkend="ch-scripts-inputrc" role="."/></para>
</listitem>
</itemizedlist>
<para>If using an alternative style of init scripts, skip this chapter
and move on to <xref linkend="chapter-bootable"/>.</para>
</sect1>

View File

@ -8,7 +8,7 @@
<sect1 id="ch-scripts-network">
<?dbhtml filename="network.html"?>
<title>Configuring the network Script</title>
<title>General Network Configuration</title>
<indexterm zone="ch-scripts-network">
<primary sortas="d-network">network</primary>
@ -26,6 +26,11 @@
<sect2>
<title>Creating stable names for network interfaces</title>
<para>If there is only one network interface in the system to be
configured, this section is optional, although it will never be wrong to do
it. In many cases (e.g. a laptop with a wireless and a wired interface),
accomplishing the configuration in this section is necessary.</para>
<para>With Udev and modular network drivers, the network interface numbering
is not persistent across reboots by default, because the drivers are loaded
in parallel and, thus, in random order. For example, on a computer having
@ -112,21 +117,22 @@ done</userinput></screen>
<title>Creating Network Interface Configuration Files</title>
<para>Which interfaces are brought up and down by the network script
depends on the files and directories in the <filename
class="directory">/etc/sysconfig/network-devices</filename> hierarchy.
This directory should contain a sub-directory for each interface to be
configured, such as <filename>ifconfig.xyz</filename>, where
<quote>xyz</quote> is a network interface name. Inside this directory
would be files defining the attributes to this interface, such as its IP
address(es), subnet masks, and so forth.</para>
depends on the files in <filename
class="directory">/etc/sysconfig/</filename>. This directory should
contain a file for each interface to be configured, such as
<filename>ifconfig.xyz</filename>, where <quote>xyz</quote> is is
meaningful to the administrator such as the device name (e.g. eth0).
Inside this file are attributes to this interface, such as its IP
address(es), subnet masks, and so forth. It is necessary that
the stem of the filename be <emphasis>ifconfig</emphasis>.</para>
<para>The following command creates a sample <filename>ipv4</filename>
file for the <emphasis>eth0</emphasis> device:</para>
<para>The following command creates a sample file for the
<emphasis>eth0</emphasis> device with a static IP address:</para>
<screen><userinput>cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat &gt; ifconfig.eth0/ipv4 &lt;&lt; "EOF"
<screen><userinput>cd /etc/sysconfig/
cat &gt; ifconfig.eth0 &lt;&lt; "EOF"
<literal>ONBOOT=yes
IFACE=eth0
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
@ -135,19 +141,25 @@ BROADCAST=192.168.1.255</literal>
EOF</userinput></screen>
<para>The values of these variables must be changed in every file to match
the proper setup. If the <envar>ONBOOT</envar> variable is set to
<quote>yes</quote> the network script will bring up the Network Interface
Card (NIC) during booting of the system. If set to anything but
<quote>yes</quote> the NIC will be ignored by the network script and not
be brought up.</para>
the proper setup.</para>
<para>If the <envar>ONBOOT</envar> variable is set to <quote>yes</quote> the
network script will bring up the Network Interface Card (NIC) during
booting of the system. If set to anything but <quote>yes</quote> the NIC
will be ignored by the network script and not be automatically brought up.
The interface can be manually started or stopped with the
<command>ifup</command> and <command>ifdown</command> commands.</para>
<para>The <envar>IFACE</envar> variable defines the interface name,
for example, eth0. It is required for all network device configuration
files. </para>
<para>The <envar>SERVICE</envar> variable defines the method used for
obtaining the IP address. The LFS-Bootscripts package has a modular IP
assignment format, and creating additional files in the <filename
class="directory">/etc/sysconfig/network-devices/services</filename>
directory allows other IP assignment methods. This is commonly used for
Dynamic Host Configuration Protocol (DHCP), which is addressed in the
BLFS book.</para>
class="directory">/lib/boot/</filename> directory allows other IP
assignment methods. This is commonly used for Dynamic Host Configuration
Protocol (DHCP), which is addressed in the BLFS book.</para>
<para>The <envar>GATEWAY</envar> variable should contain the default
gateway IP address, if one is present. If not, then comment out the
@ -189,6 +201,10 @@ nameserver <replaceable>&lt;IP address of your secondary nameserver&gt;</replace
# End /etc/resolv.conf</literal>
EOF</userinput></screen>
<para>The <varname>domain</varname> statement can be omitted
or replaced with a <varname>search</varname> statement. See the man page for
resolv.conf for more details.</para>
<para>Replace <replaceable>&lt;IP address of the nameserver&gt;</replaceable>
with the IP address of the DNS most appropriate for the setup. There will
often be more than one entry (requirements demand secondary servers for
@ -196,6 +212,8 @@ EOF</userinput></screen>
second <emphasis>nameserver</emphasis> line from the file. The IP address
may also be a router on the local network.</para>
<note><para>The Google Public IPv4 DNS addresses are 8.8.8.8 and 8.8.4.4.</para></note>
</sect2>
</sect1>

View File

@ -62,4 +62,7 @@ EOF</userinput></screen>
at <ulink url="&hints-root;time.txt"/>. It explains issues such as
time zones, UTC, and the <envar>TZ</envar> environment variable.</para>
<note><para>The CLOCKPARAMS and UTC paramaters may be alternatively set
in the <filename>/etc/sysconfig/init_params</filename> file.</para></note>
</sect1>

View File

@ -16,11 +16,16 @@
</indexterm>
<para>The <filename>sysklogd</filename> script invokes the
<command>syslogd</command> program with the <parameter>-m 0</parameter> option.
This option turns off the periodic timestamp mark that
<command>syslogd</command> writes to the log files every 20 minutes by default.
If you want to turn on this periodic timestamp mark, edit the
<filename>sysklogd</filename> script and make the changes accordingly. See
<userinput>man syslogd</userinput> for more information.</para>
<command>syslogd</command> program with the <parameter>-m 0</parameter>
option. This option turns off the periodic timestamp mark that
<command>syslogd</command> writes to the log files every 20 minutes by
default. If you want to turn on this periodic timestamp mark, create or edit
<filename>/etc/sysconfig/init_params</filename> and define the variable
SYSKLOGD_PARMS to the desired value. For instance, to remove all parameters,
set the variable to a null value:</para>
<screen role="nodump">SYSKLOGD_PARMS=</screen>
<para>See <userinput>man syslogd</userinput> for more options.</para>
</sect1>

View File

@ -95,7 +95,7 @@
<sect3>
<title>Udev Bootscript</title>
<para>The <command>S10udev</command> initscript takes care of creating
<para>The <command>/etc/rc.d/init.d/udev</command> initscript takes care of creating
device nodes when Linux is booted. The script unsets the uevent handler
from the default of <command>/sbin/hotplug</command>. This is done
because the kernel no longer needs to call out to an external binary.
@ -200,7 +200,7 @@
class="filesystem">sysfs</systemitem>. In other cases, one should
arrange module loading by other means. With Linux-&linux-version;, Udev is
known to load properly-written drivers for INPUT, IDE, PCI, USB, SCSI,
SERIO and FireWire devices.</para>
SERIO, and FireWire devices.</para>
<para>To determine if the device driver you require has the necessary
support for Udev, run <command>modinfo</command> with the module name as
@ -243,7 +243,7 @@
/sbin/modprobe snd-pcm-oss ; true</literal></screen>
<para>If the module in question is not a wrapper and is useful by itself,
configure the <command>S05modules</command> bootscript to load this
configure the <command>modules</command> bootscript to load this
module on system boot. To do this, add the module name to the
<filename>/etc/sysconfig/modules</filename> file on a separate line.
This works for wrapper modules too, but is suboptimal in that case.</para>
@ -306,7 +306,7 @@
documentation or the documentation provided by the third party driver
vendor). The static device node will be copied to
<filename class="directory">/dev</filename> by the
<command>S10udev</command> bootscript.</para>
<command>udev</command> bootscript.</para>
</sect3>

View File

@ -37,7 +37,80 @@
5: same as 4, it is usually used for GUI login (like X's <command>xdm</command> or KDE's <command>kdm</command>)
6: reboot the computer</literallayout>
<para>The command used to change run-levels is <command>init
<sect2 id="conf-sysvinit" role="configuration">
<title>Configuring Sysvinit</title>
<indexterm zone="conf-sysvinit">
<primary sortas="a-Sysvinit">Sysvinit</primary>
<secondary>configuring</secondary>
</indexterm>
<indexterm zone="conf-sysvinit">
<primary sortas="e-/etc/inittab">/etc/inittab</primary>
</indexterm>
<para>During the kernel initialization, the first program that is run
is either specified on the command line or, by default
<command>init</command>. This program reads the initialization file
<filename>/etc/inittab</filename>. Create this file with:</para>
<screen><userinput>cat &gt; /etc/inittab &lt;&lt; "EOF"
<literal># Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab</literal>
EOF</userinput></screen>
<para>An explanation of this initialization file is in the man page for
<emphasis>inittab</emphasis>. For LFS, the key command that is run is
<command>rc</command>. The intialization file above will instruct
<command>rc</command> to run all the scripts starting with an S in the
<filename class="directory">/etc/rc.d/rcsysinit.d</filename> directory
followed by all the scripts starting with an S in the <filename
class="directory">/etc/rc.d/rc?.d</filename> directory where the question
mark is specified by the initdefault value.</para>
<para>As a convenience, the <command>rc</command> script reads a library of
functions in <filename class="directory">/lib/boot/functions</filename>.
This library also reads an optional configuration file,
<filename>/etc/sysconfig/init_params</filename>. Any of the system
configuration file parameters described in subsequent sections can be
alternatively placed in this file allowing consolidation of all system
parameters in thsi one file.</para>
<para>As a debugging convenience, the functions script also logs all output
to <filename>/run/var/bootlog</filename>. Since the <filename
class="directory">/run</filename> directory is a tmpfs, this file is not
persistent across boots.</para>
</sect2>
<sect2 id="init-levels" >
<title>Changing Run Levels</title>
<para>Changing run-levels is done with <command>init
<replaceable>&lt;runlevel&gt;</replaceable></command>, where
<replaceable>&lt;runlevel&gt;</replaceable> is the target run-level. For example, to
reboot the computer, a user could issue the <command>init 6</command> command,
@ -59,7 +132,7 @@
<para>The real scripts are in <filename
class="directory">/etc/rc.d/init.d</filename>. They do the actual work, and
the symlinks all point to them. Killing links and starting links point to
the symlinks all point to them. K links and S links point to
the same script in <filename class="directory">/etc/rc.d/init.d</filename>.
This is because the scripts can be called with different parameters like
<parameter>start</parameter>, <parameter>stop</parameter>,
@ -126,4 +199,6 @@
it is your own LFS system). The files given here are an example of how
it can be done.</para>
</sect2>
</sect1>

View File

@ -1,7 +1,7 @@
<!ENTITY version "SVN-20110717">
<!ENTITY releasedate "July 17, 2011">
<!ENTITY version "SVN-20110801">
<!ENTITY releasedate "Aug 1, 2011">
<!ENTITY copyrightdate "1999-2011"><!-- jhalfs needs a literal dash, not &ndash; -->
<!ENTITY milestone "6.9">
<!ENTITY milestone "7.0">
<!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->
<!ENTITY lfs-root "http://www.linuxfromscratch.org/">

View File

@ -297,7 +297,7 @@
<!ENTITY less-ch6-du "3.5 MB">
<!ENTITY less-ch6-sbu "less than 0.1 SBU">
<!ENTITY lfs-bootscripts-version "20110531"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-version "20110801"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB"> <!-- Updated in Makefile -->
<!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.bz2">
<!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM"> <!-- Updated in Makefile -->

View File

@ -111,8 +111,8 @@
<varlistentry>
<term><emphasis>LSB Core:</emphasis></term>
<listitem>
<para>Bc, Cpio, Ed, Fcrontab, PAM, Sendmail (or Postfix or Exim)
</para>
<para>Bc, Cpio, Ed, Fcrontab, Initd-tools, PAM,
Sendmail (or Postfix or Exim) </para>
</listitem>
</varlistentry>
@ -164,7 +164,7 @@
<varlistentry>
<term><emphasis>LSB Core:</emphasis></term>
<listitem>
<para>At, Batch, Install_initd, Lsb_release, Remove_initd, Test
<para>At, Batch, Lsb_release
</para>
</listitem>
</varlistentry>