Created attachment 162691 [details] support for auxiliary NVRAM /etc/rc.initdiskless makes excellent job for initial configuration for diskless systems and systems with read-only boot media. It is used, for example, with nanobsd(8). Currently, rc.inidiskless assumes that local system configuration changes are kept in some mountable file system. Nanobsd uses dedicated partition mounted as /cfg for this. However, small embedded devices like MIPS routers may have no enough flash space to keep full-blown file system but have only one or couple of small flash blocks for persistent configuration. The following patch extends rc.initdiskless and introduces ability to run auxiliary command /conf/T/M/extract that is supposed to extract configuration overrides from such local storage. For example, the command /conf/default/etc/extract may contain something like: 'cd "$1" && bsdcpio --quiet -idu < /dev/map/cfg' Assuming the storage is exposed by a kernel as /dev/map/cfg to userland, bsdcpio command extracts compressed archive from the storage to /etc.
Is there any reason why mdconfig/mdconfig2 can't be used instead? We have a lot of interfaces for doing X with rc to mount file systems in memory. I'd really like to simplify things...
The reason is that /etc/rc.initdiskless runs very early at boot, take a look at /etc/rc. Its duty is extract /etc/rc.conf from NVRAM, for example. load_rc_config and rcorder run later.
My PR.
A commit references this bug: Author: eugen Date: Sat Oct 20 18:13:51 UTC 2018 New revision: 339465 URL: https://svnweb.freebsd.org/changeset/base/339465 Log: rc.initdiskless: add support for auxiliary NVRAM. Currently, rc.inidiskless assumes that local system configuration changes are kept in some mountable file system. For example, nanobsd uses dedicated partition mounted as /cfg for this. However, small embedded devices like MIPS routers may have no enough flash space to keep full-blown file system but have only one or couple small flash blocks to keep persistent local configuration overrides. This change extends rc.initdiskless and introduces ability to run auxiliary command /conf/T/M/extract that is supposed to extract configuration overrides from such local storage. For example, the command /conf/default/etc/extract may contain something like: cd "$1" && bsdcpio --quiet -idu < /dev/map/cfg bsdcpio command extracts compressed archive from the storage to /etc assuming the storage is exposed by the kernel as /dev/map/cfg to userland. PR: 204215 MFC after: 1 month Changes: head/libexec/rc/rc.initdiskless
A commit references this bug: Author: eugen Date: Mon Nov 19 06:33:38 UTC 2018 New revision: 340610 URL: https://svnweb.freebsd.org/changeset/base/340610 Log: MFC r339465: rc.initdiskless: add support for auxiliary NVRAM. Currently, rc.inidiskless assumes that local system configuration changes are kept in some mountable file system. For example, nanobsd uses dedicated partition mounted as /cfg for this. However, small embedded devices like MIPS routers may have no enough flash space to keep full-blown file system but have only one or couple small flash blocks to keep persistent local configuration overrides. This change extends rc.initdiskless and introduces ability to run auxiliary command /conf/T/M/extract that is supposed to extract configuration overrides from such local storage. For example, the command /conf/default/etc/extract may contain something like: cd "$1" && bsdcpio --quiet -idu < /dev/map/cfg bsdcpio command extracts compressed archive from the storage to /etc assuming the storage is exposed by the kernel as /dev/map/cfg to userland. PR: 204215 Changes: _U stable/12/ stable/12/libexec/rc/rc.initdiskless
A commit references this bug: Author: eugen Date: Mon Nov 19 06:37:39 UTC 2018 New revision: 340611 URL: https://svnweb.freebsd.org/changeset/base/340611 Log: MFC r339465: rc.initdiskless: add support for auxiliary NVRAM. Currently, rc.inidiskless assumes that local system configuration changes are kept in some mountable file system. For example, nanobsd uses dedicated partition mounted as /cfg for this. However, small embedded devices like MIPS routers may have no enough flash space to keep full-blown file system but have only one or couple small flash blocks to keep persistent local configuration overrides. This change extends rc.initdiskless and introduces ability to run auxiliary command /conf/T/M/extract that is supposed to extract configuration overrides from such local storage. For example, the command /conf/default/etc/extract may contain something like: cd "$1" && bsdcpio --quiet -idu < /dev/map/cfg bsdcpio command extracts compressed archive from the storage to /etc assuming the storage is exposed by the kernel as /dev/map/cfg to userland. PR: 204215 Changes: _U stable/11/ stable/11/etc/rc.initdiskless
A commit references this bug: Author: eugen Date: Mon Nov 19 06:39:00 UTC 2018 New revision: 340612 URL: https://svnweb.freebsd.org/changeset/base/340612 Log: MFC r339465: rc.initdiskless: add support for auxiliary NVRAM. Currently, rc.inidiskless assumes that local system configuration changes are kept in some mountable file system. For example, nanobsd uses dedicated partition mounted as /cfg for this. However, small embedded devices like MIPS routers may have no enough flash space to keep full-blown file system but have only one or couple small flash blocks to keep persistent local configuration overrides. This change extends rc.initdiskless and introduces ability to run auxiliary command /conf/T/M/extract that is supposed to extract configuration overrides from such local storage. For example, the command /conf/default/etc/extract may contain something like: cd "$1" && bsdcpio --quiet -idu < /dev/map/cfg bsdcpio command extracts compressed archive from the storage to /etc assuming the storage is exposed by the kernel as /dev/map/cfg to userland. PR: 204215 Changes: stable/10/etc/rc.initdiskless