From: <rongqing.li@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: [PATCH] connman: ignore the networking device which nfs for rootfs is working on
Date: Thu, 17 Oct 2013 16:12:45 +0800 [thread overview]
Message-ID: <1381997565-10172-1-git-send-email-rongqing.li@windriver.com> (raw)
From: Roy Li <rongqing.li@windriver.com>
Create connmand-nfs.service, which will run a script to ignore the
networking device when root is nfs.
Connmand-nfs.service will be run only when root is not nfs
Signed-off-by: Roy Li <rongqing.li@windriver.com>
---
meta/recipes-connectivity/connman/connman.inc | 17 +++++---
.../connman/connman/connmand-nfs | 42 ++++++++++++++++++++
.../connman/connman/nfs-connman.service | 15 +++++++
meta/recipes-connectivity/connman/connman_1.17.bb | 2 +
4 files changed, 70 insertions(+), 6 deletions(-)
create mode 100644 meta/recipes-connectivity/connman/connman/connmand-nfs
create mode 100644 meta/recipes-connectivity/connman/connman/nfs-connman.service
diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc
index 37ce3ec..ebfef35 100644
--- a/meta/recipes-connectivity/connman/connman.inc
+++ b/meta/recipes-connectivity/connman/connman.inc
@@ -64,7 +64,7 @@ python __anonymous () {
d.setVar('SYSTEMD_PACKAGES', systemd_packages)
}
-SYSTEMD_SERVICE_${PN} = "connman.service"
+SYSTEMD_SERVICE_${PN} = "connman.service nfs-connman.service"
SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service"
SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"
@@ -84,10 +84,15 @@ do_compile_append() {
}
do_install_append() {
- if ${@base_contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman
- sed -i s%@LIBDIR@%${libdir}% ${D}${sysconfdir}/init.d/connman
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman
+ sed -i s%@LIBDIR@%${libdir}% ${D}${sysconfdir}/init.d/connman
+
+ if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -m 0755 ${WORKDIR}/connmand-nfs ${D}${sbindir}/
+ install -m 0644 ${WORKDIR}/nfs-connman.service ${D}/${systemd_unitdir}/system/
+ sed -i "3 i ConditionKernelCommandLine=!root=/dev/nfs" \
+ ${D}${systemd_unitdir}/system/connman.service
fi
install -d ${D}${bindir}
@@ -165,7 +170,7 @@ FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \
${libdir}/connman/plugins \
${sysconfdir} ${sharedstatedir} ${localstatedir} \
${base_bindir}/* ${base_sbindir}/* ${base_libdir}/*.so* ${datadir}/${PN} \
- ${datadir}/dbus-1/system-services/*"
+ ${datadir}/dbus-1/system-services/* ${systemd_unitdir}/system/nfs-connman.service"
FILES_${PN}-dbg += "${libdir}/connman/*/.debug"
diff --git a/meta/recipes-connectivity/connman/connman/connmand-nfs b/meta/recipes-connectivity/connman/connman/connmand-nfs
new file mode 100644
index 0000000..1058787
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman/connmand-nfs
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+nfsroot=0
+
+exec 9<&0 < /proc/mounts
+while read dev mtpt fstype rest; do
+ if test $mtpt = "/" ; then
+ case $fstype in
+ nfs | nfs4)
+ nfsroot=1
+ break
+ ;;
+ *)
+ ;;
+ esac
+ fi
+done
+
+EXTRA_PARAM=""
+if test $nfsroot -eq 1 ; then
+ NET_DEVS=`cat /proc/net/dev | sed -ne 's/^\([a-zA-Z0-9 ]*\):.*$/\1/p'`
+ NET_ADDR=`cat /proc/cmdline | sed -ne 's/^.*ip=\([^ :]*\).*$/\1/p'`
+
+ if [ ! -z "$NET_ADDR" ]; then
+ if [ "$NET_ADDR" = dhcp ]; then
+ ethn=`ifconfig | grep "^eth" | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
+ if [ ! -z "$ethn" ]; then
+ EXTRA_PARAM="-I $ethn"
+ fi
+ else
+ for i in $NET_DEVS; do
+ ADDR=`ifconfig $i | sed 's/addr://g' | sed -ne 's/^.*inet \([0-9.]*\) .*$/\1/p'`
+ if [ "$NET_ADDR" = "$ADDR" ]; then
+ EXTRA_PARAM="-I $i"
+ break
+ fi
+ done
+ fi
+ fi
+fi
+
+/usr/sbin/connmand -n $EXTRA_PARAM
diff --git a/meta/recipes-connectivity/connman/connman/nfs-connman.service b/meta/recipes-connectivity/connman/connman/nfs-connman.service
new file mode 100644
index 0000000..1cb82b8
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman/nfs-connman.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Connection service when root is /dev/nfs
+ConditionKernelCommandLine=root=/dev/nfs
+After=syslog.target
+
+[Service]
+Type=dbus
+BusName=net.connman
+Restart=on-failure
+ExecStartPre=-/usr/lib64/connman/wired-setup
+ExecStart=/bin/sh /usr/sbin/connmand-nfs
+StandardOutput=null
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/connman/connman_1.17.bb b/meta/recipes-connectivity/connman/connman_1.17.bb
index 461157f..9e8112c 100644
--- a/meta/recipes-connectivity/connman/connman_1.17.bb
+++ b/meta/recipes-connectivity/connman/connman_1.17.bb
@@ -4,6 +4,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
file://add_xuser_dbus_permission.patch \
file://connman \
+ file://connmand-nfs \
+ file://nfs-connman.service \
"
SRC_URI[md5sum] = "dd4a13f789de1b69fcddf0cf613f2d5b"
--
1.7.10.4
next reply other threads:[~2013-10-17 8:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-17 8:12 rongqing.li [this message]
2013-10-17 8:24 ` [PATCH] connman: ignore the networking device which nfs for rootfs is working on Rongqing Li
2013-10-17 10:14 ` Koen Kooi
-- strict thread matches above, loose matches on Subject: below --
2013-10-18 9:20 rongqing.li
2013-10-15 8:12 rongqing.li
2013-10-15 10:10 ` Koen Kooi
2013-10-16 0:46 ` Rongqing Li
2013-10-16 8:54 ` Koen Kooi
2013-10-16 9:10 ` Rongqing Li
2013-10-16 9:13 ` Koen Kooi
2013-10-16 10:08 ` Enrico Scholz
2013-10-17 3:29 ` Rongqing Li
2013-10-17 10:34 ` Enrico Scholz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1381997565-10172-1-git-send-email-rongqing.li@windriver.com \
--to=rongqing.li@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox