aboutsummaryrefslogtreecommitdiffstats
path: root/rc.d
diff options
context:
space:
mode:
Diffstat (limited to 'rc.d')
-rw-r--r--rc.d/init.d/functions88
-rwxr-xr-xrc.d/init.d/halt3
-rw-r--r--rc.d/init.d/netconsole2
-rwxr-xr-xrc.d/init.d/netfs15
-rwxr-xr-xrc.d/init.d/network14
-rwxr-xr-xrc.d/rc2
-rwxr-xr-xrc.d/rc.local2
-rwxr-xr-xrc.d/rc.sysinit58
8 files changed, 112 insertions, 72 deletions
diff --git a/rc.d/init.d/functions b/rc.d/init.d/functions
index 6f989ba4..43b3abe4 100644
--- a/rc.d/init.d/functions
+++ b/rc.d/init.d/functions
@@ -64,17 +64,23 @@ systemctl_redirect () {
[ -z "${COLUMNS:-}" ] && COLUMNS=80
function load_i18_settings() {
- if [ -f /etc/sysconfig/i18n -a -z "$NOLOCALE" ]; then
- . /etc/sysconfig/i18n
- if [ "$CONSOLETYPE" != "pty" ]; then
- [ "$CONSOLE_NOT_LOCALIZED" = "yes" ] && GP_LANG=C
- [ "$CONSOLE_NOT_LOCALIZED" = "yes" ] && GP_LANGUAGE=C
- fi
- if [ -z "$GP_LANG" ]; then
- [ -n "$LC_CTYPE" ] && GP_LANG=$LC_CTYPE || GP_LANG=$LC_MESSAGES
- fi
- if [ -z "$GP_LANGUAGE" ]; then
- [ -n "$LANGUAGE" ] && GP_LANGUAGE=$LANGUAGE || GP_LANGUAGE=$GP_LANG
+ if [ -f /etc/sysconfig/i18n -o -f /etc/locale.conf ]; then
+ if [ -z "$NOLOCALE" ]; then
+ if [ -f /etc/locale.conf ]; then
+ . /etc/locale.conf
+ else
+ . /etc/sysconfig/i18n
+ fi
+ if [ "$CONSOLETYPE" != "pty" ]; then
+ [ "$CONSOLE_NOT_LOCALIZED" = "yes" ] && GP_LANG=C
+ [ "$CONSOLE_NOT_LOCALIZED" = "yes" ] && GP_LANGUAGE=C
+ fi
+ if [ -z "$GP_LANG" ]; then
+ [ -n "$LC_CTYPE" ] && GP_LANG=$LC_CTYPE || GP_LANG=$LC_MESSAGES
+ fi
+ if [ -z "$GP_LANGUAGE" ]; then
+ [ -n "$LANGUAGE" ] && GP_LANGUAGE=$LANGUAGE || GP_LANGUAGE=$GP_LANG
+ fi
fi
fi
}
@@ -198,17 +204,17 @@ __fgrep() {
return 1
}
-# __umount_loop awk_program fstab_file first_msg retry_msg umount_args
+# __umount_loop awk_program fstab_file first_msg retry_msg retry_umount_args
# awk_program should process fstab_file and return a list of fstab-encoded
# paths; it doesn't have to handle comments in fstab_file.
__umount_loop() {
- local remaining sig=
+ local remaining sig=-15
local retry=3 count
remaining=$(LC_ALL=C awk "/^#/ {next} $1" "$2" | sort -r)
while [ -n "$remaining" -a "$retry" -gt 0 ]; do
if [ "$retry" -eq 3 ]; then
- action "$3" fstab-decode umount $5 $remaining
+ action "$3" fstab-decode umount $remaining
else
action "$4" fstab-decode umount $5 $remaining
fi
@@ -230,7 +236,7 @@ __umount_loop() {
# Similar to __umount loop above, specialized for loopback devices
__umount_loopback_loop() {
- local remaining devremaining sig=
+ local remaining devremaining sig=-15
local retry=3
remaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" && $2 !~ /^\/live\// {print $2}' /proc/mounts)
@@ -387,7 +393,7 @@ daemon() {
# A function to stop a program.
killproc() {
- local RC killlevel= base pid pid_file= delay
+ local RC killlevel= base pid pid_file= delay try
RC=0; delay=3
# Test syntax.
@@ -432,12 +438,18 @@ killproc() {
if checkpid $pid 2>&1; then
# TERM first, then KILL if not dead
kill -TERM $pid >/dev/null 2>&1
- usleep 100000
- if checkpid $pid && sleep 1 &&
- checkpid $pid && sleep $delay &&
- checkpid $pid ; then
- kill -KILL $pid >/dev/null 2>&1
- usleep 100000
+ usleep 50000
+ if checkpid $pid ; then
+ try=0
+ while [ $try -lt $delay ] ; do
+ checkpid $pid || break
+ sleep 1
+ let try+=1
+ done
+ if checkpid $pid ; then
+ kill -KILL $pid >/dev/null 2>&1
+ usleep 50000
+ fi
fi
fi
checkpid $pid
@@ -827,6 +839,15 @@ is_false() {
return 1
}
+# Apply sysctl settings, including files in /etc/sysctl.d
+apply_sysctl() {
+ sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1
+ for file in /etc/sysctl.d/* ; do
+ is_ignored_file "$file" && continue
+ test -f "$file" && sysctl -e -p "$file" >/dev/null 2>&1
+ done
+}
+
key_is_random() {
[ "$1" = "/dev/urandom" -o "$1" = "/dev/hw_random" \
-o "$1" = "/dev/random" ]
@@ -846,7 +867,7 @@ find_crypto_mount_point() {
# Because of a chicken/egg problem, init_crypto must be run twice. /var may be
# encrypted but /var/lib/random-seed is needed to initialize swap.
init_crypto() {
- local have_random dst src key opt mode owner params makeswap skip arg opt
+ local have_random dst src key opt lsl owner params makeswap skip arg opt
local param value rc ret mke2fs mdir prompt mount_point
ret=0
@@ -861,8 +882,8 @@ init_crypto() {
if test -e "$key" ; then
owner=$(ls -l $key | (read a b owner rest; echo $owner))
if ! key_is_random "$key"; then
- mode=$(ls -l "$key" | cut -c 5-10)
- if [ "$mode" != "------" ]; then
+ lsl=$(ls -l "$key")
+ if [ "${lsl:4:6}" != "------" ]; then
gprintf "INSECURE MODE FOR %s\n" $key
fi
fi
@@ -926,6 +947,9 @@ init_crypto() {
skip="yes"
fi
;;
+ noauto)
+ skip="yes"
+ ;;
verify)
params="$params -y"
;;
@@ -968,10 +992,16 @@ init_crypto() {
fi
fi
else
- [ -z "$key" ] && plymouth --hide-splash
- /sbin/cryptsetup $params ${key:+-d $key} create "$dst" "$src" <&1 2>/dev/null && success || failure
- rc=$?
- [ -z "$key" ] && plymouth --show-splash
+ if [ -z "$key" ]; then
+ mount_point="$(find_crypto_mount_point $dst)"
+ [ -n "$mount_point" ] || mount_point=${src##*/}
+ prompt=$(printf $"%s is password protected" "$mount_point")
+ plymouth ask-for-password --prompt "$prompt" --command="/sbin/cryptsetup $params create $dst $src" <&1
+ rc=$?
+ else
+ /sbin/cryptsetup $params ${key:+-d $key} create "$dst" "$src" <&1 2>/dev/null && success || failure
+ rc=$?
+ fi
fi
if [ $rc -ne 0 ]; then
ret=1
diff --git a/rc.d/init.d/halt b/rc.d/init.d/halt
index c137d87d..80deb629 100755
--- a/rc.d/init.d/halt
+++ b/rc.d/init.d/halt
@@ -182,7 +182,8 @@ __umount_loop '$3 ~ /^rpc_pipefs$/ || $3 ~ /^rpc_svc_gss_pipefs$/ {print $2}' \
LANG=C __umount_loop '$2 ~ /^\/$|^\/proc|^\/cgroup|^\/sys\/fs\/cgroup|^\/dev/{next}
$2 ~ /^\/live\//{next}
$3 == "tmpfs" || $3 == "proc" {print $2 ; next}
- /(loopfs|autofs|nfs|cifs|smbfs|ncpfs|sysfs|^none|^\/dev\/ram|^\/dev\/root$)/ {next}
+ $3 ~ /(loopfs|autofs|nfs|cifs|smbfs|ncpfs|sysfs)/ {next}
+ /(^none|^\/dev\/ram|^\/dev\/root$)/ {next}
{print $2}' /proc/mounts \
"Unmounting file systems: " \
"Unmounting file systems (retry): " \
diff --git a/rc.d/init.d/netconsole b/rc.d/init.d/netconsole
index 520a846b..14f96d76 100644
--- a/rc.d/init.d/netconsole
+++ b/rc.d/init.d/netconsole
@@ -63,7 +63,7 @@ print_address_info ()
target=$host
fi
if [ -z "$SYSLOGMACADDR" ]; then
- arp=$(LANG=C /sbin/arping -c 1 -I $DEV $target 2>/dev/null | awk '/ reply from .*[.*]/ { print gensub(".* reply from .* \\[(.*)\\].*","\\1","G") }')
+ arp=$(LANG=C /sbin/arping -c 1 -I $DEV $target 2>/dev/null | awk '/ reply from .*[.*]/ { print gensub(".* reply from .* \\[(.*)\\].*","\\1","G"); exit }')
[ -n "$arp" ] && echo "SYSLOGMACADDR=$arp"
fi
}
diff --git a/rc.d/init.d/netfs b/rc.d/init.d/netfs
index d3f22714..2a37ce76 100755
--- a/rc.d/init.d/netfs
+++ b/rc.d/init.d/netfs
@@ -49,14 +49,14 @@ case "$1" in
[ -n "$NCPFSTAB" ] && action "Mounting NCP filesystems: " mount -a -t ncpfs
[ -n "$NETDEVFSTAB" ] &&
{
- if [ -f /etc/mdadm.conf ]; then
- mdadm -A -s
+ if [ -f /etc/mdadm.conf ] && [ -x /sbin/mdadm ]; then
+ /sbin/mdadm -A -s
fi
if [ -f /etc/multipath.conf ] && [ -x /sbin/multipath ]; then
modprobe dm-multipath >/dev/null 2>&1
- /sbin/multipath -v 0
+ /sbin/multipath -u -v 0
if [ -x /sbin/kpartx ]; then
- /sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -a -p p"
+ /sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -u -a -p p"
fi
fi
if [ -x /sbin/lvm ]; then
@@ -84,8 +84,8 @@ case "$1" in
fi
if [ "$rc" -gt 1 ]; then
- if [ -x /usr/bin/plymouth ] && /usr/bin/plymouth --ping ; then
- /usr/bin/plymouth --hide-splash
+ if [ -x /bin/plymouth ] && /bin/plymouth --ping ; then
+ /bin/plymouth --hide-splash
fi
failure "$STRING"
tty >/dev/null 2>&1 || exit 1
@@ -104,7 +104,8 @@ case "$1" in
fi
}
touch /var/lock/subsys/netfs
- action "Mounting other filesystems: " mount -a -t nonfs,nfs4,cifs,ncpfs,gfs -O noencrypted
+ # The 'no' applies to all listed filesystem types. See mount(8).
+ action $"Mounting other filesystems: " mount -a -t nonfs,nfs4,cifs,ncpfs,gfs2 -O noencrypted
;;
stop)
# Unmount loopback stuff first
diff --git a/rc.d/init.d/network b/rc.d/init.d/network
index dd4fcb8e..9b86aa70 100755
--- a/rc.d/init.d/network
+++ b/rc.d/init.d/network
@@ -69,7 +69,7 @@ case "$1" in
/etc/sysconfig/network-scripts/init.ipv6-global start pre
fi
- sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1
+ apply_sysctl
if [ -r /etc/ethers -a -x /sbin/arp ]; then
action "Storing ARP mapping" /sbin/arp -f /etc/ethers
@@ -123,6 +123,10 @@ case "$1" in
if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi
+ if [ "$SLAVE" = "yes" ]; then
+ continue
+ fi
+
if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
vpninterfaces="$vpninterfaces $i"
continue
@@ -146,10 +150,6 @@ case "$1" in
continue
fi
- if [ "$SLAVE" = "yes" ]; then
- continue
- fi
-
if LANG=C grep -EL "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i > /dev/null ; then
# this loads the module, to preserve ordering
is_available $i
@@ -200,8 +200,8 @@ case "$1" in
/etc/sysconfig/network-scripts/init.ipv6-global start post
fi
# Run this again to catch any interface-specific actions
- sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1
-
+ apply_sysctl
+
touch /var/lock/subsys/network
;;
stop)
diff --git a/rc.d/rc b/rc.d/rc
index 61485536..a21e4fb2 100755
--- a/rc.d/rc
+++ b/rc.d/rc
@@ -73,7 +73,7 @@ fi
# Set language, vc settings once to avoid doing it for every init script
# through functions
-if [ -z "${NOLOCALE:-}" ] && [ -f /etc/sysconfig/i18n ] ; then
+if [ -z "${NOLOCALE:-}" ] && [ -f /etc/sysconfig/i18n -o -f /etc/locale.conf ] ; then
. /etc/profile.d/10lang.sh 2>/dev/null
export LANGSH_SOURCED=1
fi
diff --git a/rc.d/rc.local b/rc.d/rc.local
index 6d125d8b..cf1cf8dc 100755
--- a/rc.d/rc.local
+++ b/rc.d/rc.local
@@ -5,7 +5,7 @@
# X-Mandriva-Compat-Mode
# Default-Start: 2 3 4 5
# Short-Description: Local initialization script
-# Description: This script will be executed *after* all the other init scripts.
+# Description: This script will be executed at the end of the boot process.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
### END INIT INFO
diff --git a/rc.d/rc.sysinit b/rc.d/rc.sysinit
index 18368b08..6b1baf0f 100755
--- a/rc.d/rc.sysinit
+++ b/rc.d/rc.sysinit
@@ -20,6 +20,10 @@ if [ -f /etc/sysconfig/system ]; then
. /etc/sysconfig/system
fi
+if [ -r /etc/hostname ]; then
+ HOSTNAME=$(cat /etc/hostname)
+fi
+
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
@@ -161,11 +165,14 @@ if [ "x$SPEEDBOOT" = "xyes" ]; then
UDEV_PID=$!
fi
+PLYMOUTH=
+[ -x /bin/plymouth ] && PLYMOUTH=yes
+
# Check SELinux status
SELINUX_STATE=
-if [ -e "/selinux/enforce" ] && [ "$(cat /proc/self/attr/current)" != "kernel" ]; then
- if [ -r "/selinux/enforce" ] ; then
- SELINUX_STATE=$(cat "/selinux/enforce")
+if [ -e "/sys/fs/selinux/enforce" ] && [ "$(cat /proc/self/attr/current)" != "kernel" ]; then
+ if [ -r "/sys/fs/selinux/enforce" ] ; then
+ SELINUX_STATE=$(cat "/sys/fs/selinux/enforce")
else
# assume enforcing if you can't read it
SELINUX_STATE=1
@@ -180,7 +187,7 @@ disable_selinux() {
gprintf "*** Warning -- SELinux is active\n"
gprintf "*** Disabling security enforcement for system recovery.\n"
gprintf "*** Run 'setenforce 1' to reenable.\n"
- echo "0" > "/selinux/enforce"
+ echo "0" > "/sys/fs/selinux/enforce"
}
relabel_selinux() {
@@ -188,7 +195,7 @@ relabel_selinux() {
# wrong context, so a reboot will be required after relabel
AUTORELABEL=
. /etc/selinux/config
- echo "0" > /selinux/enforce
+ echo "0" > /sys/fs/selinux/enforce
[ -n "$PLYMOUTH" ] && plymouth --hide-splash
if [ "$AUTORELABEL" = "0" ]; then
@@ -271,9 +278,11 @@ fi
nashpid=$(pidof nash 2>/dev/null)
[ -n "$nashpid" ] && kill $nashpid >/dev/null 2>&1
unset nashpid
-if [ "x$SPEEDBOOT" != "xyes" ]; then
- /sbin/start_udev
-fi #SPEEDBOOT
+
+action $"Starting udev: " /sbin/udevd --daemon
+/sbin/udevadm trigger --type=subsystems --action=add
+/sbin/udevadm trigger --type=devices --action=add
+/sbin/udevadm settle
# Load other user-defined modules
for file in /etc/sysconfig/modules/*.modules ; do
@@ -297,11 +306,7 @@ mount -n -t tmpfs none /dev/shm >/dev/null 2>&1
# Configure kernel parameters
update_boot_stage RCkernelparam
-sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1
-for file in /etc/sysctl.d/* ; do
- is_ignored_file "$file" && continue
- test -f "$file" && sysctl -e -p "$file" >/dev/null 2>&1
-done
+apply_sysctl
if [ "x$SPEEDBOOT" != "xyes" ]; then
@@ -381,8 +386,12 @@ if ! strstr "$cmdline" nodmraid && [ -x /sbin/dmraid ]; then
done
fi
fi
+fi
fi #SPEEDBOOT
+# Start any MD RAID arrays that haven't been started yet
+[ -r /proc/mdstat ] && [ -r /dev/md/md-device-map ] && /sbin/mdadm -IRs
+
if [ -x /sbin/lvm ]; then
action "Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --ignorelockingfailure
fi
@@ -393,7 +402,7 @@ if [ -f /etc/crypttab ]; then
fi
fi #SPEEDBOOT
-if [ -f /fastboot ] || strstr "$cmdline" fastboot ; then
+if strstr "$cmdline" fastboot || [ -f /fastboot ]; then
fastboot=yes
fi
@@ -404,7 +413,7 @@ fi
# (blino) always source autofsck settings, for AUTOFSCK_CRYPTO_TIMEOUT (#16029)
[ -f /etc/sysconfig/autofsck ] && . /etc/sysconfig/autofsck
-if [ -f /forcefsck ] || strstr "$cmdline" forcefsck ; then
+if strstr "$cmdline" forcefsck || [ -f /forcefsck ]; then
fsckoptions="-f $fsckoptions"
elif [ -f /.autofsck ]; then
if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
@@ -417,9 +426,9 @@ elif [ -f /.autofsck ]; then
gprintf "*** Warning -- the system did not shut down cleanly. \n"
gprintf "*** Dropping you to a shell; the system will continue\n"
gprintf "*** when you leave the shell.\n"
- [ -n "$SELINUX_STATE" ] && echo "0" > /selinux/enforce
+ [ -n "$SELINUX_STATE" ] && echo "0" > /sys/fs/selinux/enforce
sulogin
- [ -n "$SELINUX_STATE" ] && echo "1" > /selinux/enforce
+ [ -n "$SELINUX_STATE" ] && echo "1" > /sys/fs/selinux/enforce
[ -n "$PLYMOUTH" ] && plymouth --show-splash
fi
fsckoptions="$AUTOFSCK_OPT $fsckoptions"
@@ -519,7 +528,7 @@ if [ "$READONLY" = "yes" -o "$TEMPORARY_STATE" = "yes" ]; then
ipaddr=$(ip addr show to 0.0.0.0/0 scope global | awk '/[[:space:]]inet / { print gensub("/.*","","g",$2) }')
for ip in $ipaddr ; do
HOSTNAME=
- eval $(ipcalc -h $ipaddr 2>/dev/null)
+ eval $(ipcalc -h $ip 2>/dev/null)
[ -n "$HOSTNAME" ] && { hostname ${HOSTNAME} ; break; }
done
fi
@@ -747,6 +756,7 @@ fi
# export locales (needed by mount.ntfs-3g)
export LC_ALL
export LANG
+# The 'no' applies to all listed filesystem types. See mount(8).
if [ "$READONLY" != "yes" ] ; then
action "Mounting local filesystems: " mount -a -t nodevpts,nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev,noloop,noencrypted
else
@@ -845,8 +855,8 @@ fi
# Configure machine if necessary.
if [ -f /.unconfigured ]; then
- if [ -x /usr/bin/plymouth ]; then
- /usr/bin/plymouth quit
+ if [ -x /bin/plymouth ]; then
+ /bin/plymouth quit
fi
if [ -x /usr/bin/system-config-keyboard ]; then
@@ -951,14 +961,12 @@ fi
/bin/mount -t binfmt_misc none /proc/sys/fs/binfmt_misc > /dev/null 2>&1
# Boot time profiles. Yes, this should be somewhere else.
-if [ -x /usr/sbin/system-config-network-cmd ]; then
- if strstr "$cmdline" netprofile= ; then
+if strstr "$cmdline" netprofile= && [ -x /usr/sbin/system-config-network-cmd ]; then
for arg in $cmdline ; do
if [ "${arg##netprofile=}" != "${arg}" ]; then
/usr/sbin/system-config-network-cmd --profile ${arg##netprofile=}
fi
done
- fi
fi
(
@@ -1172,8 +1180,8 @@ for i in XF86Config XF86Config-4; do
done
# Let rhgb know that we're leaving rc.sysinit
-if [ -x /usr/bin/plymouth ]; then
- /usr/bin/plymouth --sysinit
+if [ -x /bin/plymouth ]; then
+ /bin/plymouth --sysinit
fi
# remove this file at the very end, for speedboot