This tutorial assumes your host PC is running Ubuntu 14.04.1 LTS or later and is on the same local network as your development platform; for simplicity's sake we assume a DHCP server is available on the network, too.
If using Juno, ensure you are using the front ethernet port.
See this page for instructions on how to TFTP boot the Linux kernel using U-Boot.
Install the following packages on your host PC:
$ sudo apt-get update && sudo apt-get install nfs-kernel-server rpcbind
Switch to root user:
$ sudo -i
Create a root `/export/' directory that we will use to host the filesystem:
`/export/'
# mkdir /export/
Set the permissions of the hosted filesystem but adding the following line to file `/etc/exports':
`/etc/exports'
/export/ *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
To avoid potential file permission problems we will avoid using NFSv4. Set the default to NFSv3 by editing `/etc/default/nfs-kernel-server' as shown:
`/etc/default/nfs-kernel-server'
# Number of servers to start up # To disable nfsv4 on the server, specify `--no-nfs-version 4' here #RPCNFSDCOUNT=8 RPCNFSDCOUNT="--no-nfs-version 4"
Then restart the `nfs-kernel-server' service:
`nfs-kernel-server'
# service nfs-kernel-server restart
Now check that `portmapper', `nfs', and `mountd' are all running on both `tcp' and `udp':
`portmapper'
`nfs'
`mountd'
`tcp'
`udp'
# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 43672 status 100024 1 tcp 56293 status 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 100227 3 tcp 2049 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 100227 3 udp 2049 100021 1 udp 53079 nlockmgr 100021 3 udp 53079 nlockmgr 100021 4 udp 53079 nlockmgr 100021 1 tcp 50750 nlockmgr 100021 3 tcp 50750 nlockmgr 100021 4 tcp 50750 nlockmgr 100005 1 udp 50127 mountd 100005 1 tcp 48215 mountd 100005 2 udp 49557 mountd 100005 2 tcp 46457 mountd 100005 3 udp 36349 mountd 100005 3 tcp 54121 mountd
Next extract your desired root filesystem into the `/export/' directory, optionally placing it in a subdirectory. In this example we extracted the root filesystem to `/export/juno/fs/'.
`/export/juno/fs/'
Power up the Juno board and interrupt U-Boot's default boot selection:
The default boot selection will start in 3 seconds
Save your host PC's IP address to the `serverip' environment variable:
`serverip'
VExpress64# set serverip <host_pc_ip_address> VExpress64# saveenv
Next modify U-Boot's boot args to find the root filesystem using NFS:
VExpress64# set origbootargs "$bootargs" VExpress64# set bootargs "console=ttyAMA0,115200n8 root=/dev/nfs ip=dhcp nfsroot=${serverip}:/export/juno/fs rw rootwait earlyprintk=pl011,0x7ff80000 debug" VExpress64# saveenv
Then reboot the Juno; it should find the root filesystem using NFS.
This is a persistent change. To revert back to the default boot behaviour:
VExpress64# set bootargs "$origbootargs"