summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleksii Konoplitskyi <okonopli@cisco.com>2018-05-25 16:56:48 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-07-09 22:48:39 +0100
commitf94c0c8e6fd2e730ead43c553bffe8014dec7710 (patch)
tree64298cfb1b4b50964afaf97026eec39f7f48ff32
parentcfd0c39fbf611ed428c0fe8dc39bd61081ff664e (diff)
downloadpoky-f94c0c8e6fd2e730ead43c553bffe8014dec7710.tar.gz
initramfs-framework: add nfsrootfs module
nfsrootfs module mounts rootfs via nfs parsing "nfsroot" and "ip" cmdline options. (From OE-Core rev: d1737f2dabac5e338061863c78a91b4c115365c7) Signed-off-by: Oleksii Konoplitskyi <okonopli@cisco.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs48
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb7
2 files changed, 55 insertions, 0 deletions
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs b/meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs
new file mode 100644
index 0000000000..e67ee4c25d
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs
@@ -0,0 +1,48 @@
1#!/bin/sh
2
3nfsrootfs_enabled() {
4 if [ ${bootparam_root} != "/dev/nfs" ] || [ -z ${bootparam_nfsroot} ]; then
5 return 1
6 fi
7 return 0
8}
9
10nfsrootfs_run() {
11 local nfs_opts
12 local location
13 local flags
14 local server_ip
15
16 nfs_opts=""
17 if [ "${bootparam_nfsroot#*,}" != "${bootparam_nfsroot}" ]; then
18 nfs_opts="-o ${bootparam_nfsroot#*,}"
19 fi
20
21 location="${bootparam_nfsroot%%,*}"
22 if [ "${location#*:}" = "${location}" ]; then
23 # server-ip not given. Get server ip from ip option
24 server_ip=""
25 if [ "${bootparam_ip#*:}" != "${bootparam_ip}" ]; then
26 server_ip=$(echo "$bootparam_ip" | cut -d: -f2)
27 fi
28
29 if [ -z "$server_ip" ]; then
30 fatal "Server IP is not set. Update ip or nfsroot options."
31 fi
32 location=${server_ip}:${location}
33 fi
34
35 flags="-o nolock"
36 if [ -n "$bootparam_ro" ] && ! echo "$bootparam_rootflags" | grep -w -q "ro"; then
37 if [ -n "$bootparam_rootflags" ]; then
38 bootparam_rootflags="$bootparam_rootflags,"
39 fi
40 bootparam_rootflags="${bootparam_rootflags}ro"
41 fi
42 if [ -n "$bootparam_rootflags" ]; then
43 flags="$flags -o $bootparam_rootflags"
44 fi
45
46 mount -t nfs ${flags} ${nfs_opts} ${location} ${ROOTFS_DIR}
47}
48
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index 75d965f069..6337b998ac 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
@@ -9,6 +9,7 @@ inherit allarch
9 9
10SRC_URI = "file://init \ 10SRC_URI = "file://init \
11 file://exec \ 11 file://exec \
12 file://nfsrootfs \
12 file://rootfs \ 13 file://rootfs \
13 file://finish \ 14 file://finish \
14 file://mdev \ 15 file://mdev \
@@ -24,6 +25,7 @@ do_install() {
24 25
25 # base 26 # base
26 install -m 0755 ${WORKDIR}/init ${D}/init 27 install -m 0755 ${WORKDIR}/init ${D}/init
28 install -m 0755 ${WORKDIR}/nfsrootfs ${D}/init.d/85-nfsrootfs
27 install -m 0755 ${WORKDIR}/rootfs ${D}/init.d/90-rootfs 29 install -m 0755 ${WORKDIR}/rootfs ${D}/init.d/90-rootfs
28 install -m 0755 ${WORKDIR}/finish ${D}/init.d/99-finish 30 install -m 0755 ${WORKDIR}/finish ${D}/init.d/99-finish
29 31
@@ -53,6 +55,7 @@ PACKAGES = "${PN}-base \
53 initramfs-module-mdev \ 55 initramfs-module-mdev \
54 initramfs-module-udev \ 56 initramfs-module-udev \
55 initramfs-module-e2fs \ 57 initramfs-module-e2fs \
58 initramfs-module-nfsrootfs \
56 initramfs-module-rootfs \ 59 initramfs-module-rootfs \
57 initramfs-module-debug \ 60 initramfs-module-debug \
58 " 61 "
@@ -83,6 +86,10 @@ SUMMARY_initramfs-module-e2fs = "initramfs support for ext4/ext3/ext2 filesystem
83RDEPENDS_initramfs-module-e2fs = "${PN}-base" 86RDEPENDS_initramfs-module-e2fs = "${PN}-base"
84FILES_initramfs-module-e2fs = "/init.d/10-e2fs" 87FILES_initramfs-module-e2fs = "/init.d/10-e2fs"
85 88
89SUMMARY_initramfs-module-nfsrootfs = "initramfs support for locating and mounting the root partition via nfs"
90RDEPENDS_initramfs-module-nfsrootfs = "${PN}-base"
91FILES_initramfs-module-nfsrootfs = "/init.d/85-nfsrootfs"
92
86SUMMARY_initramfs-module-rootfs = "initramfs support for locating and mounting the root partition" 93SUMMARY_initramfs-module-rootfs = "initramfs support for locating and mounting the root partition"
87RDEPENDS_initramfs-module-rootfs = "${PN}-base" 94RDEPENDS_initramfs-module-rootfs = "${PN}-base"
88FILES_initramfs-module-rootfs = "/init.d/90-rootfs" 95FILES_initramfs-module-rootfs = "/init.d/90-rootfs"