This file is indexed.

/usr/share/initramfs-tools/scripts/local-premount/rescuevol is in cloud-initramfs-rescuevol 0.40ubuntu1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 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
#!/bin/sh

RESCUE_LABEL="RESCUE_VOL"
UMOUNT=""

get_dev_by_label() {
	local label=${1} dev=""
	dev=$(blkid -c /dev/null -w /dev/null -l -o device \
		-t "LABEL=${label}") || return 1
	[ -n "${dev}" -a -e "${dev}" ] || return 1
	_RET=${dev}
}
hasvol() {
	local dev="" mp="" label=${1} myinit="${2}"
	get_dev_by_label "$label" || return 1
	dev=${_RET}

	mount -o ro "${dev}" "${MP}" && UMOUNT="${MP}" ||
		{ echo "${dev} existed, but mount failed"; return 1; }

	mp=${MP}
	# the presense of file /etc/rescuevol-ignore in the target indicates
	# that we should not use it.
	[ -e "${mp}/etc/rescuevol-ignore" ] && {
		echo "ignoring rescue volume labeled '${label}' due to /etc/rescuevol-ignore";
		return 1;
	}

	# if /sbin/rescuevol-init exists, then use it rather than /sbin/init
	[ -e "${mp}/sbin/rescuevol-init" ] && myinit="/sbin/rescuevol-init"

	_RET_DEV=${dev}
	_RET_INIT=${myinit}

}
mountfail() {
	local vol="" label=${1}
	get_dev_by_label "$label" && vol=${_RET}
	if [ "${ROOT}" = "${vol}" ]; then
		echo "**** Failed to mount rescue volume ${vol} ! *****"
	else
		cat <<EOF
****    Boot from your root device '${ROOT}' failed!        *****
**** You can potentially rescue this instance by attaching  *****
**** A volume labeled '${label}' and rebooting.             *****
**** If the initramfs sees such a volume, it will attempt   *****
**** to boot off of it.                                     *****
EOF
	fi
	rm "${0}"
	exit 1
}
cleanup() {
	[ -z "${UMOUNT}" ] || umount "${UMOUNT}"
	[ -z "${MP}" -o ! -d "${MP}" ] || rmdir "${MP}"
}

PREREQS=""
case $1 in
    prereqs) echo "${PREREQS}"; exit 0;;
esac

. /scripts/functions

# basic setup
MP=/tmp/rescue_mp
mkdir -p "${MP}"
trap cleanup EXIT

[ "$1" = "mountfail" ] && { mountfail "${RESCUE_LABEL}"; exit; }

add_mountroot_fail_hook

hasvol "${RESCUE_LABEL}" "${init:-/sbin/init}" || exit 0
cat > /conf/param.conf <<EOF
init=${_RET_INIT}
ROOT=${_RET_DEV}
EOF

echo "====== Booting RESCUEVOL from ${_RET_DEV} init=${_RET_INIT} ======"

exit 0

# vi: ts=4 noexpandtab