-
Notifications
You must be signed in to change notification settings - Fork 248
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Arch virtualization setup script
- Loading branch information
1 parent
79eb752
commit b5520a3
Showing
3 changed files
with
113 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
#!/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() { | ||
if ! pacman -Q | grep -q "qemu-emulators-full "; then | ||
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() { | ||
hardware_avail="$(grep -E 'vmx|svm|0xc0f' /proc/cpuinfo)" | ||
kernel_avail="$(zgrep CONFIG_KVM= /proc/config.gz | cut -d '=' -f 2)" | ||
modules_avail="$(lsmod | grep kvm)" | ||
if [ -z "$hardware_avail" ] || [ -z "$modules_avail" ] || { [ "$kernel_avail" != "m" ] && [ "$kernel_avail" != "y" ]; }; then | ||
printf "%b\n" "${RED}KVM is not avaiable please refer https://wiki.archlinux.org/title/KVM for more information.${RC}" | ||
else | ||
"$ESCALATION_TOOL" usermod "$USER" -aG kvm | ||
fi | ||
} | ||
|
||
setupLibvirt() { | ||
printf "%b\n" "${YELLOW}Configuring Libvirt.${RC}" | ||
if pacman -Q | grep -q "iptables "; then | ||
"$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 | ||
main |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters