Only use this method if you want the full Kali GUI (desktop, fancy menus, etc.). It comes at the cost of much greater resources consumption.
$ qvm-start <hvm-name> --cdrom <vm-name>:/home/user/Downloads/<iso-name>.iso
This is the recommended method. Easier to maintain and less demanding on resources, but you won’t have the full Kali GUI.
If you need to install custom kernel modules (wifi drivers, …) you need to use the kernel provided by Kali instead of the kernel provided by Qubes, see Managing VM Kernel.
The steps can be summarized as:
stable
to Debian testing
for Qubes repositoriestesting
and securitytesting
Qubes repositories/etc/apt/sources.list
file with the Kali repositoryCAUTION: Before proceeding, please carefully read On Digital Signatures and Key Verification. This website cannot guarantee that any PGP key you download from the Internet is authentic. In order to obtain a trusted fingerprint, check its value against multiple sources. Then, check the keys you download against your trusted fingerprint.
This step is required since by (security) default TemplateVM do not have a direct Internet connectivity. Users understanding the risks of enabling such access can change this configuration in firewall settings for the TemplateVM.
$ gpg --keyserver hkps://keys.openpgp.org --recv-key 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6
$ gpg --list-keys --with-fingerprint 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6
$ gpg --export --armor 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6 > kali-key.asc
DO NOT TURN OFF the DisposableVM, the kali-key.asc
file will be copied in the Kali Linux template for a further step.
Make sure the key is the authentic Kali key. See the Kali website for further advice and instructions on verification.
These instructions will show you how to upgrade a Debian TemplateVM to Kali Linux.
# qubes-dom0-update --action="search all" qubes-template-debian
# qubes-dom0-update <latest Debian template>
debian-X
template$ qvm-clone debian-<X> kali-rolling
/etc/apt/sources.list.d/qubes-r<X>.list
and current testing Debian release. Update repository list accordingly# sed -i 's/<current stable>/<current testing>/g' /etc/apt/sources.list.d/qubes-r<X>.list
e.g. in this example we update bullseye
stable repository to bookworm
testing repository
# sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/qubes-r<X>.list
testing
and securitytesting
repositoriesIn /etc/apt/sources.list.d/qubes-r<X>.list
, enable the testing
and securitytesting
repository. We do that to reduce the 'dependency hell' between Qubes repository and Kali repository.
$ qvm-copy kali-key.asc
The DisposableVM can now be turned off.
# cd /home/user/QubesIncoming/dispXXX && gpg --dearmor kali-key.asc
# cp kali-key.asc.gpg /etc/apt/trusted.gpg.d/kali-key.gpg
# echo 'deb https://http.kali.org/kali kali-rolling main non-free contrib' > /etc/apt/sources.list
# apt-get remove <existing_package> && apt-get install <required_package>
e.g. in this example we replace gcc8
with gcc6
# apt-get remove libgcc-8-dev && apt-get install libc6-dev
Note: This kind of dependency issue will pop up and disappear without notice. Such issues arise because of the differences of dependencies in packages from the Kali repository, the Qubes testing repository and the Debian testing repository. So this step [step 8] is currently needed. But it will not always be the case.
Note: During execution of the update, carefully read list of packages to be removed. If it contains qubes-vm-dependencies
package, terminate operation and try to resolve missing dependencies first. For other qubes-*
packages, it is up to you to decide if you need them.
$ qvm-run -a kali-rolling gnome-terminal
At this point you should have a working template and you can install the tools you need. You can find a list of Kali Linux Metapackages
here Keep in mind that the tools you will install can easily take more than 10 GB, so you will need to grow the size of the VM system storage.
Installing the kali-defaults
package (which is included in many Kali metapackages including kali-linux-core
) causes Kali PulseAudio configurations files to be installed that interfere with what Qubes provides. This breaks audio and microphone throughput for that qube.
To fix this, simply do one of the following in the Kali Linux TemplateVM:
# rm /usr/lib/systemd/user/pulseaudio.service.d/kali_pulseaudio.conf /usr/lib/systemd/user/pulseaudio.socket.d/kali_pulseaudio.socket.conf
kali-defaults
packageapt show kali-defaults
dpkg -L kali-defaults
sudo apt remove kali-defaults
Finally, for both of these options, the Kali Linux qube will have to be restarted for these changes to take effect.
Thanks to the people in the discussion thread.