Unroot 1.0.3
Features Release — August 13, 2026
A number of improvements have been made to unroot to improve usability and make the tool more seamless in real-world use, as well as more robust. Many thanks to Zeno R. R. Davatz (@zdavatz) for extended testing and comprehensive issue reporting. Unroot would not be the same without community support and feedback!
$TERMis now preserved inside the rootfs by default which generally allows ncurses programs and colors to work seamlessly in the terminal afterunroot enter./sysis recursively bind-mounted read-only into the rootfs by default, allowing tools such aslscpuandhtopto function properly without exposing writable sysfs control files.- Unroot now uses
libarchivethrough the siblingunroot-utilhost helper. This removes the dependency on a locally-installed GNU tar and eliminates a class of bugs. - Parallel
xzcompression is now supported and enabled by default vialibarchive. unroot unpack --id-count COUNTcan create rich roots with ownership headroom beyond the default IDs 0–65535. (#19)- New
inspect hostandinspect archive <archive>actions expose runtime capabilities and archive facts (#21). unroot unpackwill always do a single pre-flight scan of the to-be-unpacked archive; when it finds POSIX ACLs or extended attributes,unpacknow performs a quick check for the corresponding support on the exact destination filesystem before extraction begins. If necessary features are not present,unpackaborts prior to extraction. This can be overridden with--force./etc/resolv.confand/etc/hostsare now injected (safely copied) into managed (non-native) rootfs environments using the novelinjectaction. They were previously read-only bind-mounted so could not be altered. This new method allows local name resolution to work while allowing local edits to the files, and prevents local network configuration from leaking into packed rootfs tarballs. This also provides a framework for customizing other injectable files that you want inserted into the unpacked rootfs by default, but don't want to become part of the packed/distributed rootfs.packandunpacknow take one self-cleaning exclusive lock per rootfs, so archive reads and writes cannot overlap on the same tree. A competing command fails immediately, while process exit automatically releases ownership and leaves no stale lock file. (#27)- For now, OCI images are rejected until we add support. (#25)
enterrejects paths that resolve to the host/.