summaryrefslogtreecommitdiffstats
path: root/modules.d/99fs-lib/module-setup.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
commit9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a (patch)
tree2efb72864cc69e174c9c5ee33efb88a5f1553b48 /modules.d/99fs-lib/module-setup.sh
parentInitial commit. (diff)
downloaddracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.tar.xz
dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.zip
Adding upstream version 060+5.upstream/060+5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'modules.d/99fs-lib/module-setup.sh')
-rwxr-xr-xmodules.d/99fs-lib/module-setup.sh89
1 files changed, 89 insertions, 0 deletions
diff --git a/modules.d/99fs-lib/module-setup.sh b/modules.d/99fs-lib/module-setup.sh
new file mode 100755
index 0000000..2b81b0c
--- /dev/null
+++ b/modules.d/99fs-lib/module-setup.sh
@@ -0,0 +1,89 @@
+#!/bin/bash
+
+# called by dracut
+check() {
+ return 0
+}
+
+# called by dracut
+depends() {
+ return 0
+}
+
+echo_fs_helper() {
+ local fs=$2
+ case "$fs" in
+ xfs)
+ echo -n " xfs_db xfs_repair xfs_check xfs_metadump "
+ ;;
+ ext?)
+ echo -n " e2fsck "
+ ;;
+ jfs)
+ echo -n " jfs_fsck "
+ ;;
+ reiserfs)
+ echo -n " reiserfsck "
+ ;;
+ btrfs)
+ echo -n " btrfsck "
+ ;;
+ esac
+
+ echo -n " fsck.$fs "
+ return 0
+}
+
+include_fs_helper_modules() {
+ local fs=$2
+ case "$fs" in
+ xfs | btrfs | ext4 | ext3)
+ instmods crc32c
+ ;;
+ f2fs)
+ instmods crc32
+ ;;
+ esac
+}
+
+# called by dracut
+installkernel() {
+ # xfs/btrfs/ext4 need crc32c, f2fs needs crc32
+ if [[ $hostonly ]]; then
+ for_each_host_dev_fs include_fs_helper_modules
+ :
+ else
+ instmods crc32c crc32
+ fi
+}
+
+# called by dracut
+install() {
+ local _helpers
+
+ inst "$moddir/fs-lib.sh" "/lib/fs-lib.sh"
+ : > "${initdir}"/etc/fstab.empty
+
+ [[ $nofscks == "yes" ]] && return
+
+ if [[ $fscks == "${fscks#*[^ ]*}" ]]; then
+ _helpers=(
+ /sbin/fsck* /usr/sbin/fsck*
+ xfs_db xfs_check xfs_repair xfs_metadump
+ e2fsck jfs_fsck reiserfsck btrfsck
+ )
+ if [[ $hostonly ]]; then
+ read -r -a _helpers < <(for_each_host_dev_fs echo_fs_helper)
+ fi
+ else
+ read -r -a _helpers <<< "$fscks"
+ fi
+
+ _helpers+=(umount mount)
+
+ if [[ ${_helpers[*]} == *e2fsck* ]] && [[ -e $dracutsysrootdir/etc/e2fsck.conf ]]; then
+ inst_simple /etc/e2fsck.conf
+ fi
+
+ inst_multiple -o "${_helpers[@]}" fsck
+}