rc.conf amalgamation
Before converting into the native form for this system the external formats import subsystem first creates an amalgamated rc.conf file which incorporates the information from all of the several system rc.conf files as well as from other sources.
This file incorporates the information from:
/etc/default/rc.conf, which is the "known starting point" of the rc.conf system.
All files named in the rc_conf_files setting that is in /etc/default/rc.conf.
These include /etc/rc.conf, /etc/rc.conf.local, and any further extra files employed by FreeBSD derivatives.
Note:
OpenBSD nowadays has the explicit requirement that /etc/rc.conf not employ any shell constructs other than simple variable assignments, and actually be a data file with variable=value assignments that can be processed without using a shell language interpreter.
The amalgamation system enforces this on Linux.
One can get away, to a small extent, with using shell scripting in these files on FreeBSD and derivatives; however it is strongly recommended to follow the lead of OpenBSD here and not do so.
The FreeNAS /data/freenas-v1.db database, in particular the enabled "system tunables".
The results of converting several Debian settings files into the equivalent FreeBSD rc.conf settings:
/etc/vconsole.conf, which is the systemd console settings file;
/etc/defaults/console-setup and /etc/defaults/keyboard, which are the Debian console-setup and keyboard packages' console settings files;
/etc/kbd/config, which is the Debian kbd package's console settings file;
and
/etc/network/interfaces, which is the Debian ifupdown package's network interface settings file.
The results of converting OpenBSD settings files into the equivalent FreeBSD rc.conf settings:
/etc/hostname.interface, which is the network settings file for interface interface.
Several hostname settings files:
/etc/HOSTNAME and /etc/hostname
/etc/sysconfig/network, /etc/conf.d/hostname, and /etc/default/hostname, which are expected to be rc.conf style settings files with hostname or HOSTNAME settings
The same restriction applies these as to /etc/rc.conf: they should not employ any shell constructs other than simple variable assignments.
This takes over external configuration import functionality that used to be, but is no longer, part of set-dynamic-hostname.
set-dynamic-hostname only uses native configuration mechanisms, environment variables, now; relying upon the external configuration import subsystem to translate all of the aforementioned non-native configuration systems.
The result is an amalgam that can be conveniently used with read-conf when one needs to access configuration settings.
This amalgam is the unified source of information for the subsequent conversion into native form.
The amalgamation process is not designed to be restrictive when it comes to platforms.
It permits (for examples) a Debian-style /etc/network/interfaces to be used on OpenBSD, or a FreeNAS database to be used on Debian, or an OpenBSD /etc/hostname.interface file to be used on FreeBSD.
The conversion of a Debian-style /etc/network/interfaces can cope with the "new-style" assignments of multiple IP address to a single network interface, where one repeats the same iface … static "stanza" several times.
However, it does not convert any post-up or pre-down settings.
Those do not have rc.conf equivalents; and the conversion of /etc/network/interfaces is constrained to stuff that does not constitute the execution of arbitrary commands and programs.
The conversion of an OpenBSD /etc/hostname.interface file does not convert any embedded shell commands.
It also marks all interfaces as "AUTO".