Skip to content
gtxaspec edited this page Nov 18, 2024 · 1 revision

Caution

WORK IN PROGRESS USE AT YOUR OWN RISK
DEVELOPMENT ONLY

Booting U-Boot from NFS: A Step-by-Step Guide

This guide provides instructions on how to boot a device using U-Boot over NFS. The examples include booting with just a root filesystem (rootfs) and booting with both the rootfs and the kernel loaded over NFS.

Prerequisites

  1. NFS Server Configuration: Ensure your NFS server is configured to export the rootfs directory and is accessible from your device.
  2. Network Configuration: Configure your network settings (IP, gateway, server IP) correctly.

NFS Server Setup

On the server, you need to export the rootfs directory:

/mnt/exported/path *(rw,no_root_squash,no_subtree_check,sync)

Make sure the NFS server is running and properly configured to allow connections from the client device.

U-Boot Configuration

1. Set Up U-Boot Environment Variables

Start by setting the necessary environment variables:

setenv enable_updates true
setenv ipaddr 192.168.1.100       # IP address of the device
setenv gatewayip 192.168.1.1      # Gateway IP
setenv serverip 192.168.1.10      # IP address of the NFS server
setenv nfsroot /mnt/exported/path # NFS server export path

2. Booting with NFS Root Filesystem

To boot using only the root filesystem over NFS, set the following bootargs:

setenv bootargs 'mem=${osmem} rmem=${rmem} console=${serialport},${baudrate}n8 panic=${panic_timeout} init=/init root=/dev/nfs rootfstype=nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,nolock rw mtdparts=jz_sfc:256k(boot),64k(env),${kern_size}(kernel),${rootfs_size}(rootfs),-(rootfs_data)${update}'
boot

3. Loading Kernel from NFS

To load the kernel image from NFS and then boot, use the following commands:

setenv kernel_image /mnt/exported/path/uImage
setenv loadaddr ${baseaddr};
nfs ${loadaddr} ${serverip}:${kernel_image}
bootm ${baseaddr};

This sequence sets the kernel image path and loads it from the NFS server into memory, followed by booting the kernel.

4. Loading Both Kernel and Root Filesystem from NFS

For loading both the kernel and root filesystem from NFS, the steps are as follows:

setenv enable_updates true
setenv ipaddr 192.168.1.100
setenv gatewayip 192.168.1.1
setenv serverip 192.168.1.10
setenv nfsroot /mnt/exported/path
setenv kernel_image /mnt/exported/path/uImage

setenv bootargs 'mem=${osmem} rmem=${rmem} console=${serialport},${baudrate}n8 panic=${panic_timeout} init=/init root=/dev/nfs rootfstype=nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,nolock rw mtdparts=jz_sfc:256k(boot),64k(env)'

setenv bootcmd 'setenv loadaddr ${baseaddr};nfs ${loadaddr} ${serverip}:${kernel_image};setenv setargs setenv bootargs ${bootargs};run setargs;bootm ${baseaddr};'

boot

5. Loading Both Kernel and Root Filesystem from NFS, via USB Ethernet

If you have a device with an ASIX supported USB Ethernet adapter, you can use the previous steps with this modification, add usb start to bootcmd:

setenv bootcmd 'usb start;setenv loadaddr ${baseaddr};nfs ${loadaddr} ${serverip}:${kernel_image};setenv setargs setenv bootargs ${bootargs};run setargs;bootm ${baseaddr};'

This setup ensures both the kernel and the root filesystem are loaded over NFS.

Saving Configuration

To retain the setup across reboots, save the environment variables by running saveenv.

Troubleshooting

  • NFS Version Support: Thingino's U-Boot supports NFS v2 or v3. Ensure that your server is configured to support one of these versions.
  • UDP Support: U-Boot in this setup requires UDP for loading the kernel via NFS, so ensure your NFS server is configured to allow UDP for this purpose. For loading the root filesystem, UDP is not required. Alternatively, you can use TFTP to load the kernel instead of NFS.

Notes

  • Replace the IP addresses and paths with your actual network configuration and server paths.
  • For documentation purposes, the IP ranges and paths used are within the private range specified for examples.

This guide should help you boot your device for rapid development using U-Boot over NFS, whether you're loading just the rootfs or both the rootfs and kernel.

  1. Wiki Home
  2. About the Project
    1. Contributions
    2. Features
    3. Project Philosophy
    4. Releases
  3. Getting Started
    1. FAQ
    2. Hardware Identification
    3. Ingenic USB Cloner
      1. OTG Booting
    4. PPSTRONG
    5. Installation: General
    6. Installation: No Tools Methods
    7. Resources and Links
    8. Support Community
    9. Troubleshooting
    10. UART Connection
    11. Updating Firmware
    12. Unbricking
    13. Web UI
  4. Supported Cameras
    1. Cameras
    2. 360 AP1PA3
    3. AliExpress LTIA‐37FJZ (Vanhua Z55 module)
    4. AOQEE C1
    5. Aosu C5L
    6. Cinnado
      1. Cinnado D1 2K
      2. Cinnado D1 3K
    7. Dekco DC5L
    8. Eufy
      1. Eufy E210 Outdoor Cam
      2. Eufy E220
    9. Galayou/Wansview
      1. Galayou G2
      2. Galayou G7
      3. Wansview W6
      4. Wansview W7/Galayou Y4
    10. Hualai (Wyze/Atom/Neos/Personal)
      1. Dafang Upgrading for Wyze v2
      2. NEOS conversion
      3. Personalcam
      4. Wyze Cam Pan V1
      5. Wyze Doorbell (V1)
        1. Chime Reverse Engineering
      6. Wyze v2/Neos SmartCam/ATOM Cam 1
      7. Wyze v3
      8. Wyze Accessories
    11. iFlytek XFP301‐M
    12. Jienuo JN-107-AR-E-WIFI
    13. Jooan A6M
    14. LaView L2
    15. LongPlus X07
    16. LSC 3215672
    17. Sannce I21AG
    18. Sonoff Cam‐S2
    19. TP-Link Tapo C100/C110/C111
    20. Wuuk Y0510
    21. Xiaomi
      1. Xiaomi Mijia1080p (SXJ02ZM)
      2. Xiaomi MJSXJ03HL
      3. Xiaomi Outdoor Camera AW200 (MJSXJ05HL)
  5. Configuration
    1. Administration
    2. Automation
    3. Cron jobs
    4. General
    5. LED Indicators
    6. Lighting
    7. Media Streaming Endpoints
    8. Network Storage
    9. Networking
      1. Wireless Networking
      2. USB Direct w CDC
      3. USB Ethernet Networking
      4. Remote Access
      5. VPN
        1. Tailscale
        2. Wireguard
        3. Zerotier
      6. Wi-Fi
        1. Self Hosted AP
        2. Tips and Tricks
      7. WWAN (Cellular)
    10. Night Mode
    11. ONVIF
    12. OSD (On-screen Display)
    13. Plugins
      1. Motion Guard
      2. Yandex Disk
    14. SSH Access Keys
    15. Wi-Fi Access
    16. Provisioning
    17. Streamer Bitrate Control
  6. Integration
    1. Home Assistant
    2. Frigate
    3. Ingenic A1/$15 NVR
    4. Mobile Apps
    5. MQTT Integration
    6. Virtual Webcam on Linux
    7. Mainsail (Klipper)
  7. Development
    1. Booting
      1. Boot: MMC SD
      2. Boot: NFS
    2. CH341A Programmer
    3. RTSP Players
    4. Flash Chips
    5. go2rtc
    6. Porting Guide
    7. Ingenic Platform Capability Matrix
    8. Ingenic Image Processor
    9. ISP Reserved Memory (RMEM)
    10. Debugging
    11. Software
      1. Building From Sources
      2. Buildroot
      3. Toolchain
      4. Choice of JSON library
    12. SSL and TLS Web UI in thingino
    13. Tech Info
      1. Hardware
      2. PWM Info
      3. Supported Hardware
      4. T23 GPIOs
      5. T31 GPIOs
    14. U-Boot Cheatsheet
    15. Zeratul/Atlas/Tassadar
    16. Resources

Clone this wiki locally