2024-10-13 05:21:39 +01:00
#!/bin/sh -e
. ../../common-script.sh
installQEMUDesktop( ) {
if ! command_exists qemu-img; then
printf "%b\n" " ${ YELLOW } Installing QEMU. ${ RC } "
" $ESCALATION_TOOL " " $PACKAGER " -S --needed --noconfirm qemu-desktop
else
printf "%b\n" " ${ GREEN } QEMU is already installed. ${ RC } "
fi
checkKVM
}
installQEMUEmulators( ) {
2024-10-13 05:32:11 +01:00
if ! " $PACKAGER " -Q | grep -q "qemu-emulators-full " ; then
2024-10-13 05:21:39 +01:00
printf "%b\n" " ${ YELLOW } Installing QEMU-Emulators. ${ RC } "
" $ESCALATION_TOOL " " $PACKAGER " -S --needed --noconfirm qemu-emulators-full swtpm
else
printf "%b\n" " ${ GREEN } QEMU-Emulators already installed. ${ RC } "
fi
}
installVirtManager( ) {
if ! command_exists virt-manager; then
printf "%b\n" " ${ YELLOW } Installing Virt-Manager. ${ RC } "
" $ESCALATION_TOOL " " $PACKAGER " -S --needed --noconfirm virt-manager
else
printf "%b\n" " ${ GREEN } Virt-Manager already installed. ${ RC } "
fi
}
checkKVM( ) {
2024-10-14 18:19:16 +01:00
if [ ! -e "/dev/kvm" ] ; then
2024-10-13 15:14:22 +01:00
printf "%b\n" " ${ RED } KVM is not available. Make sure you have CPU virtualization support enabled in your BIOS/UEFI settings. Please refer https://wiki.archlinux.org/title/KVM for more information. ${ RC } "
2024-10-13 05:21:39 +01:00
else
" $ESCALATION_TOOL " usermod " $USER " -aG kvm
fi
}
setupLibvirt( ) {
printf "%b\n" " ${ YELLOW } Configuring Libvirt. ${ RC } "
2024-10-13 05:32:11 +01:00
if " $PACKAGER " -Q | grep -q "iptables " ; then
2024-10-13 05:21:39 +01:00
" $ESCALATION_TOOL " " $PACKAGER " -Rdd --noconfirm iptables
fi
" $ESCALATION_TOOL " " $PACKAGER " -S --needed --noconfirm dnsmasq iptables-nft
" $ESCALATION_TOOL " sed -i 's/^#\?firewall_backend\s*=\s*".*"/firewall_backend = "iptables"/' "/etc/libvirt/network.conf"
if systemctl is-active --quiet polkit; then
" $ESCALATION_TOOL " sed -i 's/^#\?auth_unix_ro\s*=\s*".*"/auth_unix_ro = "polkit"/' "/etc/libvirt/libvirtd.conf"
" $ESCALATION_TOOL " sed -i 's/^#\?auth_unix_rw\s*=\s*".*"/auth_unix_rw = "polkit"/' "/etc/libvirt/libvirtd.conf"
fi
" $ESCALATION_TOOL " usermod " $USER " -aG libvirt
for value in libvirt libvirt_guest; do
if ! grep -wq " $value " /etc/nsswitch.conf; then
" $ESCALATION_TOOL " sed -i " /^hosts:/ s/ $/ ${ value } / " /etc/nsswitch.conf
fi
done
" $ESCALATION_TOOL " systemctl enable --now libvirtd.service
" $ESCALATION_TOOL " virsh net-autostart default
checkKVM
}
installLibvirt( ) {
if ! command_exists libvirtd; then
" $ESCALATION_TOOL " " $PACKAGER " -S --needed --noconfirm libvirt dmidecode
else
printf "%b\n" " ${ GREEN } Libvirt is already installed. ${ RC } "
fi
setupLibvirt
}
main( ) {
printf "%b\n" " ${ YELLOW } Choose what to install: ${ RC } "
printf "%b\n" " 1. ${ YELLOW } QEMU ${ RC } "
printf "%b\n" " 2. ${ YELLOW } QEMU-Emulators ( Extended architectures ) ${ RC } "
printf "%b\n" " 3. ${ YELLOW } Libvirt ${ RC } "
printf "%b\n" " 4. ${ YELLOW } Virtual-Manager ${ RC } "
printf "%b\n" " 5. ${ YELLOW } All ${ RC } "
printf "%b" "Enter your choice [1-5]: "
read -r CHOICE
case " $CHOICE " in
1) installQEMUDesktop ; ;
2) installQEMUEmulators ; ;
3) installLibvirt ; ;
4) installVirtManager ; ;
5) installQEMUDesktop
installQEMUEmulators
installLibvirt
installVirtManager
; ;
*) printf "%b\n" " ${ RED } Invalid choice. ${ RC } " && exit 1 ; ;
esac
}
checkEnv
checkEscalationTool
2024-10-13 15:14:22 +01:00
main