Until now, it was not easy to run debugging tools on openSUSE MicroOS or Kubic for the simple reason that installing any package using the transactional-update in package_name command would require a reboot for the program to be available on the system.
Until now, it was not easy to run debugging tools on openSUSE MicroOS or Kubic for the simple reason that installing any package using the transactional-update in package_name command would require a reboot for the program to be available on the system. Why so? MicroOS & Kubic use transactional updates and thus, the root filesystem is mounted as read-only. Packages that are installed are available in a "snapshot" which is selected at the next boot. openSUSE MicroOS & Kubic fall in the category of immutable operating systems.
One couldn't just reboot the system every time a simple program was needed - e.g using Vi to edit a YAML config or using database client utils for a rapid inspection.
But now we have a toolbox
script available in MicroOS & Kubic that allows us to launch a container and use debugging utilities that can interact with the host. The script is written in Bash and it is based on CoreOS/toolbox.
Thorsten Kukuk, SUSE Engineer & Architect (SLES / MicroOS), announced the availability of the toolbox
container on the openSUSE Kubic mailing list in October.
The toolbox
script resides in the system $PATH
and thus can be called directly. On its first execution, the script will pull the toolbox
container from the openSUSE Container Registry.
microos:~ # toolbox
Trying to pull registry.opensuse.org/opensuse/toolbox...
Getting image source signatures
Copying blob 92a022f7c0d8 [>-------------------------------------] 2.8MiB / 122.9MiB
Copying blob f0c8107beec9 [==>-----------------------------------] 3.0MiB / 36.4MiB
The host root filesystem can be accessed at /media/root/
and since the toolbox
container is spawned as the root user, the files will be modifiable.
toolbox:/ # ls /media/root/
bin dev home lib64 opt root sbin srv tmp var
boot etc lib mnt proc run selinux sys usr
Non-root toolbox
containers will have read-only access to the host files, unless the --root
flag is provided.
ish@microos:~> toolbox --root
Next, use zypper
to install the required utilities and interact with the host and other containers.
Exiting toolbox
will stop and the container and next time the script is called, the container is started again. Therefore, previously installed utilities remain available.
Each toolbox
container is named by appending the username calling it, e.g toolbox-ish.
microos:~ # podman ps --format "{{.ID}} {{.Status}} {{.Names}}"
7f61fba95487 Up 10 minutes ago toolbox-ish
00ada606ec4f Up 33 minutes ago toolbox-root