home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- #
- # This is an example hook script. It will be run by 'mkinitramfs'
- # when it creates the image. It's job is to decide which files to
- # install, then install them into the staging area, where the
- # initramfs is being created. This happens when a new 'linux-image'
- # package is installed, or when the administrator runs 'mkinitramfs'
- # by hand to update an initramfs image.
- #
- # TODO: What about the case where you install something that should be
- # added to the initramfs, but the linux-image it relates to has
- # already been installed previously? Does this happen often
- # enough that it needs to be handled? How can it be handled?
- #
- # * Think about the 'usplash'. The initramfs will need to be
- # updated if a theme change or update is desired. Maybe it
- # should not be totally automatic, but offered on upgrade
- # predicated on a user response to a debconf question? That
- # issue needs to be explored and a solution specified.
- #
- # * Do not assume that any needed subdirectories have been created
- # yet, but don't bail out if they are already there.
- #
- # * All of the standard system tools are available, of course, since
- # this hook is running in the real system, not the initramfs.
- #
- # * TODO: ... ? Anything else to tell them in this bullet-list?
- #
-
- #
- # The environment contains at least:
- #
- # CONFDIR -- usually /etc/mkinitramfs, can be set on mkinitramfs
- # command line.
- #
- # DESTDIR -- The staging directory where we are building the image.
- #
- # TODO: Decide what environment variables are meaningful and defined
- # in this context, then document them as part of the interface.
- #
- # TODO: May need a version_compare function for comparison of VERSION?
-
-
- #
- # 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
-
-
- # You can do anything you need to from here on.
- #
-
- # Source the optional 'hook-functions' scriptlet, if you need the
- # functions defined within it. Read it to see what is available to
- # you. It contains functions for copying dynamically linked program
- # binaries, and kernel modules into the DESTDIR.
- #
- . /usr/share/initramfs-tools/hook-functions
-
-
- # If this hook script is a conffile (and thus stored in
- # /etc/mkinitramfs/hooks), it must take care to do the right thing
- # when the package containing it is removed but not purged. There of
- # course may be other reasons to have custom logic deciding what to
- # install. The version variable may be useful for this.
- #
- if [ -x /usr/bin/myprog ]; then
- copy_exec /usr/bin/myprog usr/bin
- fi
-
- # To accompany this, there should usually be a script for inside the
- # initramfs named something like:
- #
- # "/etc/mkinitramfs/local-premount/myprog"
- #
- # ... and it should do what is necessary to have 'myprog' get run
- # inside the early runtime environment.
-
- # Handle an error:
- #
- if [ -n "$an_error_occured" ];
- then
- #
- # TODO: Do we need 'warn()', 'error()', and/or 'fatal()' for this?
- #
- 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 'mkinitramfs'
- # pass or fail. Consider naming the error values with
- # mnemonic symbols rather than magic numbers. They may or
- # may not be the same set of errors as the set for
- # in-initramfs scripts.
- #
- fi
-
- exit 0
-