Booting BBB over tftp and NFS

340 views
Skip to first unread message

Sherman Boyd

unread,
Jul 17, 2015, 6:32:18 PM7/17/15
to beagl...@googlegroups.com
Hello.  I'm working on getting the BBB booting over network, for our CI testbench.  I've got it booting the kernel over tftp:

setenv autoload no
setenv bootdelay
2
setenv ipaddr
192.168.0.2
setenv gatewayip
192.168.0.1
setenv netmask
255.255.255.0
setenv serverip
162.x.x.x

tftp
0x80300000 /boot/one/vmlinuz-3.8.13-bone70
tftp
0x81600000 /boot/one/initrd.img-3.8.13-bone70
setenv initrd_size $
{filesize}
tftp
0x815f0000 /boot/one/am335x-boneblack.dtb
setenv bootargs
'console=ttyO0,115200n8 root=/dev/nfs nfsroot=162.x.x.x:/root/one ip=192.168.0.2:162.x.x.x:192.168.0.1:255.255.255.0:one:eth0:off quiet init=/lib/systemd/systemd'
bootz
0x80300000 0x81600000:${initrd_size} 0x815f0000

but connecting to the NFS root filesystem times out:

Starting kernel ...


Uncompressing Linux... done, booting the kernel.
[    0.354449] omap2_mbox_probe: platform not supported
[    0.509602] tps65217-bl tps65217-bl: no platform data provided
[    0.572862] bone-capemgr bone_capemgr.9: slot #0: No cape found
[    0.609972] bone-capemgr bone_capemgr.9: slot #1: No cape found
[    0.647079] bone-capemgr bone_capemgr.9: slot #2: No cape found
[    0.684188] bone-capemgr bone_capemgr.9: slot #3: No cape found
[    0.699936] bone-capemgr bone_capemgr.9: slot #6: BB-BONELT-HDMIN conflict P8.45 (#5:BB-BONELT-HDMI)
[    0.709504] bone-capemgr bone_capemgr.9: slot #6: Failed verification
[    0.716242] bone-capemgr bone_capemgr.9: loader: failed to load slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[    0.732702] omap_hsmmc mmc.5: of_parse_phandle_with_args of 'reset' failed
[    0.795795] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.8
[    0.807478] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.8) status -22
[    0.814753] pinctrl-single 44e10800.pinmux: could not request pin 21 on device pinctrl-single
[    1.034056] libphy: PHY 4a101000.mdio:01 not found
[    1.039123] net eth0: phy 4a101000.mdio:01 not found on slave 1
Loading, please wait...
IP
-Config: eth0 hardware address d0:5f:b8:fa:42:dd mtu 1500
IP
-Config: eth0 guessed broadcast address 192.168.0.255
IP
-Config: eth0 complete:
 address
: 192.168.0.2      broadcast: 192.168.0.255    netmask: 255.255.255.0
 gateway
: 192.168.0.1      dns0     : 0.0.0.0          dns1   : 0.0.0.0
 host  
: one
 rootserver
: 162.x.x.x rootpath:
 filename  
:
connect
: Connection timed out
connect
: Connection timed out
connect
: Connection timed out

It's timing out, but under DHCP it doesn't even get that far.  It doesn't list the "rootpath" so I wonder if that got passed to the kernel?

Here is the exports file on the server:

/tftpboot/root/one 162.x.x.x/28(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

I can mount the nfs share on another device:

root@beaglebone:/# mount 162.x.x.x:/ /mnt
root@beaglebone
:/# cd /mnt/
root@beaglebone
:/mnt# ls
tftpboot


I'm not sure what to try next.  Any ideas?

Robert Nelson

unread,
Jul 17, 2015, 6:52:50 PM7/17/15
to Beagle Board
On Fri, Jul 17, 2015 at 5:32 PM, Sherman Boyd <sherma...@gmail.com> wrote:
> Hello. I'm working on getting the BBB booting over network, for our CI
> testbench. I've got it booting the kernel over tftp:
>
> setenv autoload no
> setenv bootdelay 2
> setenv ipaddr 192.168.0.2
> setenv gatewayip 192.168.0.1
> setenv netmask 255.255.255.0
> setenv serverip 162.x.x.x
>
> tftp 0x80300000 /boot/one/vmlinuz-3.8.13-bone70
> tftp 0x81600000 /boot/one/initrd.img-3.8.13-bone70
> setenv initrd_size ${filesize}
> tftp 0x815f0000 /boot/one/am335x-boneblack.dtb
> setenv bootargs 'console=ttyO0,115200n8 root=/dev/nfs
> nfsroot=162.x.x.x:/root/one
> ip=192.168.0.2:162.x.x.x:192.168.0.1:255.255.255.0:one:eth0:off quiet
> init=/lib/systemd/systemd'
> bootz 0x80300000 0x81600000:${initrd_size} 0x815f0000
>
> but connecting to the NFS root filesystem times out:

Drop the initrd & init=/lib/systemd/systemd...

Regards,

--
Robert Nelson
https://rcn-ee.com/

Sherman Boyd

unread,
Jul 17, 2015, 8:53:33 PM7/17/15
to beagl...@googlegroups.com
I changed bootargs to:

setenv bootargs 'console=ttyO0,115200n8 quiet root=/dev/nfs nfsroot=162.218.156.29:/tftpboot/root/one rw ip=192.168.0.2:162.218.156.29:192.168.0.1:255.255.255.0:one:eth0:off'

the salient difference being 'rw' after nfsroot and adding /tftpboot to the path and it's booting now, although the fsck check fails:

INIT: version 2.88 booting
[info] Using makefile-style concurrent boot in runlevel S.
findfs
: unable to resolve 'UUID=44c824c2-262c-4b4f-8d31-c9b5aec1eed2'
[ ok ] Starting the hotplug events dispatcher: udevd.
[ ok ] Synthesizing the initial hotplug events...done.
[ ok ] Waiting for /dev to be fully populated...done.
findfs
: unable to resolve 'UUID=44c824c2-262c-4b4f-8d31-c9b5aec1eed2'
[ ok ] Activating swap...done.
Usage: mountpoint [-q] [-d] [-x] path
[....] Checking root file system...fsck from util-linux 2.20.1
fsck
.ext4: No such device or address while trying to open /run/rootdev
Possibly non-existent or swap device?
fsck died
with exit status 8
failed
(code 8).
[....] An automatic file system check (fsck) of the root filesystem failed. A manual fsck must be performed, then the system restarted. The fsck should be performed in maintenance mo[FAILth the root filesystem mounted in read-only mode. ... failed!
[....] The root filesystem is currently mounted in read-only mode. A maintenance shell will now be started. After performing system maintenance, press CONTROL-D to terminate the main[warnce shell and restart the system. ... (warning).
Give root password for maintenance
(or type Control-D to continue):

When you say say drop initrd, you mean?:

tftp 0x81600000 /boot/one/initrd.img-3.8.13-bone70

When I don't load that bootz gives me a corrupt image error.  I probably don't understand the bootz command, I've been looking for documention on it and haven't found any.  I tried 

bootz 0x80300000 0x815f0000

To load the zImage and the ftd.  But I'm not sure what bootz expects. 

I also saw this parameter, and wondered if I should point it at systemd:

rdinit=<executable file>

  To specify which file contains the program that starts system
  initialization, administrators can use this command line parameter.
  The default value of this parameter is "/init".  If the specified
  file exists and the kernel can execute it, root filesystem related
  kernel command line parameters, including `nfsroot=', are ignored.

Thanks for the help.

Robert Nelson

unread,
Jul 17, 2015, 9:03:36 PM7/17/15
to Beagle Board
Clean out your /etc/fstab.. Then only thing you need in their when
doing nfs root. is:

debugfs /sys/kernel/debug debugfs defaults 0 0


> When you say say drop initrd, you mean?:
>
> tftp 0x81600000 /boot/one/initrd.img-3.8.13-bone70
>
> When I don't load that bootz gives me a corrupt image error. I probably
> don't understand the bootz command, I've been looking for documention on it
> and haven't found any. I tried
>
> bootz 0x80300000 0x815f0000

Just replace the initrd address with a "-"

bootz zImage initrd ftd -> bootz zImage - ftd

Sherman Boyd

unread,
Jul 17, 2015, 10:05:42 PM7/17/15
to beagl...@googlegroups.com
That did the trick!  Thank you so much.  I cleared fstab like you said.  It hung on DHCP, but that makes sense.  I configured interfaces to match the kernel options and it booted fine, network is working.  For posterity the winning recipe was:

setenv autoload no
setenv bootdelay 2
setenv ipaddr 192.168.0.2
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv serverip 162.x.x.x

tftp 0x80300000 /boot/one/vmlinuz-3.8.13-bone70
tftp 0x815f0000 /boot/one/am335x-boneblack.dtb
setenv bootargs 'console=ttyO0,115200n8 quiet root=/dev/nfs nfsroot=162.x.x.x:/tftpboot/root/one rw ip=192.168.0.2:162.x.x.x:192.168.0.1:255.255.255.0:one:eth0:off'
bootz 0x80300000 - 0x815f0000
Reply all
Reply to author
Forward
0 new messages