To show an example of all possible arguments, simply run
kuhbs
without arguments:
kuhbs
## Arguments related to a specific kuhb ##
# Show the state of each kuh defined in all kuhbs
kuhbs ls
# Show the state of a specific kuh
kuhbs show tool/firefox
# Create a kuhb
kuhbs create tool/firefox
# Remove a kuhb
kuhbs remove tool/firefox
# Backup a kuhb
kuhbs backup tool/firefox
# Backup all defined and created kuhb's
kuhbs backup-all
# Restore the backup of a kuhb
kuhbs restore tool/firefox
# Upgrade the software of each kuh that is used as a template within a kuhb
kuhbs upgrade tool/firefox
# Upgrade all defined and created kuhbs
kuhbs upgrade-all
## Arguments related to a specific kuh (VM) ##
# Open a graphical terminal on a kuh
kuhbs terminal <qube> [user]
kuhbs terminal app-tool-firefox root
kuhbs terminal app-tool-firefox user
kuhbs terminal app-tool-firefox
# xl stop a kuh and dump its memory and disks to dom0:/home/user/kuhbs/dumps
kuhbs dump app-tool-firefox
## Debugging
# Enable verbose output
kuhbs -v <action> <arg>
kuhbs -v create tool/firefox
# Enable debug mode (implies verbose mode as well)
kuhbs -d <action> <arg>
kuhbs -d create tool/firefox
Each kuhbs
argument triggers its own function below
functions/arguments/
. For example
kuhbs backup firefox
runs (some of, depending on the case)
the functions in functions/arguments/backup.sh
.
kuhbs backup my-kuhb
kuhbs restore my-kuhb
You can trigger the creation of a backup with
kuhbs backup my-kuhb
and the restore with
kuhbs restore my-kuhb
. To backup all defined kuhb’s, run
kuhbs backup-all
.
Each kuhb can configure a list of files and directories to be backed up for each individual VM type:
# TemplateVM
declare -r TPL_BACKUP_PATHS=(
"/etc/wireguard"
)
# AppVM
declare -r APP_BACKUP_PATHS=(
"/home/user/.config/mozilla"
)
# StandaloneVM
declare -r STA_BACKUP_PATHS=(
"/home/user/code"
)
The kuhbs/defaults.sh
file contains variables relevant
to the storage device that is used to store backups (commonly a USB
device).
During creation of a kuhb, backups are restored (if present) just
before the scripts defined in
kuhbs/my-kuhb/<vm-type>/scripts/*.sh
are
executed.
The backup is created by running
tar czf /rw/backup.tar.gz /path /path2
. Do not include
/rw/
itself in the BACKUP_PATHS.
kuhbs upgrade my-kuhb
kuhbs upgrade-all
To upgrade a kuhb, run kuhbs upgrade my-kuhb
. To upgrade
all kuhb’s, run kuhbs upgrade-all
. When a kuhb is upgraded,
sta, tpl and then app type kuh’s (VMs) are upgraded in that order.
When a kuh is upgraded:
the script kuh-setup-scripts/apt-update.sh
is
executed on the kuh
An upgrade.sh
script located in
kuhbs/my-kuhb/{tpl,app,sta}/hooks/upgrade.sh
is executed on
the kuh, for example to run flatpak update
in an
AppVM
The kuh is shutdown if it was not running before
When you upgrade a kuhb while it one of its kuh’s is running, the kuh
will automatically be restarted after the upgrade is completed - if you
have applications running in that kuh they will not be started again,
only the kuh (VM) will be started with qvm-start
.
This is a TODO.
Open a terminal in a kuh:
kuhbs terminal app-firefox
Root terminal:
kuhbs terminal app-firefox root
If you suspect a VM is doing something fishy.
kuhbs dump app-firefox
will run
xl stop app-firefox
, which freezes the VM in xen, and then
dump its memory and disks to
dom0:/home/user/kuhbs/dumps
.
You can run xl resume app-firefox
to “resume” the
VM.