Raspi-image-spec/rootfs/etc/initramfs-tools/hooks/rpi-resizerootfs
Diederik de Haas 82dfcf25ff
Explicitly copy 'fsck*' into the initramfs
While fsck.ext4 and fsck.vfat are part of the initramfs, it turns out
that fsck itself isn't!
While it normally gets included in the initramfs, for some reason that
doesn't happen with our image creation, so it isn't available on first
boot, so explicitly copy 'fsck' so that it will be included.
For that to work, 'logsave' is needed too, so include that as well.

During boot up, initramfs wants to check the filesystems and it does so
via `fsck`, which then (presumably) checks the filesystem being used
and calls the appropriate fsck.* to do the actual checking.
But when `fsck` itself isn't available you get the following warning:
"Warning: fsck not present, so skipping root file system"
When it is available, you'll get a message like this:
"Begin: Will now check root file system ... fsck from util-linux 2.38.1"

Let's also follow our own advise and not *assume* the needed fsck
programs are present in initramfs, but add them explicitly.

Now we can start the resize operations while knowing the current
filesystem is in a proper/clean state.
2022-12-01 18:29:17 +01:00

53 lines
1.1 KiB
Bash
Executable file

#!/bin/sh
set -e
#
# 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.
#
PREREQS=""
case $1 in
prereqs) echo "$PREREQS"; exit 0;;
esac
. /usr/share/initramfs-tools/hook-functions
# List ALL the programs we need, because we explicitly call them
# Don't *assume* it will be included!
# The update-initramfs script will figure out any dependencies
# that also need to be included, so lets not do that
#
# Find the path as used by the package itself; usrmerge may not be used
# from coreutils
copy_exec /usr/bin/realpath
copy_exec /usr/bin/tail
copy_exec /usr/bin/test
# from dosfstools
copy_exec /sbin/fsck.vfat
# from e2fsprogs
copy_exec /sbin/resize2fs
copy_exec /sbin/fsck.ext4
# from grep
copy_exec /bin/grep
# from logsave
copy_exec /sbin/logsave
# from mount
copy_exec /bin/mount
copy_exec /bin/umount
# from parted
copy_exec /sbin/parted
copy_exec /sbin/partprobe
# from util-linux
copy_exec /bin/lsblk
copy_exec /sbin/blkid
copy_exec /sbin/fsck