#!/bin/sh
# Make sure filesystems are available.
set +e	# ignore errors from modprobe

FILESYSTEMS='ext2 ext3 ext4 xfs jfs msdos vfat ntfs minix hfs hfsplus qnx4 ufs btrfs'
# fuse is needed to make grub-mount work.
FILESYSTEMS="$FILESYSTEMS fuse"
# The Ubuntu kernel udebs put a number of filesystem modules in
# fs-{core,secondary}-modules. It's fairly cheap to check for these too.
FILESYSTEMS="$FILESYSTEMS fs-core fs-secondary"

if [ ! -e /var/lib/os-prober/modules ]; then
	# Check for anna-install to make it easier to use os-prober outside
	# d-i.
	if type anna-install >/dev/null 2>&1 && [ -d /lib/debian-installer ]; then
		for fs in $FILESYSTEMS; do
			ANNA_QUIET=1 DEBIAN_FRONTEND=none \
			log-output -t os-prober \
				anna-install "$fs-modules" || true
		done
		depmod -a >/dev/null 2>&1 || true
	fi

	for fs in $FILESYSTEMS; do
		case "$fs" in
			fs-*)
				;;
			*)
				modprobe "$fs" 2>/dev/null | logger -t os-prober
				;;
		esac
	done

	# We only want to keep this state inside d-i, so this is as good a
	# check as any.
	if type anna-install >/dev/null 2>&1 && [ -d /lib/debian-installer ]; then
		touch /var/lib/os-prober/modules
	fi
fi
