SYSTEMD-SYSINSTALL(8)
๐ systemd-sysinstall โ the manual, but make it make sense ๐
okay bestie, so this is systemd-sysinstall(8) from the systemd-sysinstall family of man pages, and it's literally the "Simple OS installer". Yes, the whole manual is in this one page. Grab a snack, we're going in ๐
โจ NAME โจ
systemd-sysinstall, systemd-sysinstall.service โ Simple OS installer
๐ฆ SYNOPSIS ๐ฆ
systemd-sysinstall [OPTIONS...] [BLOCKDEVICE]
systemd-sysinstall.service
๐ธ DESCRIPTION ๐ธ
systemd-sysinstall is a simple terminal and command line based operating system installer tool. Its whole main character moment is being the automatically started interactive interface that pops up when you boot from an installer medium (think: a USB stick ๐ซถ), so you can install an OS onto a target disk. That said, you can also just run it straight from a shell, no boot-medium cosplay required.
Here's the exact itinerary it runs through, step by step:
- It prompts the user for the target disk to install the OS on. (Unless the block device is already specified on the command line โ then it skips the asking, slay.)
- It validates whether the disk is suitable (i.e. large enough, and with enough free/unpartitioned space) for an OS installation. If it's generally suitable, the user gets prompted on whether they want to erase the disk before installation, or whether the OS shall be added to the existing partitions on the disk โ and that second option only shows up if enough free/unpartitioned disk space is available.
- It prompts the user whether to register the newly installed OS with the firmware boot option menu.
- It requests confirmation from the user, after showing a summary of the planned OS installation.
- It invokes
systemd-creds(1)'sencryptcommand in order to generate encrypted (TPM locked, if available) system credential files for a few, very basic system settings of the currently booted system (locale, keymap, timezone), which it will install on the target disk, parameterizing the invoked kernel. Or, in other words: it prepares that some settings already in effect on the installer system are propagated securely onto the new installation. iykyk ๐ - It invokes
systemd-repart(8)with a definitions directory of/usr/lib/repart.sysinstall.d/(only if populated โ if not, it will use the default of/usr/lib/repart.d/). This is supposed to set up the basic OS partition structure on the target disk and copies in basic OS partitions (most importantly the/usr/hierarchy). - It invokes
bootctl(1)'slinkcommand to install an OS kernel image onto the target disk's ESP/XBOOTLDR, together with the credential files prepared earlier. - It invokes
bootctl(1)'sinstallcommand to install thesystemd-boot(7)boot loader onto the target disk's ESP. - After confirmation, it reboots the system.
ngl, here's the tea: the prompts/confirmation may be disabled via the command line, enabling fully automatic, non-interactive installation. See below. ๐
Also important, bestie: this tool does not interactively query the user for a user to create or a root password to be set on the target system. The assumption is that these questions are better prompted from within the newly installed system's first boot process, for example via the systemd-firstboot(1) or systemd-homed-firstboot.service components. And note that if required, such settings may be propagated explicitly via the --load-credential= switch below.
๐ OPTIONS ๐
The following options are understood:
--definitions=โ Overrides the directory wheresystemd-repartshall read its partition definitions from, in place of the default of/usr/lib/repart.sysinstall.d/.
Added in version 261.
--welcome=โ Takes a boolean argument. Controls whether to show the brief welcome text normally displayed at the beginning of the installation. Defaults totrue.
Added in version 261.
--chrome=โ Takes a boolean argument. Controls whether to show the colored bars at the top and bottom of the terminal interface. Defaults totrue.
Added in version 261.
--erase=โ Takes a boolean argument. Controls whether to erase the current contents of the target disk. If this switch is not used the user is prompted.
Added in version 261.
--confirm=โ Takes a boolean argument. Controls whether to interactively query the user for confirmation before initiating the OS installation. Defaults totrue.
Added in version 261.
--reboot=โ Takes a boolean argument. Controls whether to reboot the system after completing the installation. Defaults tofalse.
Added in version 261.
--variables=โ Takes a boolean argument. Controls whether to register the installed boot loader in the firmware's boot options database. If not specified the user will be prompted.
Added in version 261.
--summary=โ Takes a boolean argument. Controls whether to show a summary of the choices made before asking for confirmation to proceed with the OS installation. Defaults totrue.
Added in version 261.
--kernel=โ Takes a path to a unified kernel image (UKI). Explicitly selects the kernel image to install on the target disk. If unspecified the currently booted kernel image is installed on the target disk.
Added in version 261.
--set-credential=id:valueโ Accepts an additional system credential to encrypt (with a key generated on the local TPM, if available, and the null key otherwise) and place next to the installed kernel image in the ESP. This may be used to parameterize the installed kernel with arbitrary system credentials.
๐จ Do not use this switch for sensitive data (such as passwords), use --load-credential= instead, see below.
May be used multiple times to configure multiple credentials.
Note that three system credentials are propagated in similar fashion to the target system: the locale, keymap and timezone. This may be controlled by the relevant --copy-locale=, --copy-keymap= and --copy-timezone= options below.
See systemd.system-credentials(7) for a list of well-known system credentials that may be propagated this way. (Note that you may pass arbitrary additional credentials this way, that can be consumed by any service of your choice, via the usual system credentials logic.)
Added in version 261.
--load-credential=id:pathโ Similar to--set-credential=but reads the credential value from a file on disk or anAF_UNIXsocket in the file system. This is generally preferable for sensitive data, such as passwords.
Added in version 261.
--copy-locale=,--copy-keymap=,--copy-timezone=โ These options take boolean parameters. They control whether the indicated system settings shall be propagated from the currently running system into the new target OS installation. These options default totrue.
Typically, these three settings are the minimal settings that need to be configured during early boot of an installer medium in order to make the installer tool accessible to the user. The systemd-firstboot(1) tool may be used to query the user interactively when the OS install medium is booted for these properties. By propagating these settings to the target installation via system credentials they do not need to be queried again on first boot of the new installation.
Added in version 261.
--mute-console=โ Takes a boolean argument. Controls whether to disable kernel and service manager log output to the console the installer is invoked on temporarily while running, in order to avoid interleaved output. Defaults tofalse.
Added in version 261.
-h,--helpโ Print a short help text and exit.--versionโ Print a short version string and exit.
๐ EXIT STATUS ๐
On success, 0 is returned, and a non-zero failure code otherwise. periodt.
๐ EXAMPLE ๐
Example 1. Invoke the tool for a fully automatic non-interactive OS installation
systemd-sysinstall \
/dev/disk/by-id/nvme-Micron_MTFDKBA1T0TFH_214532D0CDA5 \
--erase=yes \
--confirm=no \
--variables=yes \
--load-credential=ssh.authorized_keys.root:my-ssh-key
This installs the OS on the selected disk, erasing any previous contents, without confirmation, registers it in the firmware, and drops in the SSH key for the root user, read from the my-ssh-key file in the current directory. literally iconic, no notes ๐ฅ
๐ SEE ALSO ๐
systemd(1), systemd-creds(1), systemd-repart(8), bootctl(1), systemd-firstboot(1), systemd-boot(7), systemd.system-credentials(7)
and that's the whole page bestie ๐ this was systemd-sysinstall(8) from systemd 262.1 โ go forth and install an OS, you got this ๐งโจ
๐ฆ where this page comes from
- arch rolling: systemd 262.1-1 ยท LGPL-2.1-or-later AND CC0-1.0 AND GPL-2.0-or-later AND MIT-0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms