[OpenWrt-Devel] [PATCH] kernel/build: Fix SetNfsCmdline to work with new .config.set

Petr Štetiar ynezz at true.cz
Wed Feb 10 06:43:44 EST 2016

Florian Fainelli <florian at openwrt.org> [2016-02-09 19:57:22]:

> Le 09/02/2016 12:16, Petr Štetiar a écrit :
> > Petr Štetiar <ynezz at true.cz> [2016-02-09 21:04:14]:
> > 
> >>>    define Kernel/SetNfsCmdline
> >>>  	rm -f $(LINUX_DIR)/.config.prev
> >>> -	mv $(LINUX_DIR)/.config $(LINUX_DIR)/.config.old
> >>> -	grep -v "CONFIG_CMDLINE=" $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config
> >>> -	grep "CONFIG_CMDLINE=" $(LINUX_DIR)/.config.old | cut -d\" -f2 | sed 's/root=\/dev\/\([a-z0-9]*\)\(.*\)/CONFIG_CMDLINE=\"root=\/dev\/nfs ip=dhcp\2\"/' >> $(LINUX_DIR)/.config
> >>> +	mv $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.old
> >>> +	grep -v "CONFIG_CMDLINE=" $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config.set
> >>> +	grep "CONFIG_CMDLINE=" $(LINUX_DIR)/.config.old | cut -d\" -f2 | sed 's/root=\/dev\/\([a-z0-9]*\)\(.*\)/CONFIG_CMDLINE=\"root=\/dev\/nfs ip=dhcp\2\"/' >> $(LINUX_DIR)/.config.set
> >>>    endef
> >>
> >> This cut/sed kung-fu needs some improvements:
> >>
> >>  * it doesn't work correctly in case of empty cmdline, CONFIG_CMDLINE=""
> >>  * how to handle custom cmdline options? For example I don't want to use this
> >>    hardcoded cmdline options, but use instead options provided by the bootloader
> > 
> > Hm, now I'm wondering why is this macro needed at all. In case I'll set
> > CONFIG_KERNEL_ROOT_NFS=y, then I can set CONFIG_CMDLINE accordingly also,
> > right?
> > 
> > Florian, what's your use case for this SetNfsCmdline macro, that you need to
> > hardcode kernel cmdline options? Thanks.
> Not all platforms get their command-line from the bootloader, or Device
> Tree, or whatever, some do actually hardcode the command-line into the
> kernel, that's what motivated this change in the first place.

I see, but I'm not sure how to handle it properly so it works for other use
cases as well. Maybe adding something like CONFIG_CMDLINE_NFSROOT option, but
this seems like overdesigning to me...

FYI, I'm using this base-files-nfs[1] package for development over NFS for a
few years already, currently on i.MX6 with u-boot like this:

  setenv nfsroot /opt/devel/openwrt-master.git/bin/imx6/rootfs
  setenv nfsargs root=/dev/nfs nfsroot=${serverip}:${nfsroot} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:apalis:eth0:off nfsrootdebug

I've noticed, that you've added something similar to the OpenWRT config

   buildroot: add options to build the kernel for NFS boot

And I've to test it yet - just wondering if we don't need to use similar
approach to skip network initialization in case we boot over NFS as it's
currently done in base-files-nfs[1] package.

> I am fine dropping this, since obviously; if you turn on the option you
> know what you are doing, can you re-submit the patch you think is
> appropriate?

More information about the openwrt-devel mailing list