blob: 1e05fdba9bbd33381a66aefb04d9ebafbbf8f29f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
#!/bin/bash
# KVM/QEMU virtualizáció telepítő script
# Környezeti változók: INSTALL_USER, INSTALL_HOME
set -e
USER="$INSTALL_USER"
HOME="$INSTALL_HOME"
ACTION="${1:-install}"
remove_installed_packages() {
local installed=()
local pkg
for pkg in "$@"; do
if pacman -Qq "$pkg" >/dev/null 2>&1; then
installed+=("$pkg")
fi
done
if ((${#installed[@]})); then
pacman -Rcns --noconfirm "${installed[@]}"
fi
}
if [[ "$ACTION" == "remove" ]]; then
echo "Removing KVM/QEMU for $USER..."
systemctl disable --now libvirtd.service 2>/dev/null || true
remove_installed_packages \
qemu-full \
qemu-img \
libvirt \
virt-install \
virt-manager \
virt-viewer \
edk2-ovmf \
dnsmasq \
swtpm \
guestfs-tools \
libosinfo \
dmidecode
echo "KVM/QEMU removal complete!"
exit 0
fi
echo "Installing KVM/QEMU for $USER..."
# Csomagok telepítése
pacman -S --noconfirm --needed \
qemu-full \
qemu-img \
libvirt \
virt-install \
virt-manager \
virt-viewer \
edk2-ovmf \
dnsmasq \
swtpm \
guestfs-tools \
libosinfo \
dmidecode
# User hozzáadása a szükséges csoportokhoz
usermod -aG kvm "$USER"
usermod -aG input "$USER"
usermod -aG libvirt "$USER"
# Libvirt konfiguráció - user beállítása
QEMU_CONF="/etc/libvirt/qemu.conf"
if [[ -f "$QEMU_CONF" ]]; then
# User sor keresése és módosítása
if grep -q "^#user = " "$QEMU_CONF"; then
sed -i "s/^#user = .*/user = \"$USER\"/" "$QEMU_CONF"
elif grep -q "^user = " "$QEMU_CONF"; then
sed -i "s/^user = .*/user = \"$USER\"/" "$QEMU_CONF"
else
echo "user = \"$USER\"" >> "$QEMU_CONF"
fi
# Group beállítása
if grep -q '^#group = ' "$QEMU_CONF"; then
sed -i 's/^#group = .*/group = "kvm"/' "$QEMU_CONF"
elif grep -q '^group = ' "$QEMU_CONF"; then
sed -i 's/^group = .*/group = "kvm"/' "$QEMU_CONF"
else
echo 'group = "kvm"' >> "$QEMU_CONF"
fi
fi
# Szolgáltatások engedélyezése és indítása
systemctl enable libvirtd.socket 2>/dev/null || true
systemctl start libvirtd.socket 2>/dev/null || true
systemctl enable libvirtd.service
systemctl start libvirtd.service
# Várjuk meg a socketet mielőtt virsh-t hívunk
timeout 30 bash -c 'until [ -S /run/libvirt/libvirt-sock ]; do sleep 1; done' 2>/dev/null || true
# Default network autostart
virsh net-autostart default 2>/dev/null || true
virsh net-start default 2>/dev/null || true
echo "KVM/QEMU installation complete!"
echo "Please log out and back in for group changes to take effect."
|