91 lines
2.6 KiB
Bash
91 lines
2.6 KiB
Bash
#!/bin/sh
|
|
|
|
#
|
|
# This script is run inside of the initramfs environment during the
|
|
# system boot process. It is installed there by 'mkinitramfs'. The
|
|
# package that owns it may opt to install it in either an appropriate
|
|
# location under "/usr/share/initramfs-tools/scripts/", or a similar
|
|
# location under "/etc/mkinitramfs/scripts/", depending upon whether
|
|
# it should be considered to be a user modifiable conffile or not.
|
|
#
|
|
# TODO: How do we deal with the case where the package that installed
|
|
# this has been removed but not purged, if we always arbitrarily
|
|
# copy all of these scripts into the initramfs?
|
|
#
|
|
# * The available toolset is limited inside this environment...
|
|
#
|
|
# TODO: document that toolset in the man page.
|
|
#
|
|
# * /dev, /proc, and /sys are already mounted. / is a ?? ro/rw
|
|
# filesystem... etc. more documentation.
|
|
#
|
|
# * It is expected that /proc and /sys will be umounted before
|
|
# changing over to the real root file system, so you must not keep
|
|
# any files open on them beyond these scripts.
|
|
#
|
|
# * You may like to strip these documentation comments from this
|
|
# example if you take it for a template, to save a little space in
|
|
# the initramfs, since nobody will ever read it from inside of
|
|
# there anyhow.
|
|
#
|
|
|
|
#
|
|
# The environment contains at least the following variables:
|
|
#
|
|
# TODO: Decide what environment variables are meaningful and defined
|
|
# in this context, then document them as part of the interface.
|
|
#
|
|
# Because this script will be run as a full separate process, rather
|
|
# than sourced inside the context of the driver script, if it needs to
|
|
# pass information to another script that may run after it, it must do
|
|
# so by writing data to a file location known to both scripts. Simply
|
|
# setting an environment variable will not work.
|
|
#
|
|
|
|
#
|
|
# List the soft prerequisites here. This is a space separated list of
|
|
# names, of scripts that are in the same directory as this one, that
|
|
# must be run before this one can be.
|
|
#
|
|
PREREQ=""
|
|
|
|
prereqs()
|
|
{
|
|
echo "$PREREQ"
|
|
}
|
|
|
|
case $1 in
|
|
# get pre-requisites
|
|
prereqs)
|
|
prereqs
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
# Do the work here.
|
|
|
|
echo "Got here!"
|
|
|
|
# Handle an error:
|
|
|
|
if [ -n "$an_error_occured" ];
|
|
then
|
|
#
|
|
# TODO: Do we need 'warn()', 'error()', and/or 'fatal()' for this?
|
|
# I think we ultimately do, and that they need to be in their own
|
|
# well-documented location so that an overlay can override them.
|
|
# Think 'usplash' progress updates.
|
|
#
|
|
echo "An error occured in $0: $an_error_occured" >&2
|
|
exit 1
|
|
#
|
|
# TODO: Decide if different error codes are meaningful, what they
|
|
# mean, and what the semantics of them are wrt 'init' pass
|
|
# or panic. Consider naming the error values with mnemonic
|
|
# symbols rather than magic numbers.
|
|
#
|
|
fi
|
|
|
|
exit 0
|
|
|