summaryrefslogtreecommitdiff
path: root/debian/initramfs-tools.preinst
blob: 758b504e6ca650ff277b832b35dbebc4af9dec24 (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
#!/bin/sh

set -e

chrooted() {
	# borrowed from udev's postinst
	if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ]; then
		# the devicenumber/inode pair of / is the same as that of
		# /sbin/init's root, so we're *not* in a chroot and hence
		# return false.
		return 1
	fi
	return 0
}

case "$1" in
	install)
		mkdir -p /etc/initramfs-tools/conf.d

		# First time install.  Can we autodetect the RESUME partition?
		if [ -r /proc/swaps ]; then
			RESUME=$(tail -n $(($(wc -l /proc/swaps | awk ' { print $1 } ') - 1)) /proc/swaps | sort -rk3 | head -n 1 | awk ' { print $1 } ')
			if [ -x /sbin/vol_id ]; then
				UUID=$(/sbin/vol_id -u "$RESUME" || true)
			elif [ -x /lib/udev/vol_id ]; then
				UUID=$(/lib/udev/vol_id -u "$RESUME" || true)
			fi
			if [ -n "$UUID" ]; then
				RESUME="UUID=$UUID"
			fi
		fi

		# Inherit initrd-tools settings if possible.
		if [ -e /etc/mkinitrd/mkinitrd.conf ]; then
			 . /etc/mkinitrd/mkinitrd.conf
		fi
		# write conf.d/resume if not in a chroot
		if [ -n "${RESUME}" ] && ! chrooted; then
			echo "RESUME=${RESUME}" > /etc/initramfs-tools/conf.d/resume
		fi

		# Add initrd-tools modules, while trying to minimize prompting
		if [ -e /etc/mkinitrd/modules ]; then
			cp /etc/mkinitrd/modules /etc/initramfs-tools/
			sed -i \
			  -e 's/\/etc\/mkinitrd\/modules: Kernel modules to load for initrd./List of modules that you want to include in your initramfs./g' \
			  -e 's/mkinitrd/update-initramfs/g' \
			  -e '/# This file should/,/one per line\./d' \
			  -e 's/Comments begin with.*/Syntax:  module_name [args ...]/' \
			  -e 's/^#  ext2$/# raid1/' \
			  -e 's/^#  wd io=0x300$/# sd_mod/' \
			  -e '/^ide-generic/d' \
			  -e '/^ide-disk/d' \
			  -e '/^ext2/d' \
			  -e '/^ext3/d' \
			  /etc/initramfs-tools/modules
		fi

		if [ -e /etc/mkinitrd/DSDT ]; then
			cp /etc/mkinitrd/DSDT /etc/initramfs-tools/DSDT.aml
		fi
	;;
esac

#DEBHELPER#