Skip to contentSkip to conversation

Booting the Linux image via nfs

U-Boot-Users Mirek23 4 participants 13 messages Aug 24, 2007 – Aug 31, 2007

lore
Share & tools
lore

Mirek23

author
#0 lore raw

Hi All,

I have found an option in u-boot to load the kernel image via nfs. I did
not find unfortunately anything about that in the u-boot manual apart from that concerning the root file system.
Is it than possible to load kernel image via nfs? If so which parameters to specify.

Best Regards

Mirek

Signature · 2 lines
View this message in context: http://www.nabble.com/Booting-the-Linux-image-via-nfs-tf4324309.html#a12314911
Sent from the Uboot - Users mailing list archive at Nabble.com.
#1 lore raw
Quoted 4 lines · In message <[email protected]> you wrote:

I have found an option in u-boot to load the kernel image via nfs. I did
not find unfortunately anything about that in the u-boot manual apart from that concerning the root file system.

Well, the documentation is a wiki, so everybody can help to improve and extend it. Your contriution is welcome...

Quoted 2 lines

Is it than possible to load kernel image via nfs? If so which parameters to specify.

Hint: type "help nfs" at the U-Boot prompt.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The faster I go, the behinder I get.                 -- Lewis Carroll
author
#2 lore raw

Hello Wolfgang,

Thank you for your answer. I understand that it is possible to
load linux image by means of nfs.
I have checked with program ethereal that is uses the UDP protocol. Is it possible to force nfs (in u-boot 1.2.0) to use tcp instead?

Best Regards

Mirek

Quoted 39 lines · wd
Quoted 6 lines · In message <[email protected]> you wrote:

I have found an option in u-boot to load the kernel image via nfs. I
did
not find unfortunately anything about that in the u-boot manual apart from
that concerning the root file system.

Well, the documentation is a wiki, so everybody can help to improve and extend it. Your contriution is welcome...

Quoted 3 lines

Is it than possible to load kernel image via nfs? If so which parameters to
specify.

Hint: type "help nfs" at the U-Boot prompt.

Best regards,

Wolfgang Denk

Signature · 14 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The faster I go, the behinder I get.                 -- Lewis Carroll

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users
Signature · 2 lines
View this message in context: http://www.nabble.com/Booting-the-Linux-image-via-nfs-tf4324309.html#a12347704
Sent from the Uboot - Users mailing list archive at Nabble.com.
#3 lore raw
Quoted 9 lines · Mirek23 wrote:

Hello Wolfgang,

Thank you for your answer. I understand that it is possible to
load linux image by means of nfs.
I have checked with program ethereal that is uses the UDP protocol. Is it possible to force nfs (in u-boot 1.2.0) to use tcp instead?

Best Regards
Mirek

Hi Mirek,

TCP is not supported presently, and not very likely in the future. TCP takes a *lot* more effort than UDP and is not currently supported by u-boot.

It is possible to add TCP support to u-boot (when you have the source, nearly anything is possible), but it is very unlikely due to the level of complexity -- the benefit vs. effort ratio is very poor.

Best regards,
gvb

#4 lore raw

Hi Jerry,

Now all is clear for me. Thanks for your answer.

Best Regards

Mirek

Quoted 23 lines · Jerry Van Baren
Quoted 9 lines · Mirek23 wrote:

Hello Wolfgang,

Thank you for your answer. I understand that it is possible to
load linux image by means of nfs.
I have checked with program ethereal that is uses the UDP protocol. Is it possible to force nfs (in u-boot 1.2.0) to use tcp instead?

Best Regards
Mirek

Hi Mirek,

TCP is not supported presently, and not very likely in the future. TCP takes a *lot* more effort than UDP and is not currently supported by u-boot.

It is possible to add TCP support to u-boot (when you have the source, nearly anything is possible), but it is very unlikely due to the level of complexity -- the benefit vs. effort ratio is very poor.

Best regards,
gvb

Signature · 4 lines
=============================================================================
          Miroslaw Dach (Miroslaw.Dach at psi.ch) - SLS/Controls Group 
                PSI - Paul Scherrer Institut CH-5232 Villigen
=============================================================================
#5 lore raw
In reply to Mirek23

Mirek,

Quoted 12 lines · Mirek23 wrote:

Hello Wolfgang,

Thank you for your answer. I understand that it is possible to
load linux image by means of nfs.
I have checked with program ethereal that is uses the UDP protocol. Is it possible to force nfs (in u-boot 1.2.0) to use tcp instead?

Best Regards

Mirek

If you have an NFS server at your disposal, why not get it to serve TFTP as well? It's sooooo easy.

regards,
Ben

#6 lore raw

Hi Ben,

I have configured tftp server and there is no problem to load
uImage but I was just wandering if it is also possible to use nfs since my aim is to mount root file system via nfs so I thought that it would be just easier to deal with one server (I mean nfs) than with two nfs and tftp.

Best Regards

Mirek

Quoted 21 lines · Ben Warren

Mirek,

Quoted 12 lines · Mirek23 wrote:

Hello Wolfgang,

Thank you for your answer. I understand that it is possible to
load linux image by means of nfs.
I have checked with program ethereal that is uses the UDP protocol. Is it possible to force nfs (in u-boot 1.2.0) to use tcp instead?

Best Regards

Mirek

If you have an NFS server at your disposal, why not get it to serve TFTP as well? It's sooooo easy.

regards,
Ben

Signature · 4 lines
=============================================================================
          Miroslaw Dach (Miroslaw.Dach at psi.ch) - SLS/Controls Group 
                PSI - Paul Scherrer Institut CH-5232 Villigen
=============================================================================
#7 lore raw

Mirek,

Quoted 9 lines · Miroslaw Dach

Hi Ben,

I have configured tftp server and there is no problem to load
uImage but I was just wandering if it is also possible to use nfs since my aim is to mount root file system via nfs so I thought that it would be just easier to deal with one server (I mean nfs) than with two nfs and tftp.

Quoted 4 lines

Best Regards

Mirek

Yeah, it sounds like a nice idea to use the same protocol for everything, but another way of looking at it is to use the protocol that's best-suited for the job. TFTP was designed to efficiently move large blocks of data in one direction. NFS was designed with very different and much more complicated goals. As you've seen, the U-boot implementation is very lean and that's the way it should be, since file systems play a very limited role in bootloaders. The overhead and maintenance of running a TFTP server is, well, trivial.

regards,
Ben

#11 lore raw
In reply to Mirek23
Quoted 5 lines · In message <[email protected]> you wrote:

Thank you for your answer. I understand that it is possible to
load linux image by means of nfs.
I have checked with program ethereal that is uses the UDP protocol. Is it possible to force nfs (in u-boot 1.2.0) to use tcp instead?

No, this is impossible. We don't have a TCP stack in U-Boot.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Bankers do it with interest (penalty for early withdrawal).
#10 lore raw
In reply to Ben Warren
Quoted 5 lines · In message <[email protected]> you wrote:
Quoted 5 lines

Thank you for your answer. I understand that it is possible to
load linux image by means of nfs.
I have checked with program ethereal that is uses the UDP protocol. Is it possible to force nfs (in u-boot 1.2.0) to use tcp instead?

...

Quoted 2 lines

If you have an NFS server at your disposal, why not get it to serve TFTP as well? It's sooooo easy.

Well, NFS is often much faster than TFTP...

But NFS over UDP should work fine, too.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The goal of science is to build better mousetraps. The goal of nature
is to build better mice.
#8 lore raw
In reply to Ben Warren

Dear Ben,

Quoted 5 lines · in message <[email protected]> you wrote:

Yeah, it sounds like a nice idea to use the same protocol for everything, but another way of looking at it is to use the protocol that's best-suited for the job. TFTP was designed to efficiently move large blocks of data in one direction. NFS was designed with very

I disagree here, both on the "large blocks" and on the "efficiently".

Remember that the initial 'T' in TFTP standas for TRIVIAL.

The design criteria were "as simple as possible and yet robust"

Best regards,

Wolfgang Denk

Signature · 7 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
READ THIS BEFORE OPENING PACKAGE: According to Certain Suggested Ver-
sions of the Grand Unified Theory, the Primary Particles Constituting
this Product May Decay to Nothingness Within the  Next  Four  Hundred
Million Years.
#9 lore raw
Quoted 10 lines · Wolfgang Denk

Dear Ben,

Quoted 5 lines · in message <[email protected]> you wrote:

Yeah, it sounds like a nice idea to use the same protocol for everything, but another way of looking at it is to use the protocol that's best-suited for the job. TFTP was designed to efficiently move large blocks of data in one direction. NFS was designed with very

Quoted 7 lines

I disagree here, both on the "large blocks" and on the "efficiently".

Remember that the initial 'T' in TFTP standas for TRIVIAL.

The design criteria were "as simple as possible and yet robust"

s/large\ blocks/single\ files/
s/efficiently/easily/

That's enough bandwidth wasted on this topic.

Ben

#12 lore raw

[U-Boot-Users] uImage staring problem on Ml403

In reply to Wolfgang Denk

Hi All,

I have successfully built u-boot 1.2.0 on my Avnet evaluation board
(ml403 like) which uses virtex-4 xilinx FPGA with built-in ppc405 processor. The u-boot was configured to deal with UART lite.

I have build also zImage.elf which runs very well on my board. I have however difficulties to run kernel image via u-boot.

My board has 32 MB of RAM memory (address range 0x000000 - 0x1ffffff)

The steps which I have done are as following:

1. I have build u-boot and loaded it via jtag to my board XMD% dow u-boot1a.elf

        section, .text: 0x01a00000-0x01a0d838
        section, .resetvec: 0x01a122f0-0x01a122f4
        section, .rodata: 0x01a0d838-0x01a0fc5b
        section, .reloc: 0x01a0fd00-0x01a102a8
        section, .data: 0x01a102a8-0x01a10740
        section, .data.rel: 0x01a10740-0x01a1076c
        section, .data.rel.local: 0x01a1076c-0x01a10ba4
        section, .u_boot_cmd: 0x01a10ba4-0x01a10db4
        section, .bss: 0x01a10e00-0x01a122f0

Downloaded Program u-boot1a.elf

2. I have loaded the uImage via jtag to the memory location 0x600000

3. I have started u-boot:

U-Boot 1.2.0 (Aug 31 2007 - 10:49:57)
### No HW ID - assuming ML403
DRAM: 32 MB
Using default environment

In:  serial
Out:  serial
Err:  serial

Hit any key to stop autoboot: 0

4. I have started uImage

=> bootm 0x600000
## Booting image at 00600000 ...

Image Name:  Linux-2.6.21-rc6
Image Type:  PowerPC Linux Kernel Image (gzip compressed)
Data Size:  981837 Bytes = 958.8 kB
Load Address: 00a00000
Entry Point:  00a00000

Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
## Current stack ends at 0x01FCC668 => set upper limit to 0x00800000 No initrd
## Transferring control to Linux (at address 00a00000) ...

5. After that the system just hangs

6. I have tried as well to run zImage.elf from u-boot (zImage.elf runs well when started straight from jtag):

=> bootelf 0x600000
Loading .text @ 0x00400000 (14140 bytes)
Loading .data @ 0x00404000 (987136 bytes)
Clearing .bss @ 0x004f5000 (8504 bytes)
## Starting application at 0x00400000 ...

loaded at:  00400000 004F7138
board data at: 004F5120 004F5138
relocated to:  004040B4 004040CC
zimage at:  00404EA9 004F49F5
avail ram:  004F8000 01FFFFFF
Linux/PPC load: console=ttyUL0,9600 root=/dev/nfs rw nfsroot=129.117.144.113:/opt/eldk41/ppc_4xx,tcp ip=::::virtex4-mirek:eth0:dhcp panic=1 

Uncompressing Linux...

7. After that system just hangs

My observation is that:
- when launching zImage from u-boot, the system blocks during zImage uncompressing
- when launching uImage from u-boot the system blocks after u-boot uncompresses the uImage

I do not know what I do wrong. Maybe the processor is not set to the correct mode of the apportion or the memory locations are not correct.

I do not also know what should be the proper: Load Address and Entry Point for uImage. The zImage refers to the location 0x400000 (as listed above).

I attache to this post my Avnet board u-boot configuration.

Any suggestion is welcome

Best Regards

Mirek

Quoted 19 lines · Wolfgang Denk
Quoted 4 lines · In message <[email protected]> you wrote:

I have found an option in u-boot to load the kernel image via nfs. I did
not find unfortunately anything about that in the u-boot manual apart from that concerning the root file system.

Well, the documentation is a wiki, so everybody can help to improve and extend it. Your contriution is welcome...

Quoted 2 lines

Is it than possible to load kernel image via nfs? If so which parameters to specify.

Hint: type "help nfs" at the U-Boot prompt.

Best regards,

Wolfgang Denk

Signature · 178 lines
=============================================================================
          Miroslaw Dach (Miroslaw.Dach at psi.ch) - SLS/Controls Group 
                PSI - Paul Scherrer Institut CH-5232 Villigen
=============================================================================
-------------- next part --------------
#ifndef __CONFIG_H
#define __CONFIG_H

/*
#define DEBUG
#define ET_DEBUG 1
*/
/*
 * High Level Configuration Options
 * (easy to change)
 */

#define CONFIG_405     1  /* This is a PPC405 CPU    */
#define CONFIG_4xx     1  /* ...member of PPC4xx family */
#define CONFIG_XILINX_AVNET_FX12   1  /* ...on a Xilinx ML410 board */

#include "../board/xilinx/avnet_fx12/xparameters.h"

/*  Make some configuration choices based on the hardware design
 *  specified in xparameters.h.
 */
#define CFG_ENV_IS_NOWHERE        1       /* no space to store environment */
#define CFG_ENV_SIZE              1024
#define CFG_NO_FLASH              1    /*    no flash */
/* #define CFG_FLASH_BASE                   XPAR_FLASH_2MX16_MEM0_BASEADDR
#define CFG_MAX_FLASH_BANKS              1
#define CFG_MAX_FLASH_SECT        64 */
#define CONFIG_BAUDRATE           9600
#define CONFIG_BOOTDELAY          10       /* autoboot after 0 seconds */
#define CONFIG_BOOTCOMMAND        ""       /* autoboot command  */
#define CONFIG_BOOTARGS           "console=ttyUL0,9600 root=/dev/nfs rw nfsroot=129.117.144.113:/opt/eldk41/ppc_4xx,tcp  ip=::::virtex4-mirek:eth0:dhcp panic=1" /* "root=/dev/ram rw"*/
#define CONFIG_SERVERIP		129.117.144.113
#define CONFIG_IPADDR		129.117.144.157
#define CONFIG_LOADS_ECHO         1       /* echo on for serial download */
#define CFG_LOADS_BAUD_CHANGE     0       /* don't allow baudrate change */

#define REMOVE_COMMANDS           ( \
 CFG_CMD_FLASH		| \
 CFG_CMD_NET            | \
 CFG_CMD_JFFS2          | \
 CFG_CMD_BDI		| \
 CFG_CMD_LOADS		| \
 CFG_CMD_LOADB		| \
 CFG_CMD_IMI		| \
 CFG_CMD_CACHE		| \
 CFG_CMD_ENV		| \
 CFG_CMD_KGDB		| \
 CFG_CMD_PCMCIA		| \
 CFG_CMD_IDE		| \
 CFG_CMD_PCI		| \
 CFG_CMD_IRQ		| \
 CFG_CMD_CONSOLE	| \
 CFG_CMD_EEPROM		| \
 CFG_CMD_ASKENV		| \
 CFG_CMD_RUN		| \
 CFG_CMD_ECHO		| \
 CFG_CMD_I2C		| \
 CFG_CMD_REGINFO	| \
 CFG_CMD_IMMAP		| \
 CFG_CMD_DATE		| \
 CFG_CMD_DHCP		| \
 CFG_CMD_BEDBUG		| \
 CFG_CMD_FDC		| \
 CFG_CMD_SCSI		| \
 CFG_CMD_AUTOSCRIPT	| \
 CFG_CMD_MII		| \
 CFG_CMD_SETGETDCR	| \
 CFG_CMD_BSP		| \
 CFG_CMD_MISC		| \
 CFG_CMD_USB		| \
 CFG_CMD_DOC		| \
 CFG_CMD_DTT		| \
 CFG_CMD_SDRAM		| \
 CFG_CMD_DIAG		| \
 CFG_CMD_FPGA		| \
 CFG_CMD_HWFLOW		| \
 CFG_CMD_SAVES		| \
 CFG_CMD_SPI		| \
 CFG_CMD_FDOS		| \
 CFG_CMD_VFD		| \
 CFG_CMD_NAND		| \
 CFG_CMD_BMP		| \
 CFG_CMD_PORTIO		| \
 CFG_CMD_PING		| \
 CFG_CMD_MMC		| \
 CFG_CMD_FAT		| \
 CFG_CMD_IMLS		| \
 CFG_CMD_ITEST		| \
 CFG_CMD_REISER		| \
 CFG_CMD_CDP		| \
 CFG_CMD_XIMG		| \
 CFG_CMD_UNIVERSE 	| \
 CFG_CMD_EXT2		| \
 CFG_CMD_SNTP		| \
 CFG_CMD_DISPLAY	  \
)

#define CONFIG_COMMANDS           (CFG_CMD_ALL  & ~REMOVE_COMMANDS)

/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
#include <cmd_confdefs.h>

/*
 * Miscellaneous configurable options
 */
#define CFG_LONGHELP      /* undef to save memory    */
#define CFG_PROMPT  "=> " /* Monitor Command Prompt  */

#define CFG_CBSIZE  256   /* Console I/O Buffer Size */

#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)   /* Print Buffer Size */
#define CFG_MAXARGS                16 /* max number of command args */
#define CFG_BARGSIZE              CFG_CBSIZE  /* Boot Argument Buffer Size  */

#define CFG_MEMTEST_START         0x0400000   /* memtest works on  */
#define CFG_MEMTEST_END           0x07fffff   /* 4 ... 12 MB in DRAM  */

#define CFG_DUART_CHAN            0
#define CFG_NS16550_REG_SIZE      -4
#define CFG_NS16550               1
#define CFG_INIT_CHAN1            1

/* The following table includes the supported baudrates */
#define CFG_BAUDRATE_TABLE  \
    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}

#define CFG_LOAD_ADDR             0x400000 /* default load address */
#define CFG_EXTBDINFO             1  /* To use extended board_into (bd_t) */

#define CFG_HZ                    1000  /* decrementer freq: 1 ms ticks */

/*-----------------------------------------------------------------------
 * Start addresses for the final memory configuration
 * (Set up by the startup code)
 * Please note that CFG_SDRAM_BASE _must_ start at 0
 */
#define CFG_SDRAM_BASE            0x00000000
#define CFG_MONITOR_BASE          0x01a00000
#define CFG_MONITOR_LEN           (192 * 1024)   /* Reserve 196 kB for Monitor */
#define CFG_MALLOC_LEN            (128 * 1024)   /* Reserve 128 kB for malloc()   */

/*
 * For booting Linux, the board info and command line data
 * have to be in the first 8 MB of memory, since this is
 * the maximum mapped by the Linux kernel during initialization.
 */
#define CFG_BOOTMAPSZ             (8 << 20)   /* Initial Memory map for Linux */

/*-----------------------------------------------------------------------
 * Cache Configuration
 */
#define CFG_DCACHE_SIZE           8192 /* Virtex-II Pro PPC 405 CPUs */
#define CFG_CACHELINE_SIZE        32 /* ...                 */

/*-----------------------------------------------------------------------
 * Definitions for initial stack pointer and data area (in DPRAM)
 */

#define CFG_INIT_RAM_ADDR         0x1700000  /* inside of SDRAM */
#define CFG_INIT_RAM_END          0x2000     /* End of used area in RAM */
#define CFG_GBL_DATA_SIZE         128     /* size in bytes reserved for initial data */
#define CFG_GBL_DATA_OFFSET      (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
#define CFG_INIT_SP_OFFSET       CFG_GBL_DATA_OFFSET

/*
 * Internal Definitions
 *
 * Boot Flags
 */
#define BOOTFLAG_COLD             0x01  /* Normal Power-On: Boot from FLASH */
#define BOOTFLAG_WARM             0x02  /* Software reboot         */

#endif           /* __CONFIG_H */