2019-01-23 23:02:34 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
2024-11-01 22:13:31 +01:00
|
|
|
# Copyright 2019, 2024 Patrick J. Volkerding, Sebeka, Minnesota, USA
|
2019-01-23 23:02:34 +01:00
|
|
|
# All rights reserved.
|
|
|
|
#
|
|
|
|
# Redistribution and use of this script, with or without modification, is
|
|
|
|
# permitted provided that the following conditions are met:
|
|
|
|
#
|
|
|
|
# 1. Redistributions of this script must retain the above copyright
|
|
|
|
# notice, this list of conditions and the following disclaimer.
|
|
|
|
#
|
|
|
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
|
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
|
|
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
|
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
|
|
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
|
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
|
|
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
|
|
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
2024-11-01 22:13:31 +01:00
|
|
|
# This is a simple script to generate an initial ramdisk when a new
|
|
|
|
# kernel is installed. If the kernel is vmlinuz-6.11.5, it will generate
|
|
|
|
# initrd-6.11.5.img. If there's a symlink pointing at the kernel (for
|
|
|
|
# example, vmlinuz-generic), it will also make a matching initrd-generic.img
|
|
|
|
# symlink. Finally, it also supports a plain initrd.gz symlink to the initrd,
|
|
|
|
# which might still be needed by some old setups.
|
2024-11-02 22:18:48 +01:00
|
|
|
|
2024-11-08 23:17:50 +01:00
|
|
|
# To generate an initrd automatically, just run "geninitrd".
|
2024-11-25 22:19:23 +01:00
|
|
|
# Which kernel will be used follows this priority:
|
|
|
|
# If a kernel was provided on the command line:
|
|
|
|
# geninitrd /boot/vmlinuz-6.12.1
|
|
|
|
# Then we will use that kernel.
|
|
|
|
# Otherwise, if the KERNEL environment variable was provided:
|
|
|
|
# KERNEL=/boot/vmlinuz-6.12.1 geninitrd
|
|
|
|
# Then we will use that kernel.
|
|
|
|
# Otherwise we will use the value for KERNEL defined in /etc/default/geninitrd.
|
|
|
|
# If KERNEL remains undefined after loading /etc/default/geninitrd, then
|
|
|
|
# we will fall back on using the newest kernel we find in /boot.
|
2024-11-02 22:18:48 +01:00
|
|
|
|
|
|
|
# If you use an encrypted root, you may need an appropriate /etc/mkinitrd.conf
|
|
|
|
# (if you will be setting GENERATOR=mkinitrd in /etc/default/geninitrd), or you
|
|
|
|
# could try using GENERATOR=dracut.
|
2019-01-23 23:02:34 +01:00
|
|
|
|
|
|
|
cd $(dirname $0)/../..
|
2024-11-06 21:54:05 +01:00
|
|
|
|
2024-11-25 22:19:23 +01:00
|
|
|
# Was KERNEL already defined? If so, save it as a possible override:
|
|
|
|
if [ ! -z "$KERNEL" ]; then
|
|
|
|
KERNEL_OVERRIDE=$KERNEL
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Was a kernel given on the command line? If so, this is the highest priority
|
|
|
|
# for the kernel to use:
|
|
|
|
if [ ! -z "$1" ]; then
|
|
|
|
KERNEL_OVERRIDE=$1
|
|
|
|
fi
|
|
|
|
|
2024-11-25 00:09:54 +01:00
|
|
|
# Load default options:
|
|
|
|
if [ -r etc/default/geninitrd ]; then
|
|
|
|
. etc/default/geninitrd
|
|
|
|
fi
|
|
|
|
|
2024-11-25 22:19:23 +01:00
|
|
|
# If we have a KERNEL_OVERRIDE use it for the KERNEL:
|
|
|
|
if [ ! -z "$KERNEL_OVERRIDE" ]; then
|
|
|
|
KERNEL=$KERNEL_OVERRIDE
|
|
|
|
unset KERNEL_OVERRIDE
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -z "$KERNEL" ]; then
|
|
|
|
export KERNEL
|
2024-11-08 23:17:50 +01:00
|
|
|
fi
|
|
|
|
|
2024-11-06 21:54:05 +01:00
|
|
|
# In case you cannot make this script do exactly what you require, you're
|
2024-11-25 00:09:54 +01:00
|
|
|
# welcome to create your own script to be run instead. Define this in
|
|
|
|
# /etc/default/geninitrd (GENINITRD_OVERRIDE_SCRIPT).
|
|
|
|
if [ ! -z $GENINITRD_OVERRIDE_SCRIPT ]; then
|
|
|
|
# If this is an absolute pathname, make it relative to /:
|
|
|
|
RELATIVE_OVERRIDE_SCRIPT=$GENINITRD_OVERRIDE_SCRIPT
|
|
|
|
if [ "$(echo $RELATIVE_OVERRIDE_SCRIPT | cut -b 1)" = "/" ]; then
|
|
|
|
RELATIVE_OVERRIDE_SCRIPT="$(echo $RELATIVE_OVERRIDE_SCRIPT | cut -b 2-)"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ -x "$RELATIVE_OVERRIDE_SCRIPT" ]; then
|
|
|
|
chroot . $GENINITRD_OVERRIDE_SCRIPT
|
2024-11-06 21:54:05 +01:00
|
|
|
else # we will run the default handler from the setup scripts:
|
2024-11-25 00:09:54 +01:00
|
|
|
chroot . /var/lib/pkgtools/setup/setup.01.mkinitrd
|
2024-11-06 21:54:05 +01:00
|
|
|
fi
|
2024-11-17 20:50:28 +01:00
|
|
|
|
|
|
|
# If enabled in /etc/default/geninitrd, remove any orphaned initrds
|
|
|
|
# after generating the initrd:
|
2024-11-28 22:47:57 +01:00
|
|
|
if [ "$AUTO_REMOVE_ORPHANED_INITRDS" = "true" ]; then
|
2024-11-25 00:09:54 +01:00
|
|
|
if [ "$GENINITRD_COMMAND_OUTPUT" = "true" ]; then
|
|
|
|
chroot . /usr/sbin/remove-orphaned-initrds
|
|
|
|
else
|
|
|
|
chroot . /usr/sbin/remove-orphaned-initrds 1> /dev/null 2> /dev/null
|
|
|
|
fi
|
2024-11-17 20:50:28 +01:00
|
|
|
fi
|