This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Unable to mount root fs via NFS

Other Parts Discussed in Thread: PCF8575, PMP

I am running Ubuntu 10.04 LTS in virtualbox to connect to a DM814x EVM.  I have configured my nfs server @ IP 192.168.0.61, and I can access the nfs server from an external laptop using muCommander.  I am using the image provided by TI, and following the instructions in the "EZ Software Developer's Guide" in order to run the "Hello World" application.  I am able to sucessfully download the image from the NFS server, but I receive the "Unable to mount root fs via NFS" error when the kernel starts.  Below is the output of the kernel init, as well as the environment variables.

link up on port 0, speed 100, full duplex
Using cpsw device
TFTP from server 192.168.0.61; our IP address is 192.168.0.54
Filename 'uImage-dm814x-evm.bin'.
Load address: 0x81000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ################################################
done
Bytes transferred = 2571428 (273ca4 hex)
## Booting kernel from Legacy Image at 81000000 ...
   Image Name:   Arago/2.6.37-psp04.01.00.06/dm81
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2571364 Bytes = 2.5 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.37 (x0029463@swubn01) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-1
CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: ti8148evm
bootconsole [earlycon0] enabled
vram size = 52428800 at 0x0
reserved size = 52428800 at 0x0
FB: Reserving 52428800 bytes SDRAM for VRAM
Memory policy: ECC disabled, Data cache writeback
OMAP chip is TI8148 2.0
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 52224
Kernel command line: console=ttyO0,115200n8 mem=256M earlyprintk notifyk.vpssm3_sva=0w
PID hash table entries: 1024 (order: 0, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 206MB = 206MB total
Memory: 203140k/203140k available, 59004k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
    vmalloc : 0xd0800000 - 0xf8000000   ( 632 MB)
    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .init : 0xc0008000 - 0xc003a000   ( 200 kB)
      .text : 0xc003a000 - 0xc04df000   (4756 kB)
      .data : 0xc04e0000 - 0xc0528640   ( 290 kB)
SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:407
IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
Total of 128 interrupts on 1 active controller
GPMC revision 6.0
Trying to install interrupt handler for IRQ400
Trying to install interrupt handler for IRQ401
Trying to install interrupt handler for IRQ402
Trying to install interrupt handler for IRQ403
Trying to install interrupt handler for IRQ404
Trying to install interrupt handler for IRQ405
Trying to install interrupt handler for IRQ406
Trying to install type control for IRQ407
Trying to set irq flags for IRQ407
OMAP clockevent source: GPTIMER1 at 20000000 Hz
Console: colour dummy device 80x30
Calibrating delay loop... 599.65 BogoMIPS (lpj=2998272)
pid_max: default: 32768 minimum: 301
Security Framework initialized
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
devtmpfs: initialized
omap_voltage_early_init: voltage driver support not added
regulator: core version 0.5
regulator: dummy:
NET: Registered protocol family 16
OMAP GPIO hardware version 0.1
OMAP GPIO hardware version 0.1
OMAP GPIO hardware version 0.1
OMAP GPIO hardware version 0.1
omap_mux_init: Add partition: #1: core, flags: 4
registered ti814x_vpss device
registered TI814x on-chip HDMI device
NOR: Can't request GPMC CS
registered ti81xx_vidout device
Debugfs: Only enabling/disabling deep sleep and wakeup timer is supported now
ti81xx_pcie: Invoking PCI BIOS...
ti81xx_pcie: Setting up Host Controller...
ti81xx_pcie: Register base mapped @0xd0820000
ti81xx_pcie: Starting PCI scan...
PCI: bus0: Fast back to back transfers enabled
bio: create slab <bio-0> at 0
vgaarb: loaded
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
registerd cppi-dma Intr @ IRQ 17
Cppi41 Init Done
omap_i2c omap_i2c.1: bus 1 rev4.0 at 100 kHz
pcf857x 1-0021: gpios 128..143 on a pcf8575
omap_i2c omap_i2c.3: bus 3 rev4.0 at 100 kHz
Advanced Linux Sound Architecture Driver Version 1.0.23.
Switching to clocksource gp timer
musb-hdrc: version 6.0, host, debug=0
musb-hdrc musb-hdrc.0: dma type: dma-cppi41
musb-hdrc musb-hdrc.0: MUSB HDRC host driver
musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: MUSB HDRC host driver
usb usb1: Manufacturer: Linux 2.6.37 musb-hcd
usb usb1: SerialNumber: musb-hdrc.0
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
musb-hdrc musb-hdrc.0: USB Host mode controller at d081e000 using DMA, IRQ 18
musb-hdrc musb-hdrc.1: dma type: dma-cppi41
musb-hdrc musb-hdrc.1: MUSB HDRC host driver
musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 2
usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: MUSB HDRC host driver
usb usb2: Manufacturer: Linux 2.6.37 musb-hcd
usb usb2: SerialNumber: musb-hdrc.1
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
musb-hdrc musb-hdrc.1: USB Host mode controller at d0826800 using DMA, IRQ 19
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NetWinder Floating Point Emulator V0.97 (double precision)
PMU: registered new PMU device of type 0
omap-iommu omap-iommu.0: ducati registered
omap-iommu omap-iommu.1: sys registered
JFFS2 version 2.2. (NAND) �� 2001-2006 Red Hat, Inc.
msgmni has been set to 396
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
omap_uart.0: ttyO0 at MMIO 0x48020000 (irq = 72) is a OMAP UART0
console [ttyO0] enabled, bootconsole disabled
console [ttyO0] enabled, bootconsole disabled
omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2
omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3
omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4
omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5
brd: module loaded
loop: module loaded
ahci ahci.0: forcing PORTS_IMPL to 0x1
ahci ahci.0: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
ahci ahci.0: flags: ncq sntf pm led clo only pmp pio slum part ccc apst
scsi0 : ahci_platform
ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a150fff] port 0x100 irq 16
omap2-nand driver initializing
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xca (Micron )
Creating 6 MTD partitions on "omap2-nand.0":
0x000000000000-0x000000020000 : "U-Boot-min"
0x000000020000-0x000000260000 : "U-Boot"
0x000000260000-0x000000280000 : "U-Boot Env"
0x000000280000-0x0000006c0000 : "Kernel"
0x0000006c0000-0x00000cee0000 : "File System"
0x00000cee0000-0x000010000000 : "Reserved"
davinci_mdio davinci_mdio.0: davinci mdio revision 1.6
davinci_mdio davinci_mdio.0: detected phy mask fffffffc
davinci_mdio.0: probed
davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver unknown
davinci_mdio davinci_mdio.0: phy[1]: device 0:01, driver unknown
usbcore: registered new interface driver cdc_ether
usbcore: registered new interface driver dm9601
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
ata1: SATA link down (SStatus 0 SControl 300)
qt602240_ts 1-004a: Family ID: 128 Variant ID: 1 Version: 22 Build: 171
qt602240_ts 1-004a: Matrix X Size: 18 Matrix Y Size: 12 Object Num: 17
input: AT42QT602240/ATMXT224 Touchscreen as /devices/platform/omap/omap_i2c.1/i2c-1/10
omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0
i2c /dev entries driver
Linux video capture interface: v2.00
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v1.0.0)
OMAP Watchdog Timer Rev 0x00: initial timeout 60 sec
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
notify_init : notify drivercreated  for  remote proc id 2 at physical Address 0xbf9000
usbcore: registered new interface driver snd-usb-audio
asoc: tlv320aic3x-hifi <-> davinci-mcasp.2 mapping ok
ALSA device list:
  #0: TI81XX EVM
TCP cubic registered
NET: Registered protocol family 17
Registering the dns_resolver key type
VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
omap_voltage_late_init: Voltage driver support not added
Power Management for TI81XX.
Detected MACID=40:5f:c2:40:b6:b6
omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
mmc0: new high speed SDHC card at address e624
mmcblk0: mmc0:e624 SD08G 7.40 GiB
 mmcblk0: p1 p2 p3
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00             128 mtdblock0  (driver?)
1f01            2304 mtdblock1  (driver?)
1f02             128 mtdblock2  (driver?)
1f03            4352 mtdblock3  (driver?)
1f04          204928 mtdblock4  (driver?)
1f05           50304 mtdblock5  (driver?)
b300         7761920 mmcblk0  driver: mmcblk
  b301           40131 mmcblk0p1 00000000-0000-0000-0000-000000000mmcblk0p1
  b302          883575 mmcblk0p2 00000000-0000-0000-0000-000000000mmcblk0p2
  b303         6835657 mmcblk0p3 00000000-0000-0000-0000-000000000mmcblk0p3
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
Backtrace:
[<c0048b70>] (dump_backtrace+0x0/0x110) from [<c039dd84>] (dump_stack+0x18/0x1c)
 r7:ccad1000 r6:00000000 r5:c002da3c r4:c0528dd0
[<c039dd6c>] (dump_stack+0x0/0x1c) from [<c039dde8>] (panic+0x60/0x17c)
[<c039dd88>] (panic+0x0/0x17c) from [<c0009258>] (mount_block_root+0x1e0/0x220)
 r3:00000000 r2:00000000 r1:cc82bf58 r0:c0461acc
[<c0009078>] (mount_block_root+0x0/0x220) from [<c0009344>] (mount_root+0xac/0xcc)
[<c0009298>] (mount_root+0x0/0xcc) from [<c00094d4>] (prepare_namespace+0x170/0x1d4)
 r4:c05286a4
[<c0009364>] (prepare_namespace+0x0/0x1d4) from [<c0008784>] (kernel_init+0x114/0x154)
 r5:c0008670 r4:c0528640
[<c0008670>] (kernel_init+0x0/0x154) from [<c006e9bc>] (do_exit+0x0/0x5e4)
 r5:c0008670 r4:00000000

TI8148_EVM#printenv
verify=yes
ramdisk_file=ramdisk.gz
loadaddr=0x81000000
script_addr=0x80900000
loadbootscript=fatload mmc 1 ${script_addr} boot.scr
bootscript= echo Running bootscript from MMC/SD to set the ENV...; source ${script_ad}
ethact=cpsw
bootdelay=4
baudrate=115200
autoload=no
oldbootfile=uImage
ethaddr=08:11:23:32:12:77
bootcmd=colorbar;setenv serverip 192.168.0.61;tftpboot;bootm
bootfile=uImage-dm814x-evm.bin
nfsserver=192.168.0.61
hostname=EVM814x
ipaddr=192.168.0.54
serverip=192.168.0.61
netmask=255.255.255.0
console=ttyO0
root=/dev/nfs
nfsroot=192.168.0.61:/home/merindat/targetfs
bootargs=console=ttyO0,115200n8 mem=256M earlyprintk notifyk.vpssm3_sva=0xBF900000 vrw
stdin=serial
stdout=serial
stderr=serial

Thank you in advance for any help.  :)




  • The NFS driver may be coming up faster than the network driver. The usual thing to try is to add "rootdelay=5" to the bootargs. The delay of 5 seconds is arbitrary. You can shortening or lengthing it. You should see some boot messages about ip config well before the root mount messages.

  • No luck.  I increased the root delay to 15 seconds, and I still have the same error.  :(

  • I'd guess that your network hasn't started up. Your bootargs don't specify the ip config. I don't know what exactly is Linux behaviour in that case. If you have a DHCP server, try adding "ip=dhcp" to your bootargs. If you use static addresses, that's more complicated. Forgotten the exact syntax, something like ip=192.168.0.54 with a lot of colon separated parameters. See Documentation/filesystems/nfs/nfsroot.txt in your kernel source.

  • Your bootargs don't appear to have a root or nfsroot parameter either. Check your PSP doc or the TI Wiki for bootargs settings for NFS:

    http://processors.wiki.ti.com/index.php/DM814x_AM387x_PSP_User_Guide
    http://processors.wiki.ti.com/index.php/DM814x_AM387x_PSP_U-Boot

    It should get you closer. NFS configuration can be notoriously difficult.

     

  • Sorry, linewrap was not on when I copied the bootargs from minicom.  Here are the actual bootargs:

    bootargs=console=ttyO0,115200n8 mem=256M earlyprintk notifyk.vpssm3_sva=0xBF900000 vram=50M ti814xfb.
    vram=0:16M,1:16M,2:6M rootdelay=15 root=/dev/nfs nfsroot=192.168.0.61:/home/merindat/targetfs rootwai
    t rw

  • It works!!!  Changing the IP configuration to dhcp has allowed my EVM to boot from NFS.  Thank you for all of your help, and I am posting the environment variables that worked below for anyone else who is stuck and pulling their hair out.  :)

    TI8148_EVM#printenv
    verify=yes
    ramdisk_file=ramdisk.gz
    loadaddr=0x81000000
    script_addr=0x80900000
    loadbootscript=fatload mmc 1 ${script_addr} boot.scr
    bootscript= echo Running bootscript from MMC/SD to set the ENV...; source ${script_addr}
    ethact=cpsw
    bootdelay=4
    baudrate=115200
    autoload=no
    oldbootfile=uImage
    ethaddr=08:11:23:32:12:77
    nfsserver=192.168.0.61
    hostname=EVM814x
    console=ttyO0
    root=/dev/nfs
    nfsroot=192.168.0.61:/home/merindat/targetfs
    rootdelay=15
    bootfile=uImage-dm814x-evm.bin
    dnsip=192.168.0.61
    gatewayip=192.168.0.61
    serverip=192.168.0.61
    ipaddr=192.168.0.54
    netmask=255.255.255.0
    bootargs=console=ttyO0,115200n8 mem=256M earlyprintk notifyk.vpssm3_sva=0xBF900000 vram=50M ti814xfb.vram=0:16M,1:
    16M,2:6M rootdelay=15 root=/dev/nfs nfsroot=192.168.0.61:/home/merindat/targetfs rootwait rw ip=dhcp
    bootcmd=dhcp;colorbar;setenv serverip 192.168.0.61;tftpboot;bootm
    stdin=serial
    stdout=serial
    stderr=serial