mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-16 10:20:30 +00:00
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
This commit is contained in:
parent
a2a90d6ee5
commit
b4d24263c2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=339465
@ -111,6 +111,15 @@
|
||||
# created for /SUBDIR if necessary). The presence of this file
|
||||
# prevents the copy from /conf/T/SUBDIR/
|
||||
#
|
||||
# /conf/T/M/extract
|
||||
# This is alternative to SUBDIR.cpio.gz and remount.
|
||||
# Similar to remount case, a memory filesystem is created
|
||||
# for /M and initialized from a template but no mounting
|
||||
# performed. Instead, this file is run passing /M as singe
|
||||
# argument. It is expected to extract template override to /M
|
||||
# using auxiliary storage found in some embedded systems
|
||||
# having NVRAM too small to hold mountable file system.
|
||||
#
|
||||
# /conf/T/SUBDIR.remove
|
||||
# The list of paths contained in the file are rm -rf'd
|
||||
# relative to /SUBDIR.
|
||||
@ -343,8 +352,8 @@ done
|
||||
|
||||
# - Create all required MFS filesystems and populate them from
|
||||
# our templates. Support both a direct template and a dir.cpio.gz
|
||||
# archive. Support dir.remove files containing a list of relative
|
||||
# paths to remove.
|
||||
# archive. Support for auxiliary NVRAM. Support dir.remove files containing
|
||||
# a list of relative paths to remove.
|
||||
#
|
||||
# The dir.cpio.gz form is there to make the copy process more efficient,
|
||||
# so if the cpio archive is present, it prevents the files from dir/
|
||||
@ -367,6 +376,15 @@ for i in ${templates} ; do
|
||||
(cd / ; /rescue/tar -xpf $j)
|
||||
fi
|
||||
done
|
||||
for j in /conf/$i/*/extract ; do
|
||||
if [ -x $j ]; then
|
||||
subdir=${j%*/extract}
|
||||
subdir=${subdir##*/}
|
||||
create_md $subdir
|
||||
echo "Loading /$subdir using auxiliary command $j"
|
||||
$j /$subdir
|
||||
fi
|
||||
done
|
||||
for j in /conf/$i/*.remove ; do
|
||||
subdir=${j%*.remove}
|
||||
subdir=${subdir##*/}
|
||||
|
Loading…
Reference in New Issue
Block a user