Tidy up some code and remove the redundant single_user function as we now use exit codes.

This commit is contained in:
Roy Marples 2008-01-31 09:48:58 +00:00
parent 0ce909e12b
commit 9300fa240d
4 changed files with 24 additions and 47 deletions

View File

@ -7,18 +7,18 @@
rc_tty_number=12 rc_tty_number=12
# Use this variable to control the /dev management behavior. # Use this variable to control the /dev management behavior.
# auto - let the scripts figure out what's best at boot
# devfs - use devfs (requires sys-fs/devfsd) # devfs - use devfs (requires sys-fs/devfsd)
# mdev - use mdev (requires sys-apps/busybox) # mdev - use mdev (requires sys-apps/busybox)
# udev - use udev (requires sys-fs/udev) # udev - use udev (requires sys-fs/udev)
# static - let the user manage /dev (YOU need to create ALL device nodes) # static - let the user manage /dev (YOU need to create ALL device nodes)
rc_devices="auto" # Leave it blank to let rc work it out (udev, mdev, devfs, static)
#rc_devices=""
# UDEV OPTION: # UDEV OPTION:
# Set to "yes" if you want to save /dev to a tarball on shutdown # Set to "yes" if you want to save /dev to a tarball on shutdown
# and restore it on startup. This is useful if you have a lot of # and restore it on startup. This is useful if you have a lot of
# custom device nodes that udev does not handle/know about. # custom device nodes that udev does not handle/know about.
RC_DEVICE_TARBALL="no" rc_device_tarball="NO"
# Sets the level at which logging of messages is done to the # Sets the level at which logging of messages is done to the
# console. See dmesg(8) for more info. # console. See dmesg(8) for more info.

View File

@ -2,13 +2,6 @@
# Copyright 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
# void single_user()
# Drop to a shell, remount / ro, and then reboot
single_user()
{
exit 1
}
# This basically mounts $svcdir as a ramdisk, but preserving its content # This basically mounts $svcdir as a ramdisk, but preserving its content
# which allows us to run depscan.sh # which allows us to run depscan.sh
# FreeBSD has a nice ramdisk - we don't set a size as we should always # FreeBSD has a nice ramdisk - we don't set a size as we should always
@ -17,7 +10,7 @@ single_user()
# FreeBSD-7 supports tmpfs now :) # FreeBSD-7 supports tmpfs now :)
mount_svcdir() mount_svcdir()
{ {
local dotmp=false release=false local dotmp=false release=false retval=0
if [ -e "${RC_SVCDIR}"/deptree ]; then if [ -e "${RC_SVCDIR}"/deptree ]; then
dotmp=true dotmp=true
if ! mount -t tmpfs none "${RC_LIBDIR}"/tmp 2>/dev/null; then if ! mount -t tmpfs none "${RC_LIBDIR}"/tmp 2>/dev/null; then
@ -34,12 +27,15 @@ mount_svcdir()
newfs -b 4096 -i 1024 -n /dev/md0 newfs -b 4096 -i 1024 -n /dev/md0
mount -o rw,noexec,nosuid /dev/md0 "${RC_SVCDIR}" mount -o rw,noexec,nosuid /dev/md0 "${RC_SVCDIR}"
fi fi
retval=$?
if ${dotmp}; then if ${dotmp}; then
cp -p "${RC_LIBDIR}"/tmp/deptree "${RC_LIBDIR}"/tmp/depconfig \ cp -p "${RC_LIBDIR}"/tmp/deptree "${RC_LIBDIR}"/tmp/depconfig \
"${RC_LIBDIR}"/tmp/nettree "${RC_SVCDIR}" 2>/dev/null "${RC_LIBDIR}"/tmp/nettree "${RC_SVCDIR}" 2>/dev/null
umount "${RC_LIBDIR}"/tmp umount "${RC_LIBDIR}"/tmp
${release} && mdconfig -d -u 1 ${release} && mdconfig -d -u 1
fi fi
return ${retval}
} }
. "${RC_LIBDIR}"/sh/functions.sh . "${RC_LIBDIR}"/sh/functions.sh

View File

@ -39,25 +39,6 @@ KV_to_int()
echo "${KV_int}" echo "${KV_int}"
} }
single_user()
{
if [ "${RC_SYS}" = "VPS" ]; then
einfo "Halting"
halt -f
return
fi
sulogin ${CONSOLE}
einfo "Unmounting filesystems"
if [ -c /dev/null ]; then
mount -a -o remount,ro 2>/dev/null
else
mount -a -o remount,ro
fi
einfo "Rebooting"
reboot -f
}
# This basically mounts $svcdir as a ramdisk, but preserving its content # This basically mounts $svcdir as a ramdisk, but preserving its content
# which allows us to run depscan.sh # which allows us to run depscan.sh
# The tricky part is finding something our kernel supports # The tricky part is finding something our kernel supports
@ -65,7 +46,7 @@ single_user()
mount_svcdir() mount_svcdir()
{ {
local fs= fsopts="-o rw,noexec,nodev,nosuid" devdir="none" devtmp="none" x= local fs= fsopts="-o rw,noexec,nodev,nosuid" devdir="none" devtmp="none" x=
local svcsize=${svcsize:-1024} local svcsize=${rc_svcsize:-1024}
if grep -Eq "[[:space:]]+tmpfs$" /proc/filesystems; then if grep -Eq "[[:space:]]+tmpfs$" /proc/filesystems; then
fs="tmpfs" fs="tmpfs"
@ -79,15 +60,15 @@ mount_svcdir()
devtmp="/dev/ram1" devtmp="/dev/ram1"
fs="ext2" fs="ext2"
for x in ${devdir} ${devtmp}; do for x in ${devdir} ${devtmp}; do
dd if=/dev/zero of="${x}" bs=1k count="${rc_svcsize:-1024}" dd if=/dev/zero of="${x}" bs=1k count="${svcsize}"
mkfs -t "${fs}" -i 1024 -vm0 "${x}" "${rc_svcsize:-1024}" mkfs -t "${fs}" -i 1024 -vm0 "${x}" "${svcsize}"
done done
else else
echo echo
eerror "OpenRC requires tmpfs, ramfs or 2 ramdisks + ext2" eerror "OpenRC requires tmpfs, ramfs or 2 ramdisks + ext2"
eerror "compiled into the kernel" eerror "compiled into the kernel"
echo echo
single_user return 1
fi fi
local dotmp=false local dotmp=false
@ -98,7 +79,7 @@ mount_svcdir()
"${RC_SVCDIR}"/nettree "${RC_LIBDIR}"/tmp 2>/dev/null "${RC_SVCDIR}"/nettree "${RC_LIBDIR}"/tmp 2>/dev/null
fi fi
# If we have no entry in fstab for $svcdir, provide our own # If we have no entry in fstab for $RC_SVCDIR, provide our own
if fstabinfo --quiet "${RC_SVCDIR}"; then if fstabinfo --quiet "${RC_SVCDIR}"; then
mount -n "${RC_SVCDIR}" mount -n "${RC_SVCDIR}"
else else
@ -190,22 +171,18 @@ if [ "${RC_UNAME}" != "GNU/kFreeBSD" -a "${RC_SYS}" != "VPS" ]; then
fi fi
# Try to figure out how the user wants /dev handled # Try to figure out how the user wants /dev handled
# - check $RC_DEVICES from /etc/conf.d/rc if [ "${rc_devices}" = "static" \
# - check boot parameters -o "${RC_SYS}" = "VPS" \
# - make sure the required binaries exist -o "${RC_UNAME}" = "GNU/kFreeBSD" ]
# - make sure the kernel has support then
if [ "${rc_devices}" = "static" -o "${RC_SYS}" = "VPS" ]; then
ebegin "Using existing device nodes in /dev" ebegin "Using existing device nodes in /dev"
eend 0 eend 0
elif [ "${RC_UNAME}" = "GNU/kFreeBSD" ]; then
ebegin "Using kFreeBSD devfs in /dev"
eend 0
else else
case ${rc_devices} in case ${rc_devices} in
devfs) managers="devfs udev mdev";; devfs) managers="devfs udev mdev";;
udev) managers="udev devfs mdev";; udev) managers="udev devfs mdev";;
mdev) managers="mdev udev devfs";; mdev) managers="mdev udev devfs";;
auto|*) managers="udev devfs mdev";; *) managers="udev devfs mdev";;
esac esac
for m in ${managers}; do for m in ${managers}; do
@ -222,7 +199,8 @@ else
fi fi
# Mount required stuff as user may not have then in /etc/fstab # Mount required stuff as user may not have then in /etc/fstab
for x in "devpts /dev/pts 0755 ,gid=5,mode=0620" "tmpfs /dev/shm 1777 ,nodev"; do for x in "devpts /dev/pts 0755 ,gid=5,mode=0620" "tmpfs /dev/shm 1777 ,nodev"
do
set -- ${x} set -- ${x}
grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue
mountinfo -q "$2" && continue mountinfo -q "$2" && continue

View File

@ -1,10 +1,12 @@
# Copyright 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
retval=0
# mount $svcdir as something we can write to if it's not rw # mount $svcdir as something we can write to if it's not rw
# On vservers, / is always rw at this point, so we need to clean out # On vservers, / is always rw at this point, so we need to clean out
# the old service state data # the old service state data
if [ "${RC_SVCDIR}" != "/" ] && mkdir "${RC_SVCDIR}/.test.$$" 2>/dev/null; then if [ "${RC_SVCDIR}" != "/" ] && mkdir "${RC_SVCDIR}/.test.$$" 2>/dev/null; then
rmdir "${RC_SVCDIR}/.test.$$" rmdir "${RC_SVCDIR}/.test.$$"
for x in ${RC_SVCDIR:-/lib/rc/init.d}/*; do for x in ${RC_SVCDIR:-/lib/rc/init.d}/*; do
[ -e "${x}" ] || continue [ -e "${x}" ] || continue
@ -15,6 +17,7 @@ if [ "${RC_SVCDIR}" != "/" ] && mkdir "${RC_SVCDIR}/.test.$$" 2>/dev/null; then
done done
else else
mount_svcdir mount_svcdir
retval=$?
fi fi
echo "sysinit" > "${RC_SVCDIR}/softlevel" echo "sysinit" > "${RC_SVCDIR}/softlevel"
@ -22,4 +25,4 @@ echo "sysinit" > "${RC_SVCDIR}/softlevel"
# sysinit is now done, so allow init scripts to run normally # sysinit is now done, so allow init scripts to run normally
[ -e /dev/.rcsysinit ] && rm -f /dev/.rcsysinit [ -e /dev/.rcsysinit ] && rm -f /dev/.rcsysinit
exit 0 exit ${retval}