115 lines
3.4 KiB
Bash
115 lines
3.4 KiB
Bash
#!/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
|