Bug 5176 - All qemu and BSPs fail to boot via nfs with 1.5 M5 rc1 build
Summary: All qemu and BSPs fail to boot via nfs with 1.5 M5 rc1 build
Status: VERIFIED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: connectivity (show other bugs)
Version: 1.5
Hardware: x86 Multiple
: Medium+ major
Target Milestone: 1.5 M5
Assignee: Jukka Rissanen
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2013-09-13 06:00 UTC by Yi Zhao
Modified: 2013-10-17 11:09 UTC (History)
9 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: Don't know


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Yi Zhao 2013-09-13 06:00:11 UTC
Image location: http://autobuilder.yoctoproject.org/pub/releases/1.5_M5.rc1/
Git rev: master/566ca1e4769b4ec7e3f6c6a98bb817db2221cf82

All qemu and BSPs can not boot up via nfs.
Steps:
1. For qemu:
   $ runqemu-extract-sdk core-image-sato-sdk-qemumips.rootfs.tar.bz2 rootfs
   $ runqemu nfs vmlinux.bin rootfs
2. For BSPs:
   Boot up the system with NFS.

The boot process hangs after the connection manager (connmand) start up:

###############
...
INIT: version 2.88 booting
Error, no support currently for 8 bpp frame buffers
Trying to change pixel format...
Error, failed to switch to a 32 bpp 8,8,8 frame buffer
Switched to a 16 bpp 5,6,5 frame buffer
Starting udev
udevd[65]: starting version 182
piix4_smbus 0000:00:0a.3: SMBus Host Controller at 0x1100, revision 0
Starting Bootlog daemon: bootlogd.
Populating dev cache
ALSA: Restoring mixer settings...
/usr/sbin/alsactl: load_state:1729: No soundcards found...
Configuring network interfaces... done.
Starting rpcbind daemon...done.
hwclock: can't open '/dev/misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Starting system message bus: dbus.
Starting Connection Manager
Starting OpenBSD Secure Shell server: sshd
  generating ssh RSA key...
Bad SWSTYLE=0x04
nfs: server 192.168.7.1 not responding, still trying

############
Comment 1 Yi Zhao 2013-09-13 06:24:40 UTC
This issue is introduced by the commit:c73487302270a7c2d3bbbb191ce1dd63ee2016dc

diff --git a/meta/recipes-connectivity/connman/connman/connman b/meta/recipes-connectivity/connman/connman/connman
index 67ba7c8..2625ade 100644
--- a/meta/recipes-connectivity/connman/connman/connman
+++ b/meta/recipes-connectivity/connman/connman/connman
@@ -29,8 +29,18 @@ done
 do_start() {
        EXTRA_PARAM=""
        if test $nfsroot -eq 1 ; then
-               ethn=`ifconfig | grep eth | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
-               EXTRA_PARAM="-I $ethn"
+           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 [ x$NET_ADDR != x ]; then
+               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
        if [ -f @LIBDIR@/connman/wired-setup ] ; then
                . @LIBDIR@/connman/wired-setup


This patch can not get the correct NET_ADDR, so the connman doesn't ignore the interface which is used by NFS root.

Furthermore, this patch can not deal with NFS dhcp method like below:
# cat /proc/cmdline 
root=/dev/nfs rw nfsroot=128.224.159.157:/export/pxeboot/rootfs ip=dhcp console=ttyS0,115200 diufb=15M video=fslfb:800x600-24@60,monitor=1 tty0 debug cache-sram=0xfff00000,0x8000
Comment 2 Richard Purdie 2013-09-19 14:53:48 UTC
Fixed in master with http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=42ef04b3648f4e29ed130ff8e37800f5aac44b15, would appreciate QA verifying this.
Comment 3 Alexandru Georgescu 2013-10-17 11:09:27 UTC
verified.