aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs
blob: e67ee4c25d3437e5a6627932a37c65e34b724375 (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
#!/bin/sh

nfsrootfs_enabled() {
	if [ ${bootparam_root} != "/dev/nfs" ] || [ -z ${bootparam_nfsroot} ]; then
		return 1
	fi
	return 0
}

nfsrootfs_run() {
	local nfs_opts
	local location
	local flags
	local server_ip

	nfs_opts=""
	if [ "${bootparam_nfsroot#*,}" != "${bootparam_nfsroot}" ]; then
		nfs_opts="-o ${bootparam_nfsroot#*,}"
	fi

	location="${bootparam_nfsroot%%,*}"
	if [ "${location#*:}" = "${location}" ]; then
		# server-ip not given. Get server ip from ip option
		server_ip=""
		if [ "${bootparam_ip#*:}" != "${bootparam_ip}" ]; then
			server_ip=$(echo "$bootparam_ip" | cut -d: -f2)
		fi

		if [ -z "$server_ip" ]; then
			fatal "Server IP is not set. Update ip or nfsroot options."
		fi
		location=${server_ip}:${location}
	fi

	flags="-o nolock"
	if [ -n "$bootparam_ro" ] && ! echo "$bootparam_rootflags" | grep -w -q "ro"; then
		if [  -n "$bootparam_rootflags" ]; then
			bootparam_rootflags="$bootparam_rootflags,"
		fi
		bootparam_rootflags="${bootparam_rootflags}ro"
	fi
	if [ -n "$bootparam_rootflags" ]; then
		flags="$flags -o $bootparam_rootflags"
	fi

	mount -t nfs ${flags} ${nfs_opts} ${location} ${ROOTFS_DIR}
}