70 lines
2.1 KiB
Bash
Executable File
70 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
set -e
|
|
|
|
# for initramfs-tools hook-functions
|
|
export DESTDIR=/run/initramfs
|
|
# for /usr/lib/dracut/dracut-install
|
|
export DESTROOTDIR=$DESTDIR
|
|
# initramfs-tools now requires this to be set
|
|
export verbose=n
|
|
|
|
# something already created shutdown initramfs
|
|
# same check is done by e.g. dracut-shutdown
|
|
# it is expected that any shutdown initramfs is good enough
|
|
[ ! -x $DESTDIR/bin/sh ] || exit 0
|
|
|
|
# /run may be mounted noexec,nosuid => fix it
|
|
# it should be a more normal/default filesystem post-pivot
|
|
# systemd-shutdownd pivot does not currently remount /run with these
|
|
# options
|
|
mount -o remount,exec /run
|
|
|
|
### SHUTDOWN SUPPORT ###
|
|
# our shutdown sequence is to be controled by systemd-shutdown which
|
|
# will unmount all the things, and run our hooks
|
|
|
|
for bin in /bin/sh /lib/systemd/systemd-shutdown
|
|
do
|
|
rm -f /run/finalrd-libs.conf
|
|
touch /run/finalrd-libs.conf
|
|
for lib in `LD_TRACE_LOADED_OBJECTS=1 $bin | grep -Eow "/.* "`
|
|
do
|
|
if [ "$lib" = '=>' ]
|
|
then
|
|
continue
|
|
fi
|
|
if grep -q $lib /run/finalrd-libs.conf
|
|
then
|
|
continue
|
|
fi
|
|
echo "d $(dirname $DESTDIR$lib)" >> /run/finalrd-libs.conf
|
|
if [ -L $lib ]
|
|
then
|
|
target=$(realpath -e $lib)
|
|
echo "C $DESTDIR$target - - - - $target" >> /run/finalrd-libs.conf
|
|
echo "L $DESTDIR$lib - - - - $(readlink $lib)" >> /run/finalrd-libs.conf
|
|
else
|
|
echo "C $DESTDIR$lib - - - - $lib" >> /run/finalrd-libs.conf
|
|
fi
|
|
done
|
|
done
|
|
systemd-tmpfiles --create /usr/lib/finalrd/finalrd-static.conf /run/finalrd-libs.conf
|
|
|
|
### HOOKS SUPPORT ###
|
|
# Without initramfs-tools, hooks are not supported
|
|
[ -e /usr/share/initramfs-tools/hook-functions ] || exit 0
|
|
. /usr/share/initramfs-tools/hook-functions
|
|
|
|
for d in /usr/share/finalrd /etc/finalrd /run/finalrd
|
|
do
|
|
if [ -d $d ]
|
|
then
|
|
run-parts -v --regex='^.*\.finalrd$' --arg=setup -- $d || :
|
|
find $d -executable -name '*.finalrd' -exec cp -- "{}" $DESTDIR/lib/systemd/system-shutdown \;
|
|
fi
|
|
done
|
|
|
|
ldconfig -r $DESTDIR
|