Not sure what you mean by “doesn’t involve the command line” but I still favor passing config to the kernel at boot as kernel parameters, be it specific inidvidual configuration options or a complete JSON structure.
Linux does it with bootparam http://man7.org/linux/man-pages/man7/bootparam.7.html tinycore linux for example does this with its “bootcodes” which are the same. Below is the boot stanza from a grub menu.list file: title tinycore root (hd1,0) kernel /tce/bzImage quiet waitusb=5 tce=UUID="F0BC-3CAF" tz=EST,M10.1.0/2,M4.1.0/2 initrd /tce/tinycore.gz And if NetBSD writes the kernel command line to some location such as /proc/cmdline the an application can pass in its own configuration information via the same mechanism. From the tinycore docs: http://wiki.tinycorelinux.net/wiki:boot_codes_explained http://wiki.tinycorelinux.net/wiki:boot_options Tiny Core accepts the following persistence options: tinycore tce={hda1|sda1} Specify Restore TCE apps directory tinycore restore={hda1|sda1|floppy} Specify saved configuration location tinycore waitusb=X Wait X seconds for slow USB devices tinycore swapfile{=hda1} Scan or Specify swapfile tinycore home={hda1|sda1} Specify persistent home directory tinycore opt={hda1|sda1} Specify persistent opt directory tinycore local={hda1|sda1} Specify PPI directory or loopback file tinycore lst=yyy.lst Load alternate static yyy.lst on boot tinycore base Skip TCE load only the base system tinycore norestore Turn off the automatic restore tinycore safebackup Saves a backup copy (mydatabk.tgz) tinycore showapps Display application names when booting F3 boot time options: Tiny Core accepts the following additional boot time options: Color 640x480 800x600 1024x768 1280x1024 256 8 bit 769 771 773 775 32000 15 bit 784 787 790 793 65000 16 bit 785 788 791 794 16.7M 24 bit 786 789 792 795 tinycore vga=7xx 7xx from table above tinycore xsetup Prompt user for Xvesa setup tinycore lang=en C only unless getlocale.tcz is installed tinycore kmap=us US only unless kmaps.tcz is installed tinycore text Textmode tinycore superuser Textmode as user root tinycore noicons Do not use icons tinycore noswap Do not use swap partition tinycore nodhcp Skip the dhcp request at boot tinycore noutc BIOS is using localtime tinycore pause Pause at completion of boot messages F4 boot time options: Tiny Core accepts the following additional boot time options: tinycore {cron|syslog} Start various daemons at boot tinycore host=xxxx Set hostname to xxxx tinycore secure Set password tinycore protect Password Encrypted Backup tinycore noautologin Skip automatic login tinycore tz=GMT+8 Timezone tz=PST+8PDT,M3.2.0/2,M11.1.0/2 tinycore settime Set UTC time at boot, internet required tinycore user=abc Specify alternate user tinycore desktop=yyy Specify alternate window manager tinycore laptop Force load laptop related modules tinycore embed Stay on initramfs tinycore nozswap Skip compressed swap in ram tinycore xvesa=800x600x32 Set Xvesa default screen resolution tinycore bkg=image.{jpg|png|gif} Set background from /opt/backgrounds tinycore blacklist=ssb Blacklist a single module tinycore multivt Allows for multiple virtual terminals tinycore iso={hda1|sda1} Specify device to search and boot an iso file
