Skip to content
/ wiki Public

dev-nfs-boot: document openipc-nfs-root package + standalone manual guide#476

Open
widgetii wants to merge 1 commit into
masterfrom
docs/nfs-root-package
Open

dev-nfs-boot: document openipc-nfs-root package + standalone manual guide#476
widgetii wants to merge 1 commit into
masterfrom
docs/nfs-root-package

Conversation

@widgetii

Copy link
Copy Markdown
Member

Summary

Expands en/dev-nfs-boot.md into a complete, self-contained guide to NFS root boot, covering both the hands-on manual method and the new openipc-nfs-root Buildroot package.

Manual method

Rewrote the thin u-boot snippet into a full step-by-step walkthrough: UART console wiring (with the 12 V warning), saving the current u-boot env, TFTP server setup (kernel), NFS server setup (rootfs), the bootargs/nfsroot boot sequence, first login, and making it permanent / reverting to stock. This content was translated from the external Russian write-up and folded in, so the page is now standalone English with no cross-language links.

openipc-nfs-root package

Documents the opt-in package workflow: why to use it, building via contrib/make_nfsroot or the openipc.fragment, the config options, server setup, u-boot bootargs (including the ethaddr=/DT MAC handling), read-only vs read-write modes, the no-op ifup/ifdown networking behaviour, and troubleshooting.

Review request

@tinylabs — since this documents your NFS-root work, could you sanity-check the package section for accuracy (the make_nfsroot flags, config defaults, RO/RW semantics, and the bootargs example)? Want to make sure the docs match the implementation before this goes live.

…uide

Expand the NFS boot page into a complete, self-contained guide:

- Rewrite the manual UART/TFTP/NFS walkthrough as a full step-by-step
  procedure (console wiring, saving the u-boot env, TFTP and NFS server
  setup, the bootargs sequence, first login, making it permanent/revert).
  Content translated to English and folded in so the page no longer points
  readers to an external Russian write-up.
- Add a section on the opt-in `openipc-nfs-root` Buildroot package: why to
  use it, building via contrib/make_nfsroot or the fragment, config options,
  server setup, u-boot bootargs, read-only vs read-write modes, the no-op
  ifup/ifdown networking behaviour, and troubleshooting.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tinylabs

tinylabs commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

Looks good! Couple notes:

Omit it to let a device-tree MAC win; omit both for a random MAC

Even with ethaddr= in bootargs the DT mac will win currently.

bootargs section
hostname= — optional; otherwise a DHCP- or build-supplied hostname is used.

This is the preferred method for setting hostname since it works across multiple cameras all mounting the same rootfs as RO. The only way it gets overridden (when present) is when we pass it via the DHCP request and the server responds with a different hostname due to a static lease. In my testing it's always been honored when using dynamic leases (on opnsense at least). For the DHCP use case I would recommend setting hostname= (in bootargs) and bootp_vci (in uboot env) to the same unique name. That makes tagging and option serving easier when configuring DHCP.

Here's a useful configuration which might be nice to add.

  • On the NFS server have a single readonly rootfs per platform.
  • For each camera you can have a small overlay directory mounted with overlayfs using the common readonly root as lowerdir.
  • Mount each camera RW using the specific cam rootfs mount.
  • All small tweaks go into the camera specific rootfs dir (ssh keys, majestic tweaks, etc).
  • The common base stays the same and can be copied directly over when deploying a new make_nfsroot build.
  • Makes it easy to maintain camera specific changes.

Everything else looks good!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants