Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Dec 2012 20:07:02 +0100
From:      "Ronald Klop" <ronald-freebsd8@klop.yi.org>
To:        freebsd-arm@freebsd.org
Subject:   Re: sheevaplug boot from nandfs hangs
Message-ID:  <op.wpdgp0k98527sy@212-182-167-131.ip.telfort.nl>
In-Reply-To: <1355595537.1198.72.camel@revolution.hippie.lan>
References:  <op.wo8dciyp8527sy@212-182-167-131.ip.telfort.nl> <1355364418.87661.489.camel@revolution.hippie.lan> <op.wpc9v5ew8527sy@212-182-167-131.ip.telfort.nl> <op.wpdc7xlc8527sy@212-182-167-131.ip.telfort.nl> <1355595537.1198.72.camel@revolution.hippie.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 15 Dec 2012 19:18:57 +0100, Ian Lepore  
<freebsd@damnhippie.dyndns.org> wrote:

> On Sat, 2012-12-15 at 18:51 +0100, Ronald Klop wrote:
>> On Sat, 15 Dec 2012 17:39:31 +0100, Ronald Klop
>> <ronald-freebsd8@klop.yi.org> wrote:
>>
>> > On Thu, 13 Dec 2012 03:06:58 +0100, Ian Lepore
>> > <freebsd@damnhippie.dyndns.org> wrote:
>> >
>> >> On Thu, 2012-12-13 at 02:06 +0100, Ronald Klop wrote:
>> >>> Hello,
>> >>>
>> >>> I succeeded in installing and booting my kernel (SHEEVAPLUG  
>> 10-current
>> >>>  from 22 nov.) from nandfs. I followed all the advise at
>> >>> http://wiki.freebsd.org/NAND. But the rootfs will not mount/start.
>> >>>
>> >>> The end of the bootinfo is this:
>> >>> cryptosoft0: <software crypto>
>> >>> Timecounters tick every 1.000 msec
>> >>> ipfw2 initialized, divert loadable, nat loadable, default to accept,
>> >>> logging disabled
>> >>> usbus0: 480Mbps High Speed USB v2.0
>> >>> ugen0.1: <Marvell> at usbus0
>> >>> uhub0: <Marvell EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on
>> >>> usbus0
>> >>> uhub0: 1 port with 1 removable, self powered
>> >>> Root mount waiting for: usbus0
>> >>> ugen0.2: <USB 2.0> at usbus0
>> >>> umass0: <USB 2.0 USB Flash Drive, class 0/0, rev 2.00/11.00, addr  
>> 2> on
>> >>> usbus0
>> >>> umass0:  SCSI over Bulk-Only; quirks = 0x4000
>> >>> umass0:0:0:-1: Attached to scbus0
>> >>> Trying to mount root from nandfs:/dev/gnand0s.root []...
>> >>> WARNING: NANDFS is considered to be a highly experimental feature in
>> >>> FreeBSD.
>> >>> (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 0 0 0 24 0
>> >>> (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an
>> >>> error
>> >>> (probe0:umass-sim0:0:0:0): Retrying command
>> >>> da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
>> >>> da0: <USB 2.0 USB Flash Drive 1100> Removable Direct Access SCSI-0
>> >>> device
>> >>> da0: 40.000MB/s transfers
>> >>> da0: 3894MB (7975296 512 byte sectors: 255H 63S/T 496C)
>> >>>
>> >>> The kernel is responsive because if I remove or insert the usb  
>> stick it
>> >>> displays messages about it. (Not shown above)
>> >>> I'm connected via serial. What could be wrong? What information can  
>> I
>> >>> give
>> >>> more?
>> >>> I installed /dev/gnand0s.root by tarring the content of / on my usb
>> >>> stick
>> >>> to the mounted /dev/gnand0s.root. That looked ok.
>> >>>
>> >>> Regards,
>> >>> Ronald.
>> >>
>> >> Hmm, so the root mount happens, but init never gets started, or never
>> >> gets far enough to show signs of being started.  Mounting root is
>> >> invoked from sys/kern/init_main.c, I guess what I'd do next is add  
>> some
>> >> printfs in there to see if vfs_mountroot() is returning and if so how
>> >> much farther it gets.
>> >>
>> >> Hmmm, if your kernel is built with ALT_BREAK_TO_DEBUGGER then on the
>> >> serial console maybe you can CR ~ ^B and poke around.  Hmmm, or maybe
>> >> not, because I just tried that on my dreamplug and it just spewed  
>> this
>> >> many times:
>> >>
>> >> root@dpcur:/root # ~KDB: enter: Break to debugger
>> >> [ thread pid 10 tid 100002 ]
>> >> Stopped at      kdb_enter+0x48:panic: mtx_lock() by idle thread
>> >> 0xc3593c00 on sleep mutex pmap @
>> >> /local/build/staging/freebsd/dp10/src/sys/arm/arm/pmap.c:3662
>> >> panic: mtx_lock() by idle thread 0xc3593c00 on sleep mutex  
>> eventhandler
>> >> @  
>> /local/build/staging/freebsd/dp10/src/sys/kern/subr_eventhandler.c:251
>> >> KDB: enter: panic
>> >>
>> >> and apparently recursed until it ran out of stack and locked up.
>> >>
>> >> So I guess it'll be printf-debugging to the rescue. :)
>> >>
>> >> I can confirm that this should be working.  I've got a similar setup
>> >> going on Atmel arm chips, although I haven't sync'd up with -current  
>> for
>> >> a while, I'm at r241077 on that project.  Right now I still load the
>> >> kernel from sdcard but root gets mounted from the nand and the system
>> >> runs.  Performance is horrible (this is a low end arm, 180mhz), but  
>> it
>> >> works.
>> >>
>> >>
>> >> nand0: <AT91 Integrated NAND controller> mem 0xe0000000-0xefffffff on
>> >> atmelarm0
>> >> nandbus0: <NAND bus> on nand0
>> >> onand0: <ONFI compliant NAND> on nandbus0
>> >> onand0: Found BBT table for chip
>> >> Timecounters tick every 10.000 msec
>> >> usbus0: 12Mbps Full Speed USB v1.0
>> >> ugen0.1: <Atmel> at usbus0
>> >> uhub0: <Atmel OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on  
>> usbus0
>> >> mmcsd0: 1876MB <SD SU02G 8.0 SN 3406901 MFG 09/2010 by 48 SD> at mmc0
>> >> 22.5MHz/1bit/64-block
>> >> Root mount waiting for: usbus0
>> >> uhub0: 2 ports with 2 removable, self powered
>> >> Root mount waiting for: usbus0
>> >> ugen0.2: <Novatel Inc.> at usbus0
>> >> Root mount waiting for: usbus0
>> >> Root mount waiting for: usbus0
>> >> ugen0.3: <Unknown> at usbus0 (disconnected)
>> >> Trying to mount root from nandfs:/dev/gnand0s.root []...
>> >> WARNING: NANDFS is considered to be a highly experimental feature in
>> >> FreeBSD.
>> >> warning: no time-of-day clock registered, system time will not be set
>> >> accurately
>> >> Starting file system checks:
>> >>
>> >> -- Ian
>> >
>> > Hi,
>> >
>> > Thanks for the hint. Compiling a new kernel with printf now. I saw
>> > bootverbose also prints more information. How do I enable that on ARM
>> > from the bootprompt?
>> > NB: break to debugger works on my Sheevaplug. But I am not familiar  
>> with
>> > its commands to see what it is doing. Can I force a coredump and would
>> > somebody be interested to look at it?
>> >
>> > Ronald.
>>
>> I also defaulted bootverbose to 1 in init_main.c. Now I get this.
>>
>> ipfw2 initialized, divert loadable, nat loadable, default to accept,
>> logging disabled
>> lo0: bpf attached
>> GEOM: new disk gnand0
>> GEOM: new disk gnand.raw0
>> usbus0: 480Mbps High Speed USB v2.0
>> gnand0: slice 00000000-001fffff: u-boot (2047KB)
>> gnand0: slice 00200000-007fffff: fbsd-boot (6143KB)
>> gnand0: slice 00800000-1fffffff: root (516095KB)
>> ugen0.1: <Marvell> at usbus0
>> uhub0: <Marvell EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on  
>> usbus0
>> gnand.raw0: slice 00000000-001fffff: u-boot (2047KB)
>> gnand.raw0: slice 00200000-007fffff: fbsd-boot (6143KB)
>> gnand.raw0: slice 00800000-1fffffff: root (516095KB)
>> uhub0: 1 port with 1 removable, self powered
>> Trying to mount root from nandfs:/dev/gnand0s.root []...
>> WARNING: NANDFS is considered to be a highly experimental feature in
>> FreeBSD.
>> mountroot: unable to remount devfs under /dev (error 2).
>> mountroot: unable to unlink /dev/dev (error 2)
>> after vfs_mountroot()
>> start_init: trying /sbin/init
>>
>> The 'after vfs_mountroot()' is my own printf. I also verified sys_execve
>> of /sbin/init returned 0.
>> How do I go from here?
>
> Wow, this is all very familiar.  I had this exact situation a couple
> months ago as I was trying to get freebsd running on my pico-sam9g45
> eval board.  My printfs showed exactly the same thing, the execve
> returned 0, but I never got any indication that init was actually
> running, nor did it die as near as I could tell, the system just went
> comatose.
>
> I can't quite remember how I tracked down the problem from there.
>
> Oh hey, I just noticed in your verbose output, that "unable to remount
> devfs under /dev", that's significant.  init has this annoying tendancy
> to silently lock up if it can't open devices such as serial lines that
> are mentioned in /etc/ttys (also, if /etc/ttys is missing).
>
> I'll bet you just need to create a /dev mountpoint in your nandfs and
> everything will get better.  There may be other mountpoints (/tmp, /var,
> etc) that didn't get created properly too.
>
> -- Ian

Thank you for your sharp eyes! /dev was missing.
When I did tar cf - | tar xf - to copy world from usb disk to nandfs I  
already had some kind of feeling I was overlooking something.

root@sh10:~ # mount
/dev/gnand0s.root on / (nandfs, local)
devfs on /dev (devfs, local)

Ronald.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?op.wpdgp0k98527sy>