summaryrefslogtreecommitdiff
path: root/scripts/boot/9990-mount-iscsi.sh
blob: 6ce9851049ed046c878aa6826e8dd1f7f5fc361a (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
#!/bin/sh

#set -e

do_iscsi()
{
	do_netsetup
	#modprobe ib_iser
	modprobe iscsi_tcp
	local debugopt
	debugopt=""
	[ "${DEBUG}" = "true" ] && debugopt="-d 8"
	#FIXME this name is supposed to be unique - some date + ifconfig hash?
	ISCSI_INITIATORNAME="iqn.1993-08.org.debian.live:01:$(echo "${HWADDR}" | sed -e s/://g)"
	export ISCSI_INITIATORNAME
	if [ -n "${ISCSI_SERVER}" ] ; then
		iscsistart $debugopt -i "${ISCSI_INITIATORNAME}" -t "${ISCSI_TARGET}" -g 1 -a "${ISCSI_SERVER}" -p "${ISCSI_PORT}"
	else
		iscsistart $debugopt -i "${ISCSI_INITIATORNAME}" -t "${ISCSI_TARGET}" -g 1 -a "${ISCSI_PORTAL}" -p 3260
	fi
	if [ $? != 0 ]
	then
		panic "Failed to log into iscsi target"
	fi
	local host
	host="$(ls -d /sys/class/scsi_host/host*/device/iscsi_host:host* \
		      /sys/class/scsi_host/host*/device/iscsi_host/host* | sed -e 's:/device.*::' -e 's:.*host::')"
	if [ -n "${host}" ]
	then
		local devices i
		devices=""
		i=0
		while [ -z "${devices}" -a $i -lt 60 ]
		do
			sleep 1
			devices="$(ls -d /sys/class/scsi_device/${host}*/device/block:* \
					 /sys/class/scsi_device/${host}*/device/block/* | sed -e 's!.*[:/]!!')"
			i=$(expr $i + 1)
			echo -ne $i\\r
		done
		for dev in $devices
		do
			if check_dev "null" "/dev/$dev"
			then
				NETBOOT="iscsi"
				export NETBOOT
				return 0;
			fi
		done
		panic "Failed to locate a live device on iSCSI devices (tried: $devices)."
	else
		panic "Failed to locate iSCSI host in /sys"
	fi
}