[PATCH 2/2] defaultenv: boot/net: allow customising NFS port and path

Roland Hieber rhi at pengutronix.de
Mon Feb 13 03:38:57 PST 2023


On Mon, Feb 13, 2023 at 08:42:11AM +0100, Sascha Hauer wrote:
> On Fri, Feb 10, 2023 at 11:48:31PM +0100, Roland Hieber wrote:
> > There are use cases where the port and mount path of the NFS root need
> > to be changed from the default values, e.g. with the userspace NFS
> > daemon used by 'ptxdist nfsroot', which tells you:
> > 
> >     Mount rootfs with nfsroot=/root,v3,tcp,port=13049,mountport=13049
> > 
> > (The port number can vary of course, depending on how many users on your
> > devel server have already started unfsd at the same time.)
> > 
> > Support such use cases by introducing two new variables for the port
> > number and the mount path, which get inserted into the kernel command
> > line. Use the old default mount path as fallback when the new variable
> > is not set.
> 
> Does this approach really make you happy with your usecase? The port
> may change with every invocation of 'ptxdist nfsroot'.
> 
> With bootloaderspec it should be possible to do this in barebox:
> 
> boot nfs://host:13049//root

Ah, I didn't know this! This seems more reasonable to me! :-)

> If that works we might convince Michael to print this line suitable for
> copy-paste along with the output of 'ptxdist nfsroot'.

The message is actually printed by unfsd, but I'll see how this could be
done reasonably in PTXdist.

 - Roland

> Sascha
> 
> > 
> > Signed-off-by: Roland Hieber <rhi at pengutronix.de>
> > ---
> >  Documentation/user/networking.rst     | 10 ++++++++++
> >  defaultenv/defaultenv-2-base/boot/net | 11 ++++++++++-
> >  2 files changed, 20 insertions(+), 1 deletion(-)
> > 
> > diff --git a/Documentation/user/networking.rst b/Documentation/user/networking.rst
> > index 6bd16ea8d1bd..e95957c0a26a 100644
> > --- a/Documentation/user/networking.rst
> > +++ b/Documentation/user/networking.rst
> > @@ -53,6 +53,16 @@ device:
> >  | global.net.nameserver        | ipv4 address | The DNS server used for resolving host names.         |
> >  |                              |              | May be set by DHCP.                                   |
> >  +------------------------------+--------------+-------------------------------------------------------+
> > +| global.net.nfspath           | string       | If set, determines the mount path of the root         |
> > +|                              |              | file system on the NFS server.                        |
> > +|                              |              | If not set, the default value                         |
> > +|                              |              | ``/home/${global.user}/nfsroot/${global.hostname}``   |
> > +|                              |              | is used.                                              |
> > ++------------------------------+--------------+-------------------------------------------------------+
> > +| global.net.nfsport           | short        | If set, determines the port of the NFS server         |
> > +|                              |              | (the ``mountport`` and ``port`` arguments of the      |
> > +|                              |              | ``nfsroot`` parameter in the kernel command line).    |
> > ++------------------------------+--------------+-------------------------------------------------------+
> >  | global.net.ifup_force_detect | boolean      | Set to true if your network device is not             |
> >  |                              |              | detected automatically during start (i.e. for         |
> >  |                              |              | USB network adapters).                                |
> > diff --git a/defaultenv/defaultenv-2-base/boot/net b/defaultenv/defaultenv-2-base/boot/net
> > index e79432eb277c..236955ef6fed 100644
> > --- a/defaultenv/defaultenv-2-base/boot/net
> > +++ b/defaultenv/defaultenv-2-base/boot/net
> > @@ -22,7 +22,16 @@ initramfs="${path}/${global.user}-initramfs-${global.hostname}"
> >  if [ -f "${initramfs}" ]; then
> >  	global.bootm.initrd="$initramfs"
> >  else
> > -	nfsroot="${nfsserver}:/home/${global.user}/nfsroot/${global.hostname}"
> > +	if [ -z "${global.net.nfspath}" ]; then
> > +		nfsroot="${nfsserver}:/home/${global.user}/nfsroot/${global.hostname}"
> > +	else
> > +		nfsroot="${nfsserver}:${global.net.nfspath}"
> > +	fi
> > +
> > +	if [ -n "${global.net.nfsport}" ]; then
> > +		nfsroot="${nfsroot},port=${global.net.nfsport},mountport=${global.net.nfsport}"
> > +	fi
> > +
> >  	ip_route_get -b ${global.net.server} global.linux.bootargs.dyn.ip
> >  	global.linux.bootargs.dyn.root="root=/dev/nfs nfsroot=$nfsroot,v3,tcp"
> >  fi
> > -- 
> > 2.30.2
> > 
> > 
> > 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> 

-- 
Roland Hieber, Pengutronix e.K.          | r.hieber at pengutronix.de     |
Steuerwalder Str. 21                     | https://www.pengutronix.de/ |
31137 Hildesheim, Germany                | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686         | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list