home *** CD-ROM | disk | FTP | other *** search
- #!/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
-
-