1
0
mirror of synced 2026-01-15 07:53:03 +00:00
xen-tools.xen-tools/hooks/common/80-install-modules-deb

82 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
#
# Install modules from the host system into the new image, and
# ensure that 'module-init-tools' is setup.
#
# This is most likely required if you're using a custom kernel
# for your Xen system. But even if it isn't required it can't
# really do anything bad; just waste a bit of space.
#
# Steve
# --
# https://steve.fi/
prefix=$1
#
# Source our common functions
#
if [ -e /usr/share/xen-tools/common.sh ]; then
. /usr/share/xen-tools/common.sh
else
. ./hooks/common.sh
fi
#
# Log our start
#
logMessage Script $0 starting
if [ "${pygrub}" = "1" ]; then
logMessage "pygrub set, skipping module install"
else
#
# The name of the package containing the correct modules.
#
linux_modules_package="linux-modules-$(uname -r)"
#
# Attempt to install that package. This will either work on an Etch
# system, or fail on a Sarge/custom kernel.
#
if [ -n "${modules}" -a -d "${modules}" ]; then
#
# Modules path was specified during install
#
logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules
cp -au ${modules} ${prefix}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_modules_package}' is available - installing"
#
# If it worked then we can install the package.
#
installDebianPackage ${prefix} ${linux_modules_package}
else
#
# Fall back to copying over modules from the host to the new
# system.
#
logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules
fi
fi # if pygrub
#
# Log our finish
#
logMessage Script $0 finished