tftp and NFS booting on Beagle Bone Black Wireless and Pocket Beagle

BeagleBoneBlack Wireless board  booting through tftp and NFS
BeagleBoneBlack Wireless board booting through tftp and NFS

Here are details about booting the Beagle Bone Black Wireless board through NFS. I’m writing this here because it doesn’t seem to be documented anywhere else (except in our Linux kernel and driver development course, for which I had to support this feature).

Why

Booting a board on a root filesystem that is a directory on your workstation (development PC) or on a server, shared through the network, is very convenient for development purposes.

For example, you can update kernel modules or programs by recompiling them on your PC, and the target board will immediately “see” the updates. There’s no need to transfer them in some way.

Doing this is quite straightforward on boards that have an Ethernet port, and well documented throughout the Internet (see our instructions). However, things get more complicated with boards that have no such port, such as the Beagle Bone Black Wireless or the Pocket Beagle.

The Beagle Bone Black Wireless board has WiFi support, but booting on NFS directly from the kernel (instead of using an initramfs) is another kind of challenge.

Something easier to use is networking over USB device (also called USB gadget as our operating system is running on the USB device side), which is supported by both Linux and U-Boot.

Note that the below instructions also work on the original Beagle Bone Black, bringing the convenience of not having to use an RJ45 cable. All you need is the USB device cable that you’re using for power supply too.

These instructions should also support the Pocket Beagle board, which is similar, though much simpler.

Preparing U-Boot

This part may just work out of the box if the U-Boot version on your board is recent and was built using the default configuration for your board.

If that’s not the case, you can reflash U-Boot on your board using our instructions.

Now, let’s configure networking in U-Boot:

  • ipaddr: IP address of the board
  • serverip: IP address of your PC or server
setenv ipaddr 192.168.0.100
setenv serverip 192.168.0.1

Make sure that this address belongs to a separate network segment from the one used by your PC to connect to the network.

We also need to configure Ethernet over USB device:

  • ethact: controls which interface is currently active.
  • usbnet_devaddr: MAC address on the device side
  • usbnet_hostaddr: MAC address on the host side
setenv ethact usb_ether
setenv usbnet_devaddr f8:dc:7a:00:00:02
setenv usbnet_hostaddr f8:dc:7a:00:00:01
saveenv

Note that the above MAC addresses are arbitrary.

Configure your PC

These instructions have been tested on Ubuntu 18.04, but they should be easy to adapt on other GNU/Linux distributions.

To configure your network interface on the workstation side, we need to know the name of the network interface connected to your board.

However, you won’t be able to see the network interface corresponding to the Ethernet over USB device connection yet, because it’s only active when the board turns it on, from U-Boot or from Linux. When this happens, the network interface name will be enx. Given the value we gave to usbnet_hostaddr, it will therefore be enxf8dc7a000001.

Then, instead of configuring the host IP address from NetWork Manager’s graphical interface, let’s do it through its command line interface, which is so much easier to use:

nmcli con add type ethernet ifname enxf8dc7a000001 ip4 192.168.0.1/24

To download the kernel and device tree blob which are also on your PC, let’s install a TFTP server on it:

sudo apt install tftpd-hpa

You can then test the TFTP connection, which is also a way to test that USB networking works. First, put a small text file in /var/lib/tftpboot.

Then, from U-Boot, do:

tftp 0x81000000 textfile.txt

The tftp command should have downloaded the textfile.txt file from your development workstation into the board’s RAM at location 0x81000000. You can verify that the download was successful by dumping the contents of memory:

md 0x81000000

We are now ready to load and boot a Linux kernel!

Kernel configuration

These instructions were tested with Linux 4.19

Configuring and cross-compiling the Linux kernel for the board is outside the scope of this article, but again, such information is easy to find (such as in our training slides).

Here, we’re just sharing the Linux kernel configuration settings that are needed for networking over USB device. Since they are not supported by the default configuration file for the omap2plus CPU family (for several reasons that were discussed on the Linux kernel mainling list), it took a bit of time to figure out which ones were needed. Here they are:

Add the below options to support networking over USB device:

  • CONFIG_USB_GADGET=y
  • CONFIG_USB_MUSB_HDRC=y: Driver for the USB OTG controller
  • CONFIG_USB_MUSB_GADGET=y: Use the USB OTG controller in device (gadget) mode
  • CONFIG_USB_MUSB_DSPS=y
  • Check the dependencies of CONFIG_AM335X_PHY_USB. You need to set CONFIG_NOP_USB_XCEIV=y to be able to set CONFIG_AM335X_PHY_USB=y
  • Find the ”USB Gadget precomposed configurations” menu and set it to static instead of module so that CONFIG_USB_ETH=y

How did I found out which settings were needed? I had to check the device tree to find the USB device controller. Then, using git grep, I found the driver that was supporting the corresponding compatible string. Then, looking at the Makefile in the driver directory, I found which kernel configuration settings were needed.

When compiling is over, copy the zImage and am335x-boneblack-wireless.dtb files to the TFTP server home directory (/var/lib/tftpboot).

You also need an NFS server on your workstation:

sudo apt install nfs-kernel-server

Then edit the /etc/exports file as root to add the following line, assuming that the IP address of your board will be 192.168.0.100:

/home/user/nfsroot 192.168.0.100(rw,no_root_squash,no_subtree_check)

(If you don’t have a root filesystem yet, you can use the one in our lab data archive.)

Then, restart the NFS server:

sudo /etc/init.d/nfs-kernel-server restart

Configuring the kernel command line

Back to the U-Boot command line, configure the kernel command line by setting the bootargs environment variable (all in just one line):

setenv bootargs root=/dev/nfs rw ip=192.168.0.100:::::usb0 console=ttyO0,115200n8 g_ether.dev_addr=f8:dc:7a:00:00:02 g_ether.host_addr=f8:dc:7a:00:00:01 nfsroot=192.168.0.1:/home/user/nfsroot,nfsvers=3

Also set the series of commands to run at boot time:

setenv bootcmd 'tftp 0x81000000 zImage; tftp 0x82000000 am335x-boneblack-wireless.dtb; bootz 0x81000000 - 0x82000000'
saveenv

You are ready to boot:

boot

Now check the kernel log and make sure an IP address is correctly assigned to your board by Linux. If NFS booting doesn’t work yet, that could be because of NFS server or client issues. If that’s the case, you should find details in the NFS server logs in /var/log/syslog on your PC.

Author: Michael Opdenacker

Michael Opdenacker is the founder of Bootlin, and was its CEO until 2021. He is best known for all the free embedded Linux and kernel training materials that he created together with Thomas Petazzoni. He is always looking for ways to increase performance, reduce size and boot time, and to maximize Linux' world domination. More details...

37 thoughts on “tftp and NFS booting on Beagle Bone Black Wireless and Pocket Beagle”

    1. That should be relatively easy to do with the Raspberry Pi, as we don’t have the complexity of networking over USB device. You setup the NFS server on the same way, boot your kernel with “root=/dev/nfs ip=…. nfsroot=…” and this should work.

      I’m sure you’ll find someone who has done that before.
      See https://elixir.bootlin.com/linux/latest/source/Documentation/filesystems/nfs/nfsroot.txt for the full reference.

      Happy booting 😉
      Michael.

  1. This worked!!
    I’m able to load a kernel and everything required over USB.
    one note tho, for some reason, I couldnt get ping or tftp to work after the setup directly, it started working after host restart. maybe some networking service needs to be restarted for it to catch.

  2. Hi, my beaglebone USB ethernet connection is renamed to enp0s29u1u2 but not to enx… . I think this is related to Predictable Network Interface Names.
    “””
    1. Names incorporating Firmware/BIOS provided index numbers for on-board devices (example: eno1)
    2. Names incorporating Firmware/BIOS provided PCI Express hotplug slot index numbers (example: ens1)
    3. Names incorporating physical/geographical location of the connector of the hardware (example: enp2s0)
    4. Names incorporating the interfaces’s MAC address (example: enx78e7d1ea46da)
    5. Classic, unpredictable kernel-native ethX naming (example: eth0)

    Policy 4) is not used by default, but is available if the user chooses it.
    “””
    Where can I enable policy 4?
    My host is Ubuntu 18.04.

  3. Hi, I’ve the following questions:
    1.The values of usbnet_devaddr and usbnet_hostaddr can be any arbitrary value or is it board specific.
    2. In the host PC is it necessary to have the DHCP server for the corresponding interface.

    1. Hi Gokul,
      Thanks for the questions!
      Yes, the usbnet_devaddr and usbnet_hostaddr values can be any arbitrary. I updated the text to explain this.
      No, on the PC side, you don’t need any DHCP server. Using a fixed IP address is fine. That’s what we’re setting with the “nmcli” command.
      Cheers,
      Michael.

  4. I used VirtualBox which runs ubuntu. After I run the command tftp 0x81000000 textfile.txt

    => tftp 0x81000000 textfile.txt
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:01
    HOST MAC f8:dc:7a:00:00:02
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    The remote end did not respond in time.
    Warning: usb_ether MAC addresses don’t match:
    Address in ROM is de:ad:be:ef:00:01
    Address in environment is 74:e1:82:92:10:7d

    and I also heard the usb ejected sound, can you give me suggestion?

  5. My tftp connection hangs and aborts after retries :
    => tftp 0x81000000 textfile.txt
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:02
    HOST MAC f8:dc:7a:00:00:01
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.0.1; our IP address is 192.168.0.100
    Filename ‘textfile.txt’.
    Load address: 0x81000000
    Loading: T T T T T T T T T T T T T T T T T T T T
    Retry count exceeded; starting again

    Not great at networking stuff…. can you point what’s wrong here ?

      1. Michael,

        I’m getting stuck here too.

        The nmcli command seems to be executing successfully:
        nmcli con add type ethernet ifname enxf8dc7a000001 ip4 192.168.0.1/24
        Connection ‘ethernet-enxf8dc7a000001-3’ (4c48b510-402d-45b3-afa8-8ca5a7412e86) successfully added.

        But, ifconfig only shows the enp0s31f6 and lo interfaces. I don’t see the enx interface

        Then the TFTP transfer fails to load just as Jack described above. Any help would be greatly appreciated.

  6. Hi Michael… Thx for yet another excellent article to remove ethernet cable from the setup. It works perfectly with the RFS in bootlin lab data.
    However, I have an issue where if I want to use RFS from the TI SDK then boot hangs at :
    [ 23.842529] nfs: server 192.168.0.1 not responding, still trying

    The same zImage with the RFS provided in bootlin labs work fine. So I do not see any issue with the kernel configuration. Only some change in RFS I guess… but can not put my finger on it.

  7. Hello,
    I followed all the steps but unfortunately i get timeout error all the time. (i flashed U-bbot following your supplementary). Please see the logs below and suggest

    U-Boot 2018.05 (Nov 22 2018 – 22:11:27 +0100)

    CPU : AM335X-GP rev 2.1
    I2C: ready
    DRAM: 512 MiB
    No match for driver ‘omap_hsmmc’
    No match for driver ‘omap_hsmmc’
    Some drivers were not found
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT… *** Warning – bad CRC, using default environment

    Failed (-5)
    Loading Environment from MMC… OK
    not set. Validating first E-fuse MAC
    Net: cpsw, usb_ether
    => setenv ipaddr 192.168.0.100
    => setenv serverip 192.168.0.1
    => setenv ethact usb_ether
    => setenv usbnet_devaddr f8:dc:7a:00:00:02
    => setenv usbnet_hostaddr f8:dc:7a:00:00:01
    => saveenv
    Saving Environment to MMC… Writing to MMC(1)… OK
    => tftp 0x81000000 textfile.txt
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:02
    HOST MAC f8:dc:7a:00:00:01
    RNDIS ready
    The remote end did not respond in time.cpsw Waiting for PHY auto negotiation to complete……… TIMEOUT !
    => ping 192.168.0.1
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:02
    HOST MAC f8:dc:7a:00:00:01
    RNDIS ready
    The remote end did not respond in time.cpsw Waiting for PHY auto negotiation to complete……… TIMEOUT !

    PS: i am using latest ubuntu LTS on my host machine and standalone TFTP test works fine!!

  8. Hi, I follow your steps but still can not setup internet over usb

    Board: beaglebone green wireless
    Host: ubuntu 18.04
    Uboot: follow the instructions to build
    Host ip: 192.168.10.24

    Can you give me some suggestion?

  9. Hi,
    I’m trying to load the kernel and rootfs but using the ethernet instead the usb.
    I have defined the follow u-boot variables:
    johan-boot=setenv ethact cpsw;setenv ipaddr 10.0.0.123; setenv serverip 10.0.0.69; tftpboot 0x81000000 zImage; tftp 0x82000000 am335x-boneblack-wireless.dtb; setenv bootargs ${johan-bootargs};bootz 0x81000000 – 0x82000000
    johan-bootargs=console=ttyO0,115200 root=/dev/nfs rw nfsroot=10.0.0.69:/home/lex/Documents/TE/Teaching/Yocto/images/beaglebone/rootfs,nfsvers=3 ip=10.0.0.123:10.0.0.69:10.0.0.69:255.255.255.0::cpsw

    Then I execute “run johan-boot”

    – The TFTP works nice and smooth
    – But the NFS is not loading. Is wrong to set as interface the cpsw? I have tested also setting eth0 and eth1 but doesn’t works at all. What interface is supposed to be used in the NFS parameter to use the ethernet?

    Thank you very much for all this info!

  10. Hello!,
    There are some problems I am facing.
    1. I have Ubuntu 16.04 running on VM which will be the host. Is this a problem?
    2.How do I find the MAC Address of the Beaglebone black?
    3.When I am using ifconfig, I see two networks usb0(192.168.7.2),, usb1(192.168.6.2) and wlan0(192.168.x.x). So I am not sure which one I should use. I tried pinging each of them. I am getting no response.
    4. I am also getting a message which says that gateway ip is required. So I used the gateway ip of the host machine but still no connection is formed. Can you help me with any suggestions.

    Thanks,
    Omkar Kale

    1. Hi Omkar,
      1. I expect Ubuntu 16.04 to work fine. That’s most probably the case if the “nmcli” command doesn’t complain.
      2. The MAC address is set by “usbnet_devaddr” in U-Boot (see the instructions)
      3. Check which interface appears on the host when you run “tftp” in U-Boot on the board.
      4. Where do you get this gateway warning from?
      Hope this helps,
      Cheers,
      Michael

      1. Hi Michael,

        Thank you for the reply.

        I will check all the things and let you once I have tried those things.

        Regards,
        Omkar Kale

  11. This hangs when trying to boot the kernel on both the BeagleBone Black Wireless and the ATSAMA. I thought there was an issue with the Atmel board, but the BBBW behaves in exactly the way. It does not even get to the point where it can complain about NFS, it simply hangs.

    Additionally, this was attempted with an MMC that has the files from the instructions linked here (https://raw.githubusercontent.com/bootlin/training-materials/master/lab-data/common/bootloader/beaglebone-black/README.txt) copied to a vFAT partition, but fails with:

    “`
    … (booting) …
    [ 2.891177] [drm] Cannot find any crtc or sizes
    1+0 records in
    1+0 records out
    dd: writing ‘/dev/mmcblk1boot1’: No space left on device
    4097+0 records in
    4096+0 records out
    mount: mounting /dev/mmcblk1p1 on /mnt/mmc1 failed: Invalid argument
    eMMC flashing successful

    Please press Enter to activate this console.
    /bin/sh: can’t access tty; job control turned off
    / #
    “`

    Despite this, the version of U-Boot is there and I can copy the remaining files that were missing to the eMMC by hand.

    Booting results in quite a few errors with the MMC (it is not inserted), but ultimately TFTP succeeds in both boards, but launching the kernel does not:
    “`
    U-Boot SPL 2018.05 (Nov 22 2018 – 22:11:27 +0100)
    Trying to boot from MMC2
    Loading Environment from FAT… Card did not respond to voltage select!
    ** Bad device mmc 0 **
    Failed (-5)
    Loading Environment from MMC… OK

    U-Boot 2018.05 (Nov 22 2018 – 22:11:27 +0100)

    CPU : AM335X-GP rev 2.1
    I2C: ready
    DRAM: 512 MiB
    No match for driver ‘omap_hsmmc’
    No match for driver ‘omap_hsmmc’
    Some drivers were not found
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT… Card did not respond to voltage select!
    ** Bad device mmc 0 **
    Failed (-5)
    Loading Environment from MMC… OK
    Net: Could not get PHY for cpsw: addr 0
    cpsw, usb_ether
    => env print -a
    autostart=no
    board_name=BBBW
    board_rev=BWA5
    board_serial=…
    bootargs=root=/dev/nfs rw ip=192.168.1.200:::::usb0 console=ttyS0,115200n8 g_ether.dev_addr=f8:dc:7a:00:00:02 g_ether.host_addr=f8:dc:7a:00:00:01 nfsroot=192.168.1.110:/home/user/bootlin/linux-kernel-labs/modules/nfsroot,nfsvers=3
    bootcount=5
    eth1addr=f4:5e:ab:54:36:36
    ethact=cpsw
    ethaddr=f4:5e:ab:54:36:34
    fileaddr=81000000
    filesize=5
    ipaddr=192.168.1.200
    serial#=…
    serverip=192.168.1.110
    stderr=ns16550_serial
    stdin=ns16550_serial
    stdout=ns16550_serial
    usbnet_devaddr=f8:dc:7a:00:00:02
    usbnet_hostaddr=f8:dc:7a:00:00:01
    ver=U-Boot 2018.05 (Nov 22 2018 – 22:11:27 +0100)

    Environment size: 705/131067 bytes
    => tftp 0x81000000 zImage
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:02
    HOST MAC f8:dc:7a:00:00:01
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.1.110; our IP address is 192.168.1.200
    Filename ‘zImage’.
    Load address: 0x81000000
    Loading: #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    ####
    3.1 MiB/s
    done
    Bytes transferred = 4818568 (498688 hex)
    => tftp 0x82000000 am335x-boneblack-wireless.dtb
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:02
    HOST MAC f8:dc:7a:00:00:01
    RNDIS ready
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.1.110; our IP address is 192.168.1.200
    Filename ‘am335x-boneblack-wireless.dtb’.
    Load address: 0x82000000
    Loading: #####
    3.3 MiB/s
    done
    Bytes transferred = 59532 (e88c hex)
    => bootz 0x81000000 – 0x82000000
    ## Flattened Device Tree blob at 82000000
    Booting using the fdt blob at 0x82000000
    Loading Device Tree to 9df1a000, end 9df2b88b … OK

    Starting kernel …
    “`

    And then it resets, kicking back to U-Boot. The zImage and DTB were built with the above instructions, triple checked.
    “`
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make menuconfig
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make -j8
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make dtbs
    “`

    One issue is that running `sudo nmcli con add type ethernet ifname enxf8dc7a000001 ip4 192.168.1.110/24` succeeds, but the interface never appears. However, I do not see anything apparent here that would make the kernel immediately hang.

    1. Hi,

      For the last question, I can reply that this interface is only brought up when usb gagdget networking is turned on on the target side (as it happens on U-Boot when tftp works… that’s a proof that the nmcli setting worked).

      It looks like your kernel wasn’t compiled for the right board. Could you share the configuration (through https://framabin.org for example) ?

      Cheers,
      Michael.

      1. To respond to my previous comment, I should’ve gone back and checked this before posting the .config. You’re absolutely correct, I didn’t have it configured properly. For the BBBW, I used ./arch/arm/configs/omap2plus_defconfig and made my changes; that did indeed boot. I’ll take down my paste that’s linked in the previous post. Thanks, I need to be more careful about that in the future.

  12. Hi Michael,

    I followed your instructions but get an error like this:
    => tftp 0x81000000 textfile.txt
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:02
    HOST MAC f8:dc:7a:00:00:01
    RNDIS ready
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.0.1; our IP address is 192.168.0.100
    Filename ‘textfile.txt’.
    Load address: 0x81000000
    Loading: T T T T T T T T T T T T T T T T T T T T
    Retry count exceeded; starting again

    I saw someone mention this in the comment section but there was no solution. I tried debugging this a little and found that the interface on my Ubuntu Host (18.04) was active when i initiated the tftp command. Do you have any suggestions on this?

    /var/lib/tftpboot$ nmcli connection show
    NAME UUID TYPE DEVICE
    Wired connection 1 a90b4b69-6ad5-3a75-839c-c8a183aa5d37 ethernet enp3s0
    ethernet-enxf8dc7a000001 6032d105-afff-4e73-aead-b032cfdfcf43 ethernet enxf8dc7a000001

    1. Please ignore this post. I had a firewall enabled on my host. It worked fine as soon as I turned it off.

      1. Hi Gary,
        The “Root-NFS: no NFS server address” message was actually helpful to find the issue.
        You are missing a space before “nfsroot” in the kernel command line, hence this parameter is ignored…
        Happy hacking,
        Michael.

        1. Thanks Michael I just saw that mistake. I got passed this problem but now got stuck on another:
          [ 2.352062] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
          [ 2.382203] IP-Config: Guessing netmask 255.255.255.0
          [ 2.387281] IP-Config: Complete:
          [ 2.390526] device=usb0, hwaddr=f8:dc:7a:00:00:02, ipaddr=192.168.0.100, mask=255.255.255.0, gw=255.255.255.255
          [ 2.401189] host=192.168.0.100, domain=, nis-domain=(none)
          [ 2.407160] bootserver=255.255.255.255, rootserver=192.168.0.1, rootpath=
          [ 32.482035] wlan-en-regulator: disabling
          [ 38.242042] rpcbind: server 192.168.0.1 not responding, timed out

          It seems that it took the IP configuration but did not capture the rootpath (my guess). The server time out ends up with the Kernel panic message again. I am guessing the ACL you asked us to write is preventing the server from responding. Any idea where I should look next? Here are some of the params I set (note, i followed a link to a lab you put out so am using a different file path):
          setenv bootargs root=/dev/nfs rw ip=192.168.0.100:::::usb0 console=ttyS0,115200n8 g_ether.dev_addr=f8:dc:7a:00:00:02 g_ether.host_addr=f8:dc:7a:00:00:01 nfsroot=192.168.0.1:/home/vgarg/linux-kernel-labs/modules/nfsroot,nfsvers=3

          /etc/exports:
          /home/vgarg/linux-kernel-labs/modules/nfsroot 192.168.0.100(rw,no_root_squash,no_subtree_check)

  13. Hi Michael,
    I followed these instructions and got everything working but the kernel booting. For some reason it is not mounting the nfs. I am able to ping the host, transfer files via tftp. I used the omap2defconfig and made the necessary configuration changes before compiling. However, I always get stuck at boot on the BeagleboneBlack Wireless. The log of the boot process on the board is as follows:

    => bootz 0x81000000 – 0x82000000
    ## Flattened Device Tree blob at 82000000
    Booting using the fdt blob at 0x82000000
    Loading Device Tree to 9df1a000, end 9df2b88b … OK

    Starting kernel …

    [ 0.000000] Booting Linux on physical CPU 0x0
    [ 0.000000] Linux version 5.5.19 (vgarg@vgarg-750-524) (gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)) #3 SMP Wed Jul 1 12:11:55 CDT 2020
    [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [ 0.000000] OF: fdt: Machine model: TI AM335x BeagleBone Black Wireless
    [ 0.000000] Memory policy: Data cache writeback
    [ 0.000000] cma: Reserved 16 MiB at 0x9e800000
    [ 0.000000] CPU: All CPU(s) started in SVC mode.
    [ 0.000000] AM335X ES2.1 (sgx neon)
    [ 0.000000] percpu: Embedded 19 pages/cpu s48972 r8192 d20660 u77824
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 129412
    [ 0.000000] Kernel command line: root=/dev/nfs rw ip=192.168.0.100:::::usb0 console=ttyS0,115200n8g_ether.dev_addr=f8:dc:7a:00:00:02 g_ether.host_addr=f8:dc:7a:00:00:01nfsroot=192.168.0.1:/home/vgarg/linux-kernel-labs/modules/nfsroot,nfsvers=3
    [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] Memory: 486188K/522240K available (9216K kernel code, 739K rwdata, 2152K rodata, 1024K init, 259K bss, 19668K reserved, 16384K cma-reserved, 0K highmem)
    [ 0.000000] rcu: Hierarchical RCU implementation.
    [ 0.000000] rcu: RCU event tracing is enabled.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
    [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [ 0.000000] IRQ: Found an INTC at 0x(ptrval) (revision 5.0) with 128 interrupts
    [ 0.000000] random: get_random_bytes called from start_kernel+0x2a8/0x4dc with crng_init=0
    [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [ 0.000017] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [ 0.000036] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [ 0.000047] OMAP clocksource: timer1 at 24000000 Hz
    [ 0.000844] timer_probe: no matching timers found
    [ 0.001311] Console: colour dummy device 80×30
    [ 0.001370] Calibrating delay loop… 996.14 BogoMIPS (lpj=4980736)
    [ 0.089060] pid_max: default: 32768 minimum: 301
    [ 0.089225] LSM: Security Framework initializing
    [ 0.089339] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [ 0.089353] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [ 0.090452] CPU: Testing write buffer coherency: ok
    [ 0.090523] CPU0: Spectre v2: using BPIALL workaround
    [ 0.090987] CPU0: thread -1, cpu 0, socket -1, mpidr 0
    [ 0.091798] Setting up static identity map for 0x80100000 – 0x80100078
    [ 0.092001] rcu: Hierarchical SRCU implementation.
    [ 0.092415] smp: Bringing up secondary CPUs …
    [ 0.092425] smp: Brought up 1 node, 1 CPU
    [ 0.092434] SMP: Total of 1 processors activated (996.14 BogoMIPS).
    [ 0.092441] CPU: All CPU(s) started in SVC mode.
    [ 0.093075] devtmpfs: initialized
    [ 0.105211] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [ 0.105537] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [ 0.105565] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
    [ 0.106845] pinctrl core: initialized pinctrl subsystem
    [ 0.107670] thermal_sys: Registered thermal governor ‘fair_share’
    [ 0.107678] thermal_sys: Registered thermal governor ‘step_wise’
    [ 0.107690] thermal_sys: Registered thermal governor ‘user_space’
    [ 0.108794] NET: Registered protocol family 16
    [ 0.111615] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [ 0.137820] l3-aon-clkctrl:0000:0: failed to disable
    [ 0.139248] audit: initializing netlink subsys (disabled)
    [ 0.140376] cpuidle: using governor menu
    [ 0.159876] audit: type=2000 audit(0.140:1): state=initialized audit_enabled=0 res=1
    [ 0.161632] No ATAGs?
    [ 0.161641] hw-breakpoint: debug architecture 0x4 unsupported.
    [ 0.183198] edma 49000000.edma: TI EDMA DMA engine driver
    [ 0.186831] iommu: Default domain type: Translated
    [ 0.188630] vgaarb: loaded
    [ 0.189384] SCSI subsystem initialized
    [ 0.190952] pps_core: LinuxPPS API ver. 1 registered
    [ 0.190966] pps_core: Software ver. 5.3.6 – Copyright 2005-2007 Rodolfo Giometti
    [ 0.190991] PTP clock support registered
    [ 0.192040] clocksource: Switched to clocksource timer1
    [ 0.755765] VFS: Disk quotas dquot_6.6.0
    [ 0.755878] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [ 0.765654] NET: Registered protocol family 2
    [ 0.766461] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
    [ 0.766497] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
    [ 0.766544] TCP bind hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.766603] TCP: Hash tables configured (established 4096 bind 4096)
    [ 0.766726] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
    [ 0.766749] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
    [ 0.766919] NET: Registered protocol family 1
    [ 0.767772] RPC: Registered named UNIX socket transport module.
    [ 0.767786] RPC: Registered udp transport module.
    [ 0.767792] RPC: Registered tcp transport module.
    [ 0.767799] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 0.767812] PCI: CLS 0 bytes, default 64
    [ 0.769183] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [ 0.770781] Initialise system trusted keyrings
    [ 0.771161] workingset: timestamp_bits=14 max_order=17 bucket_order=3
    [ 0.772688] NFS: Registering the id_resolver key type
    [ 0.772733] Key type id_resolver registered
    [ 0.772742] Key type id_legacy registered
    [ 0.772787] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
    [ 0.773138] Key type asymmetric registered
    [ 0.773151] Asymmetric key parser ‘x509’ registered
    [ 0.773169] io scheduler mq-deadline registered
    [ 0.773177] io scheduler kyber registered
    [ 0.779285] OMAP GPIO hardware version 0.1
    [ 0.801338] GPIO line 106 (LS_BUF_EN) hogged as output/high
    [ 0.810968] pinctrl-single 44e10800.pinmux: 142 pins, size 568
    [ 0.819684] omap_prm: probe of 44e00c00.prm failed with error -22
    [ 0.819776] omap_prm: probe of 44e00d00.prm failed with error -22
    [ 0.819842] omap_prm: probe of 44e00f00.prm failed with error -22
    [ 0.819903] omap_prm: probe of 44e01100.prm failed with error -22
    [ 0.821879] Serial: 8250/16550 driver, 6 ports, IRQ sharing enabled
    [ 0.825553] printk: console [ttyS0] disabled
    [ 0.825645] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 29, base_baud = 3000000) is a 8250
    [ 1.456501] printk: console [ttyS0] enabled
    [ 1.462268] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 46, base_baud = 3000000) is a 8250
    [ 1.471244] serial serial0: tty port ttyS3 registered
    [ 1.488917] brd: module loaded
    [ 1.500877] loop: module loaded
    [ 1.506167] mtdoops: mtd device (mtddev=name/number) must be supplied
    [ 1.514684] libphy: Fixed MDIO Bus: probed
    [ 1.522777] am335x-phy-driver 47401300.usb-phy: 47401300.usb-phy supply vcc not found, using dummy regulator
    [ 1.534196] am335x-phy-driver 47401b00.usb-phy: 47401b00.usb-phy supply vcc not found, using dummy regulator
    [ 1.550242] udc-core: couldn’t find an available UDC – added [g_ether] to list of pending drivers
    [ 1.559333] i2c /dev entries driver
    [ 1.565196] sdhci: Secure Digital Host Controller Interface driver
    [ 1.571414] sdhci: Copyright(c) Pierre Ossman
    [ 1.576986] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
    [ 1.585809] omap_hsmmc 48060000.mmc: Got CD GPIO
    [ 1.643559] sdhci-pltfm: SDHCI platform and OF driver helper
    [ 1.649883] ledtrig-cpu: registered to indicate activity on CPUs
    [ 1.657975] oprofile: using arm/armv7
    [ 1.661767] drop_monitor: Initializing network drop monitor service
    [ 1.668439] Initializing XFRM netlink socket
    [ 1.673014] NET: Registered protocol family 10
    [ 1.678847] Segment Routing with IPv6
    [ 1.682752] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [ 1.689468] NET: Registered protocol family 17
    [ 1.694042] NET: Registered protocol family 15
    [ 1.698592] Key type dns_resolver registered
    [ 1.703020] ThumbEE CPU extension supported.
    [ 1.707320] Registering SWP/SWPB emulation handler
    [ 1.712559] omap_voltage_late_init: Voltage driver support not added
    [ 1.718960] sr_dev_init: Unknown instance smartreflex0
    [ 1.724506] SmartReflex Class3 initialized
    [ 1.729306] Loading compiled-in X.509 certificates
    [ 1.785948] random: fast init done
    [ 1.797622] tps65217 0-0024: TPS65217 ID 0xe version 1.2
    [ 1.803511] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [ 1.811260] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
    [ 1.821842] using random self ethernet address
    [ 1.826415] using random host ethernet address
    [ 1.830885] using host ethernet address: f8:dc:7a:00:00:01nfsroot=192.168.0.1:/home/vgarg/linux-kernel-labs/modules/nfsroot,nfsvers=3
    [ 1.831683] usb0: HOST MAC f8:dc:7a:00:00:01
    [ 1.848171] usb0: MAC b6:f8:40:9c:7f:da
    [ 1.852086] using random self ethernet address
    [ 1.856549] using random host ethernet address
    [ 1.861180] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
    [ 1.867901] g_ether gadget: g_ether ready
    [ 1.877139] mmc1: new high speed MMC card at address 0001
    [ 1.883674] mmcblk1: mmc1:0001 M62704 3.56 GiB
    [ 1.888554] mmcblk1boot0: mmc1:0001 M62704 partition 1 2.00 MiB
    [ 1.894931] mmcblk1boot1: mmc1:0001 M62704 partition 2 2.00 MiB
    [ 1.901268] mmcblk1rpmb: mmc1:0001 M62704 partition 3 512 KiB, chardev (249:0)
    [ 1.910725] mmcblk1: p1 p2
    [ 1.988430] hctosys: unable to open rtc device (rtc0)
    [ 2.000689] omap_hsmmc 47810000.mmc: card claims to support voltages below defined range
    [ 2.020581] mmc2: new high speed SDIO card at address 0001
    [ 2.352060] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
    [ 2.382208] IP-Config: Guessing netmask 255.255.255.0
    [ 2.387288] IP-Config: Complete:
    [ 2.390533] device=usb0, hwaddr=b6:f8:40:9c:7f:da, ipaddr=192.168.0.100, mask=255.255.255.0, gw=255.255.255.255
    [ 2.401191] host=192.168.0.100, domain=, nis-domain=(none)
    [ 2.407161] bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
    [ 2.416097] Root-NFS: no NFS server address
    [ 2.420309] VFS: Unable to mount root fs via NFS, trying floppy.
    [ 2.427064] VFS: Cannot open root device “nfs” or unknown-block(2,0): error -6
    [ 2.434428] Please append a correct “root=” boot option; here are the available partitions:
    [ 2.442856] 0100 16384 ram0
    [ 2.442859] (driver?)
    [ 2.448989] 0101 16384 ram1
    [ 2.448991] (driver?)
    [ 2.455142] 0102 16384 ram2
    [ 2.455144] (driver?)
    [ 2.461269] 0103 16384 ram3
    [ 2.461271] (driver?)
    [ 2.467420] 0104 16384 ram4
    [ 2.467422] (driver?)
    [ 2.473567] 0105 16384 ram5
    [ 2.473570] (driver?)
    [ 2.479698] 0106 16384 ram6
    [ 2.479700] (driver?)
    [ 2.485846] 0107 16384 ram7
    [ 2.485848] (driver?)
    [ 2.491992] 0108 16384 ram8
    [ 2.491995] (driver?)
    [ 2.498120] 0109 16384 ram9
    [ 2.498122] (driver?)
    [ 2.504267] 010a 16384 ram10
    [ 2.504269] (driver?)
    [ 2.510483] 010b 16384 ram11
    [ 2.510485] (driver?)
    [ 2.516716] 010c 16384 ram12
    [ 2.516718] (driver?)
    [ 2.522950] 010d 16384 ram13
    [ 2.522952] (driver?)
    [ 2.529167] 010e 16384 ram14
    [ 2.529169] (driver?)
    [ 2.535412] 010f 16384 ram15
    [ 2.535414] (driver?)
    [ 2.541636] b300 3735552 mmcblk1
    [ 2.541639] driver: mmcblk
    [ 2.548485] b301 72261 mmcblk1p1 00000000-01
    [ 2.548488]
    [ 2.555332] b302 1799280 mmcblk1p2 00000000-02
    [ 2.555334]
    [ 2.562181] Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
    [ 2.570499] —[ end Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(2,0) ]—

    Can you point me in the right direction? I am really lost here.

    1. I second this; I am having this exact issue as well on the BeagleBone Black Wireless and an Atmel board.

      1. Hi there,

        Michael actually posted the solution to this problem to another post. I am pasting it here for reference.
        “Hi Gary,
        The “Root-NFS: no NFS server address” message was actually helpful to find the issue.
        You are missing a space before “nfsroot” in the kernel command line, hence this parameter is ignored…
        Happy hacking,
        Michael.”

        1. Hello,

          I have the same issue but the cause is not a missing space…any idea ?

          [ 0.000000] Booting Linux on physical CPU 0x0
          [ 0.000000] Linux version 4.14.54-g0b59bc3be7 (oe-user@oe-host) (gcc version 7.3.0 (GCC)) #1 PREEMPT Mon Aug 31 18:27:38 UTC 2020
          [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
          [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
          [ 0.000000] OF: fdt: Machine model: TI AM335x BeagleBone Black Wireless
          [ 0.000000] Memory policy: Data cache writeback
          [ 0.000000] efi: Getting EFI parameters from FDT:
          [ 0.000000] efi: UEFI not found.
          [ 0.000000] cma: Reserved 48 MiB at 0x9d000000
          [ 0.000000] CPU: All CPU(s) started in SVC mode.
          [ 0.000000] AM335X ES2.1 (sgx neon)
          [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 129920
          [ 0.000000] Kernel command line: console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.0.1:/home/julien/yocto-labs/nfs,nfsvers=3,tcp ip=192.168.0.100:::::usb0 g_ether.dev_addr=22:31:08:6e:8e:be g_ether.host_addr=22:31:08:6e:8e:bd
          [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
          [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
          [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
          [ 0.000000] Memory: 456900K/524288K available (8192K kernel code, 332K rwdata, 2580K rodata, 1024K init, 278K bss, 18236K reserved, 49152K cma-reserved, 0K highmem)
          [ 0.000000] Virtual kernel memory layout:
          [ 0.000000] vector : 0xffff0000 – 0xffff1000 ( 4 kB)
          [ 0.000000] fixmap : 0xffc00000 – 0xfff00000 (3072 kB)
          [ 0.000000] vmalloc : 0xe0800000 – 0xff800000 ( 496 MB)
          [ 0.000000] lowmem : 0xc0000000 – 0xe0000000 ( 512 MB)
          [ 0.000000] pkmap : 0xbfe00000 – 0xc0000000 ( 2 MB)
          [ 0.000000] modules : 0xbf000000 – 0xbfe00000 ( 14 MB)
          [ 0.000000] .text : 0xc0008000 – 0xc0900000 (9184 kB)
          [ 0.000000] .init : 0xc0c00000 – 0xc0d00000 (1024 kB)
          [ 0.000000] .data : 0xc0d00000 – 0xc0d533c8 ( 333 kB)
          [ 0.000000] .bss : 0xc0d533c8 – 0xc0d98e64 ( 279 kB)
          [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
          [ 0.000000] Preemptible hierarchical RCU implementation.
          [ 0.000000] Tasks RCU enabled.
          [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
          [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
          [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz
          [ 0.000014] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
          [ 0.000032] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
          [ 0.000041] OMAP clocksource: timer1 at 24000000 Hz
          [ 0.000190] timer_probe: no matching timers found
          [ 0.000380] Console: colour dummy device 80×30
          [ 0.000424] Calibrating delay loop… 996.14 BogoMIPS (lpj=4980736)
          [ 0.089204] pid_max: default: 32768 minimum: 301
          [ 0.089371] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
          [ 0.089386] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
          [ 0.090079] CPU: Testing write buffer coherency: ok
          [ 0.090708] Setting up static identity map for 0x80100000 – 0x80100060
          [ 0.090834] Hierarchical SRCU implementation.
          [ 0.091101] EFI services will not be available.
          [ 0.092259] devtmpfs: initialized
          [ 0.099672] random: get_random_u32 called from bucket_table_alloc+0x8c/0x1ac with crng_init=0
          [ 0.100107] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
          [ 0.100373] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
          [ 0.100394] futex hash table entries: 256 (order: -1, 3072 bytes)
          [ 0.103728] pinctrl core: initialized pinctrl subsystem
          [ 0.104381] DMI not present or invalid.
          [ 0.104759] NET: Registered protocol family 16
          [ 0.106786] DMA: preallocated 256 KiB pool for atomic coherent allocations
          [ 0.119604] omap_hwmod: debugss: _wait_target_disable failed
          [ 0.171783] cpuidle: using governor ladder
          [ 0.171816] cpuidle: using governor menu
          [ 0.175661] OMAP GPIO hardware version 0.1
          [ 0.177668] GPIO line 106 (LS_BUF_EN) hogged as output/high
          [ 0.184459] No ATAGs?
          [ 0.184477] hw-breakpoint: debug architecture 0x4 unsupported.
          [ 0.196511] edma 49000000.edma: TI EDMA DMA engine driver
          [ 0.199701] usbcore: registered new interface driver usbfs
          [ 0.199758] usbcore: registered new interface driver hub
          [ 0.199856] usbcore: registered new device driver usb
          [ 0.200191] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
          [ 0.200245] omap_i2c 4819c000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c2_pins, deferring probe
          [ 0.200343] media: Linux media interface: v0.10
          [ 0.200384] Linux video capture interface: v2.00
          [ 0.200480] pps_core: LinuxPPS API ver. 1 registered
          [ 0.200488] pps_core: Software ver. 5.3.6 – Copyright 2005-2007 Rodolfo Giometti
          [ 0.200506] PTP clock support registered
          [ 0.200535] EDAC MC: Ver: 3.0.0
          [ 0.200937] dmi: Firmware registration failed.
          [ 0.201312] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
          [ 0.201621] Advanced Linux Sound Architecture Driver Initialized.
          [ 0.202689] clocksource: Switched to clocksource timer1
          [ 0.209872] NET: Registered protocol family 2
          [ 0.210521] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
          [ 0.210567] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
          [ 0.210605] TCP: Hash tables configured (established 4096 bind 4096)
          [ 0.210698] UDP hash table entries: 256 (order: 0, 4096 bytes)
          [ 0.210716] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
          [ 0.210855] NET: Registered protocol family 1
          [ 0.211233] RPC: Registered named UNIX socket transport module.
          [ 0.211245] RPC: Registered udp transport module.
          [ 0.211251] RPC: Registered tcp transport module.
          [ 0.211256] RPC: Registered tcp NFSv4.1 backchannel transport module.
          [ 0.212089] hw perfevents: no interrupt-affinity property for /pmu, guessing.
          [ 0.212206] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
          [ 0.213668] workingset: timestamp_bits=14 max_order=17 bucket_order=3
          [ 0.217415] squashfs: version 4.0 (2009/01/31) Phillip Lougher
          [ 0.218102] NFS: Registering the id_resolver key type
          [ 0.218148] Key type id_resolver registered
          [ 0.218154] Key type id_legacy registered
          [ 0.218196] ntfs: driver 2.1.32 [Flags: R/O].
          [ 0.219918] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
          [ 0.219937] io scheduler noop registered
          [ 0.219944] io scheduler deadline registered
          [ 0.220143] io scheduler cfq registered (default)
          [ 0.220153] io scheduler mq-deadline registered
          [ 0.220160] io scheduler kyber registered
          [ 0.221373] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
          [ 0.265062] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
          [ 0.267762] console [ttyS0] disabled
          [ 0.267852] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 30, base_baud = 3000000) is a 8250
          [ 0.913786] console [ttyS0] enabled
          [ 0.918250] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 31, base_baud = 3000000) is a 8250
          [ 0.928667] omap_rng 48310000.rng: Random Number Generator ver. 20
          [ 0.945892] brd: module loaded
          [ 0.954870] loop: module loaded
          [ 0.959825] libphy: Fixed MDIO Bus: probed
          [ 0.967567] am335x-phy-driver 47401300.usb-phy: 47401300.usb-phy supply vcc not found, using dummy regulator
          [ 0.979758] am335x-phy-driver 47401b00.usb-phy: 47401b00.usb-phy supply vcc not found, using dummy regulator
          [ 0.997798] udc-core: couldn’t find an available UDC – added [g_ether] to list of pending drivers
          [ 1.007293] i2c /dev entries driver
          [ 1.011234] IR NEC protocol handler initialized
          [ 1.015943] IR RC5(x/sz) protocol handler initialized
          [ 1.021016] IR RC6 protocol handler initialized
          [ 1.025605] IR JVC protocol handler initialized
          [ 1.030152] IR Sony protocol handler initialized
          [ 1.034801] IR SANYO protocol handler initialized
          [ 1.039522] IR Sharp protocol handler initialized
          [ 1.044254] IR MCE Keyboard/mouse protocol handler initialized
          [ 1.050109] IR XMP protocol handler initialized
          [ 1.056167] cpuidle: enable-method property ‘ti,am3352’ found operations
          [ 1.063299] sdhci: Secure Digital Host Controller Interface driver
          [ 1.069506] sdhci: Copyright(c) Pierre Ossman
          [ 1.074450] omap_hsmmc 48060000.mmc: Got CD GPIO
          [ 1.180157] mmc0: host does not support reading read-only switch, assuming write-enable
          [ 1.190258] mmc0: new high speed SDHC card at address 1234
          [ 1.197169] mmcblk0: mmc0:1234 SA08G 7.29 GiB
          [ 1.204248] mmcblk0: p1 p2
          [ 1.260591] mmc1: new high speed MMC card at address 0001
          [ 1.266491] mmcblk1: mmc1:0001 M62704 3.56 GiB
          [ 1.271189] mmcblk1boot0: mmc1:0001 M62704 partition 1 2.00 MiB
          [ 1.277304] mmcblk1boot1: mmc1:0001 M62704 partition 2 2.00 MiB
          [ 1.283425] mmcblk1rpmb: mmc1:0001 M62704 partition 3 512 KiB
          [ 1.342975] sdhci-pltfm: SDHCI platform and OF driver helper
          [ 1.350159] ledtrig-cpu: registered to indicate activity on CPUs
          [ 1.361543] omap_hsmmc 47810000.mmc: card claims to support voltages below defined range
          [ 1.371666] NET: Registered protocol family 10
          [ 1.372646] Segment Routing with IPv6
          [ 1.372809] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
          [ 1.373421] NET: Registered protocol family 17
          [ 1.373683] Key type dns_resolver registered
          [ 1.373843] omap_voltage_late_init: Voltage driver support not added
          [ 1.418845] random: fast init done
          [ 1.423616] mmc2: new high speed SDIO card at address 0001
          [ 1.442507] tps65217 0-0024: TPS65217 ID 0xe version 1.2
          [ 1.585039] tda998x 0-0070: found TDA19988
          [ 1.590277] tilcdc 4830e000.lcdc: bound 0-0070 (ops tda998x_ops)
          [ 1.596368] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
          [ 1.603024] [drm] No driver support for vblank timestamp query.
          [ 1.609316] [drm] Cannot find any crtc or sizes
          [ 1.614435] [drm] Initialized tilcdc 1.0.0 20121205 for 4830e000.lcdc on minor 0
          [ 1.621969] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
          [ 1.629388] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
          [ 1.643496] using random self ethernet address
          [ 1.647973] using random host ethernet address
          [ 1.652439] using host ethernet address: 22:31:08:6e:8e:bd
          [ 1.652444] using self ethernet address: 22:31:08:6e:8e:be
          [ 1.658656] usb0: HOST MAC 22:31:08:6e:8e:bd
          [ 1.668555] usb0: MAC 22:31:08:6e:8e:be
          [ 1.672428] using random self ethernet address
          [ 1.676921] using random host ethernet address
          [ 1.681458] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
          [ 1.688170] g_ether gadget: g_ether ready
          [ 1.700690] cpufreq: cpufreq_online: CPU0: Running at unlisted freq: 1000000 KHz
          [ 1.708269] cpu cpu0: dev_pm_opp_set_rate: failed to find current OPP for freq 1000000000 (-34)
          [ 1.718689] cpufreq: cpufreq_online: CPU0: Unlisted initial frequency changed to: 800000 KHz
          [ 1.727967] hctosys: unable to open rtc device (rtc0)
          [ 1.733993] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
          [ 2.108861] g_ether gadget: high-speed config #1: CDC Ethernet (EEM)
          [ 2.123146] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
          [ 2.152887] IP-Config: Guessing netmask 255.255.255.0
          [ 2.157970] IP-Config: Complete:
          [ 2.161221] device=usb0, hwaddr=22:31:08:6e:8e:be, ipaddr=192.168.0.100, mask=255.255.255.0, gw=255.255.255.255
          [ 2.171977] host=192.168.0.100, domain=, nis-domain=(none)
          [ 2.177997] bootserver=255.255.255.255, rootserver=192.168.0.1, rootpath=
          [ 2.186395] wlan-en-regulator: disabling
          [ 2.190443] ALSA device list:
          [ 2.193562] No soundcards found.
          [ 2.643324] [drm] Cannot find any crtc or sizes
          [ 116.883493] VFS: Unable to mount root fs via NFS, trying floppy.
          [ 116.890551] VFS: Cannot open root device “nfs” or unknown-block(2,0): error -6
          [ 116.898052] Please append a correct “root=” boot option; here are the available partitions:
          [ 116.906589] 0100 65536 ram0
          [ 116.906601] (driver?)
          [ 116.913191] 0101 65536 ram1
          [ 116.913377] (driver?)
          [ 116.919705] 0102 65536 ram2
          [ 116.919715] (driver?)
          [ 116.926133] 0103 65536 ram3
          [ 116.926142] (driver?)
          [ 116.932600] 0104 65536 ram4
          [ 116.932610] (driver?)
          [ 116.939108] 0105 65536 ram5
          [ 116.939119] (driver?)
          [ 116.945521] 0106 65536 ram6
          [ 116.945531] (driver?)
          [ 116.952076] 0107 65536 ram7
          [ 116.952080] (driver?)
          [ 116.958255] 0108 65536 ram8
          [ 116.958259] (driver?)
          [ 116.964413] 0109 65536 ram9
          [ 116.964417] (driver?)
          [ 116.970543] 010a 65536 ram10
          [ 116.970547] (driver?)
          [ 116.976780] 010b 65536 ram11
          [ 116.976783] (driver?)
          [ 116.983031] 010c 65536 ram12
          [ 116.983035] (driver?)
          [ 116.989250] 010d 65536 ram13
          [ 116.989254] (driver?)
          [ 116.995514] 010e 65536 ram14
          [ 116.995518] (driver?)
          [ 117.001732] 010f 65536 ram15
          [ 117.001736] (driver?)
          [ 117.007979] b300 7639040 mmcblk0
          [ 117.007984] driver: mmcblk
          [ 117.014849] b301 49152 mmcblk0p1 ac9dcd69-01
          [ 117.014853]
          [ 117.021680] b302 7588864 mmcblk0p2 ac9dcd69-02
          [ 117.021684]
          [ 117.028526] b310 3735552 mmcblk1
          [ 117.028531] driver: mmcblk
          [ 117.035388] b340 512 mmcblk1rpmb
          [ 117.035392] (driver?)
          [ 117.042132] b330 2048 mmcblk1boot1
          [ 117.042135] (driver?)
          [ 117.048980] b320 2048 mmcblk1boot0
          [ 117.048984] (driver?)
          [ 117.055826] Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
          [ 117.064137] —[ end Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
          [ 176.792735] random: crng init done

  14. Hello,

    I have the same issue with my BeagleBone Black Wireless (but I have there is no missing space before “nfsroot”) :

  15. I am using bbb. Sometimes Gives me error(data abort ) and resetting as below:

    U-Boot 2023.07-rc4-00008-g2f4664f5c3 (Jun 16 2023 – 08:37:35 +0300)

    CPU : AM335X-GP rev 2.1
    Model: TI AM335x BeagleBone Black
    DRAM: 512 MiB
    Core: 160 devices, 18 uclasses, devicetree: separate
    WDT: Started wdt@44e35000 with servicing every 1000ms (60s timeout)
    NAND: 0 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT… Unable to read “uboot.env” from mmc0:1…
    not set. Validating first E-fuse MAC
    Net: eth2: ethernet@4a100000, eth3: usb_ether
    Hit any key to stop autoboot: 0
    =>
    => setenv ipaddr 192.168.0.100
    => setenv serverip 192.168.0.1
    => >setenv ethact usb_ether
    Unknown command ‘>setenv’ – try ‘help’
    => setenv ethact usb_ether
    => setenv usbnet_devaddr f8:dc:7a:00:00:02
    => setenv usbnet_hostaddr f8:dc:7a:00:00:01
    => saveenv
    Saving Environment to FAT… OK
    => tftp 0x81000000 textfile.txt
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC f8:dc:7a:00:00:02
    HOST MAC f8:dc:7a:00:00:01
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.0.1; our IP address is 192.168.0.100
    Filename ‘textfile.txt’.
    Load address: 0x81000000
    Loading: ################################################## 11 Bytes
    1000 Bytes/s
    done
    Bytes transferred = 11 (b hex)
    data abort
    pc : [] lr : []
    reloc pc : [] lr : []
    sp : 9df2c8f8 ip : 00000006 fp : 00000003
    r10: 9df2c974 r9 : 9df41ea0 r8 : 9df2c970
    r7 : 00000200 r6 : 9ffdbd1c r5 : 9ffcdd41 r4 : 00000018
    r3 : 00000018 r2 : 9ffdbd00 r1 : 00000001 r0 : 9df519c0
    Flags: Nzcv IRQs off FIQs on Mode SVC_32 (T)
    Code: 68c2 6881 f023 0303 (60ca) 4403
    Resetting CPU …

    resetting …
    U-Boot SPL 2023.07-rc4-00008-g2f4664f5c3 (Jun 16 2023 – 08:37:35 +0300)
    Trying to boot from MMC1

  16. So I had a similar problem which was the cause of my server/host networking configuration
    TFTP would work and NFS wouldn’t
    I noticed that basically when TFTP was working it would create a device with ifname and then it would change when it go to the point of mounting from NFS.
    My solution was to assign the MAC address f8:dc:7a:00:00:01 to a permanent ifname

    I did it with systemd
    /etc/systemd/network/10-bootlin.link
    “`
    [Match]
    PermanentMACAddress=f8:dc:71:00:00:01

    [Link]
    Name=bootlin0
    “`

Leave a Reply