blob: 7f40b9ccb20db0fbf187f757a4c49d54d3b85e87 (
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
|
#!/bin/bash
build() {
MODULE_FILE=$workdir/autodetect_modules
add_if_avail() {
if modinfo -k "$KERNELVERSION" "$1" &>/dev/null; then
printf '%s\n' "$1" >>"$MODULE_FILE"
fi
}
if [[ ! -d /sys/devices ]]; then
error "/sys does not appear to be mounted. Unable to use autodetection"
return 1
fi
auto_modules | grep -xEv '(ata|ide)_generic' >"$MODULE_FILE"
if ! rootfstype=$(findmnt -uno fstype "${BASEDIR:-/}"); then
error "failed to detect root filesystem"
fs_autodetect_failed=1
fi
# filesystem module might be a builtin
add_if_avail "$rootfstype"
# detect separate /usr
if usrfstype=$(findmnt -nero fstype -s"$BASEDIR/etc/fstab" /usr); then
add_if_avail "$usrfstype"
fi
if (( UID == 0 )) || in_array 'disk' $(groups); then
if [[ -x $(type -P mdadm) ]]; then
mdadm -Esv /dev/[hrsv]d* /dev/{ida,cciss,ataraid,mapper}/* |
sed -n 's/.*level=\([^ ]\+\) .*/\1/p' |
sed 's/\<raid[456]\>/raid456/g' | sort -u >>"$MODULE_FILE"
fi
else
error "Insufficient permission to perform autodetection for mdadm devices"
raid_autodetect_failed=1
fi
if (( !QUIET )) && [[ -s $MODULE_FILE ]]; then
plain "caching %d modules" $(wc -l < "$MODULE_FILE")
fi
}
help() {
cat <<HELPEOF
This hook shrinks your initramdisk to a smaller size by autodetecting your
needed modules. Be sure to verify included modules are correct and none are
missing. This hook must be run before other subsystem hooks in order to take
advantage of auto-detection. Any hooks placed before 'autodetect' will be
installed in full.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:
|