Sortix
Sortix Download Manual Development Source Code News Blog More
current nightly

Sortix nightly manual

This manual documents Sortix nightly, a development build that has not been officially released. You can instead view this document in the latest official manual.

NAME

sysmerge — upgrade current operating system from a sysroot

SYNOPSIS

sysmerge [-cfmnpsw] [-t target] [--booting] [--hook-finalize] [--hook-prepare] [--is-reboot-needed] source

DESCRIPTION

sysmerge does an upgrade(7) of 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.
sysmerge is one of three supported upgrade methods. The other two are upgrading from the network using tix-upgrade(8), and sysupgrade(8) from a new .iso release.
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.
--is-reboot-needed
Exit 0 if an upgrade is scheduled for the next boot, and exit 1 otherwise.
-m, --move-source
Allow moving the source directory and its contents directly to the destination with rename(2). This behavior currently requires an upgrade scheduled with --wait.
-n, --now
Perform the upgrade now, rather than waiting for the next boot.
This behavior is the default if the target is not a system installation. If the target is a system installation, then this behavior is not available across incompatible ABI changes.
-s, --system
Upgrade the system. This option is implied unless --ports is passed.
-t, --target=target
Upgrade the installation in the target directory rather than the root filesystem. This option is supported if the target is the / directory or only has ports installed and no system. This option is unsupported if target has the system installed and is not the / directory. Instead one should chroot(8) into the target and run the old sysmerge inside rather than the new sysmerge. However, this option may be useful for repairing installations and should work in practice, however it is untested and might not properly handle incompatible changes across releases.
-p, --ports
Upgrade the ports. This option is implied unless --system is passed.
-w, --wait
Wait until the next boot to complete the upgrade, rather than finishing it now. The upgrade is installed into the /sysmerge directory instead, with the new kernel and initrd files in /boot/sysmerge. The new kernel(7) has a new initrd(7) that runs /sysmerge/sbin/sysmerge --booting on boot through the chain-sysmerge init(8) boot target, which performs the operating system upgrade. The bootloader configuration is regenerated with a menu option to perform the upgrade if grub is enabled in upgrade.conf(5), otherwise the /etc/default/grub.d/10_sortix.cache bootloader fragment can be used to manually bootload the upgrade.
This behavior is the default if the target is a system installation. This option requires the target to be system installation. This behavior happens regardless if a system installation is upgraded across an incompatible ABI Change.

FILES

/boot/sortix.bin
Old system kernel(7).
/boot/sortix.initrd
Old system initrd(7).
/boot/sysmerge/
New system kernel and initrd files.
/etc/default/grub.d/10_sortix.cache
GRUB configuration fragment that boots the new system.
/etc/upgrade.conf
Controls the bootloader upgrade behavior (see upgrade.conf(5)).
/lib/sortix-release
The current system release.
/share/sysinstall/hooks/
A file per upgrade hook indicating that it doesn't need to be run.
/sysmerge/
The pending systen upgrade is stored here.

SEE ALSO

development(7), initrd(7), installation(7), kernel(7), upgrade(7), sysinstall(8), sysupgrade(8), tix-upgrade(8)
Copyright 2011-2025 Jonas 'Sortie' Termansen and contributors.
Sortix's source code is free software under the ISC license.
#sortix on irc.sortix.org
@sortix_org