SYSMERGE(8)

NAME
sysmerge - upgrade current operating system from a sysroot

SYNOPSIS
sysmerge [-cfw] [--booting] [--hook-finalize] [--hook-prepare] source

DESCRIPTION
sysmerge upgrades the current operating system by copying the system files from the specified source directory (usually a sysroot) onto the current root filesystem. This is meant to be used when building the operating system from source as described in development(7).

sysmerge installs the system manifest from the tix repository in the source directory, as well as all the ports found. If a full upgrade is done, then all ports not found will be uninstalled. Upgrade hooks will be run if further actions are needed to migrate the system to the new version as described in following-development(7). The initrd(7) is regenerated using update-initrd(8). If grub is enabled in upgrade.conf(5), then the bootloader is reinstalled and reconfigured as needed.

sysmerge is an automatic and non-interactive upgrade. It is meant to be used as part of the development process to upgrade to locally built versions. The sysupgrade(8) program is by contrast an interactive program.

The options are as follows:

--booting
    It's boot time, complete the system upgrade that was delayed. This is meant to be used by init(8) through the merge boot target. This installs the /sysmerge directory onto the root filesystem and removes the /sysmerge directory.

-c, --cancel
    Cancel a pending upgrade that would trigger on the next boot. Remove the /sysmerge directory and restore the old kernel(7) and initrd(7).

-f, --full
    Full system upgrade that uninstalls ports not present in the source directory.

--hook-finalize
    Run the post-upgrade hooks. This is meant to be used by the old sysmerge when it invokes the new sysmerge during a non-waiting upgrade.

--hook-prepare
    Run the pre-upgrade hooks. This is meant to be used by the old sysmerge when it invokes the new sysmerge during a non-waiting upgrade.

-w, --wait
    Wait until the next boot to complete the upgrade, rather than finishing it now. This installs into the /sysmerge directory instead and replaces the kernel(7) with the new kernel and initrd(7) with an initrd that runs /sysmerge/sbin/sysmerge --booting on boot through the chain-merge init(8) boot target. Backups are made of the kernel(7) and initrd(7) such that the operation can be rolled back.

FILES
/boot/sortix.bin
    system kernel(7)
/boot/sortix.bin.sysmerge.orig
    system kernel(7) (backup)
/boot/sortix.initrd
    system initrd(7)
/boot/sortix.initrd.sysmerge.orig
    system initrd(7) (backup)
/etc/machine
    processor platform of this installation
/etc/sortix-release
    the current system release
/etc/upgrade.conf
    controls the bootloader upgrade behavior (see upgrade.conf(5))
/share/sysinstall/hooks
    A file per upgrade hook indicating that it doesn't need to be run.
/sysmerge
    pending upgrade is stored here

SEE ALSO
development(7), initrd(7), installation(7), kernel(7), upgrade(7), sysinstall(8), sysupgrade(8)