BeagleBoneNFSBoot

BeagleBone NFS boot using Ubuntu as host

=
============================

Prepare host -

1. Install packages: sudo apt-get install tftpd tftp nfs-kernel-server

2. Create /etc/xinetd.d/tftpd with the following text

-- SNIP -- service tftp {   socket_type     = dgram protocol       = udp wait           = yes user           = root server         = /usr/sbin/in.tftpd server_args    = -s /tftpboot disable        = no } -- SNIP --
 * 1) default: off
 * 2) description: The tftp server serves files using the Trivial File Transfer
 * 3)    Protocol.  The tftp protocol is often used to boot diskless \
 * 4)    workstations, download configuration files to network-aware printers, \
 * 5)    and to start the installation process for some operating systems.
 * 1)    and to start the installation process for some operating systems.

3. Create /tftpboot sudo mkdir /tftpboot sudo chown $USER /tftpboot touch /tftpboot/testfile  # Create a test file

4. Put the following line in /etc/exports:

/path_to_your_root_filesystem *(rw,sync,no_subtree_check,no_root_squash)

where /path_to_your_root_filesystem is to be replaced with the path to the rootfs that you want to export.

IMPORTANT: This is a pretty serious security risk. It's advisable to only do this on a network you have control of. Please read the man page for exports (run "man exports") to learn more about NFS and security.

5. Start Services sudo service nfs-kernel-server restart sudo service xinetd restart

6. Check tftp tftp localhost (then from the tftp> prompt) get testfile

If there's no error message after "get testfile", it succeeded. Type "exit."

7. Check NFS mkdir /mnt/nfstemp sudo mount your_ip_address:/path_to_your_root_filesystem /mnt/nfstemp (where your_ip_address is your IP address, and /path_to_your_root_filesystem is the path of the root filesystem you exported in step 4.

umount /mnt/nfstemp

8. Copy your kernel and DTB to /tftpboot

9. Reset your beaglebone, stopping at the u-boot prompt

10. Execute the following: dcache off setenv ipaddr IP_ADDR_TO_ASSIGN_TO_BONE setenv serverip IP_ADDR_OF_YOUR_PC tftpboot 0x815f0000 ${serverip}:YOUR_KERNEL_FILE_NAME tftpboot DTADDR ${serverip}:YOUR_DTB_FILE_NAME

setenv bootargs console=ttyO0,115200n8 root=/dev/nfs \ nfsroot=${serverip}:/path_to_your_root_filesystem rw ip=${ipaddr}

bootm 0x815f0000 - DTADDR