summarylogtreecommitdiffstats
path: root/os-prober-dont-load-all-fs-module-and-dont-test-mount.patch
blob: 62443f7fbe4e3b56e19bfaa310af14f740d86b5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Index: os-prober-1.76/os-probes/common/50mounted-tests
===================================================================
--- os-prober-1.76.orig/os-probes/common/50mounted-tests
+++ os-prober-1.76/os-probes/common/50mounted-tests
@@ -49,19 +49,13 @@ elif [ -z "$types" ]; then
 		debug "$1 is a LUKS partition; skipping"
 		exit 0
 	fi
-	for type in $(grep -v nodev /proc/filesystems); do
-		# hfsplus filesystems are mountable as hfs. Try hfs last so
-		# that we can tell the difference.
-		if [ "$type" = hfs ]; then
-			delaytypes="${delaytypes:+$delaytypes }$type"
-		elif [ "$type" = fuseblk ]; then
-			if type ntfs-3g >/dev/null 2>&1; then
-				types="${types:+$types }ntfs-3g"
-			fi
-		else
-			types="${types:+$types }$type"
-		fi
-	done
+
+	# Simply skip such partition is better than trying to detect
+	# it by blinded test mounts with all kinds of kernel file system,
+	# that would lead to unwanted consequence like kernel oops and
+	# risk to corrupt your system and data.
+	debug "$1 is a partition without file system; skipping"
+	exit 0
 fi

 tmpmnt=/var/lib/os-prober/mount
Index: os-prober-1.76/os-probes/init/common/10filesystems
===================================================================
--- os-prober-1.76.orig/os-probes/init/common/10filesystems
+++ os-prober-1.76/os-probes/init/common/10filesystems
@@ -1,39 +1,19 @@
 #!/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 grub2-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
+set -e
+
+# Make sure fuse is available for grub2-mount
+# As long as we use grub2-mount, we use grub2's own file system modules
+# to mount the partitiion and the operation don't require kernel support
+# other than fuse.
+if ! cat /proc/filesystems | grep nodev | cut -f2 | grep -qw fuse; then
+       modprobe fuse 2>&1 | logger -t os-prober
+fi
+# Regarding file systems not supported by grub2, or systems simply don't
+# have grub2-mount, will use linux 'mount' utility. This will require
+# kernel file system module to work, but still we don't need to modprobe
+# all of them before mount, because mount() syscall will take care of it
+# by __request_module the needed kernel module and we should leave it do
+# that for us in order to have only needed modules get loaded.
+#
+# Still if you want any kernel module loaded, add them here.