Inhaltsverzeichnis
ArchLinux - Virtualisierung mit KVM
Bekanntlich führen viele Wege nach Rom, deswegen erhebt diese Beschreibung auch keinen Anspruch auf die einzige Wahre Lösung! Vielmehr ist es ein Versuch eine Virtualisierungsumgebung mit ArchLinux abzubilden.
Beschreibung | Externer Link |
---|---|
Homepage | https://www.archlinux.de/ |
Herunterladen | https://www.archlinux.de/download |
Dokumentation | https://wiki.archlinux.de/title/Hauptseite |
Installation | https://wiki.archlinux.de/title/Anleitung_für_Einsteiger |
- QEMU | https://wiki.archlinux.org/index.php/QEMU |
- libvirt | https://wiki.archlinux.org/index.php/Libvirt |
Die hier vorgestellte Möglichkeit dies zu realisieren soll möglichst nach folgenden Vorgaben erfolgen:
- möglichst nur mit Bordmitteln
- möglichst wenig externen Paketen/Programmen/Quellen
- einfache Realisierung
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root
zu werden, geben Sie bitte nachfolgenden Befehl ein:
$ su - Password:
Vorbereitung
Es soll als Grundlage eine Installation in den Varianten:
oder
und die zusätzlich noch benötigten Installationen für das
durchgeführt werden, auf die dann aufbauend die noch benötigte Installation für eine grafische Benutzeroberfläche, hier z.B.
oder
sukzessive durchgeführt werden soll.
Installation
Nachfolgende Pakete ermöglichen die Installation der Virtualisierungsplattform KVM (qemu
) und die Möglichkeit über das Desktop-Programm virt-manager
über eine GUI komfortabel virtuelle Maschinen unter
ArchLinux zu erstellen.
qemu-desktop
- Virtualisierungsumgebung mit allen dafür benötigten Paketenvirt-manager
- Desktop GUI zur Verwaltung von virtuellen Maschinendnsmasq
- DNS „Forwarder“ und DHCP-Serverebtables
- Netzwerk Brücken (ethernet bridge) Filter Werkzeugedmidecode
- Desktop Management Interface Tabellen Werkzeugeedk2-ovmf
- Firmware für virtuelle Maschinen (x86_64, i686)guestfs-tools
- Zugriff und Änderung von Festplatten-Images virtueller Maschinen
# pacman -S qemu virt-manager dnsmasq ebtables dmidecode edk2-ovmf guestfs-tools
Dienst/Daemon einrichten
Damit nach einem Neustart des Servers auch die Virtualisierungsumgebung zur Verfügung steht, muss der libvirtd
-Dienst/Daemon gestartet werden, was mit nachfolgendem Befehl eingerichtet werden muss:
[root@archlinux ~]# systemctl enable libvirtd.service Created symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service. Created symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket → /usr/lib/systemd/system/virtlockd.socket. Created symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket → /usr/lib/systemd/system/virtlogd.socket. Created symlink /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket. Created symlink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.
Eine Überprüfung, ob beim Neustart des Server der libvirtd
-Dienst/Daemon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
[root@archlinux ~]# systemctl list-unit-files --type=service | grep -E ^libvirtd libvirtd.service enabled disabled
bzw.
[root@archlinux ~]# systemctl is-enabled libvirtd.service enabled
Dienst: libvirtd starten
Anschließend kann der Dienst/Daemon gestartet werden, was mit nachfolgendem Befehl durchgeführt wird:
# systemctl start libvirtd.service
und mit nachfolgendem Befehl überprüft werden, ob der Start auch erfolgreich funktioniert hat:
# systemctl status libvirtd.service ● libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2020-07-13 13:06:28 CEST; 2s ago TriggeredBy: ● libvirtd-admin.socket ● libvirtd-ro.socket ● libvirtd.socket Docs: man:libvirtd(8) https://libvirt.org Main PID: 6340 (libvirtd) Tasks: 17 (limit: 32768) Memory: 8.4M CGroup: /system.slice/libvirtd.service └─6340 /usr/bin/libvirtd --timeout 120 Jul 13 13:06:28 archlinux systemd[1]: Started Virtualization daemon.
Benutzer libvirt anlegen
Nachfolgender Befehl erstellt einen neuen Benutzer mit
- dem Kommentar:
libvirt
- der Gruppen-ID:
975
- und mit der Erstellung eines
home
-Verzeichnisses - der
shell
:/bin/bash
- der Benutzer-ID:
975
- der Bezeichnung: hier
libvirt
[root@archlinux ~]# useradd -c 'libvirt' -g 975 -m -s /bin/bash -u 975 libvirt
Ein Überprüfung ob der Benutzer ordnungsgemäß erstellt wurde, kann durch ausführen von nachfolgendem Befehl und einer Anzeige wie folgt, durchgeführt werden:
[root@archlinux ~]# cat /etc/passwd | grep libvirt libvirt:x:975:975:libvirt:/home/libvirt:/bin/bash
Abschließend soll noch ein Passwort für den Benutzer libvirt
mit nachfolgendem Befehl gesetzt werden:
[root@archlinux ~]# passwd libvirt New password Retype new password: passwd: password updated successfully
X-Session Übernahme ermöglichen
Damit eine Übernahme der X-Session vom Benutzer der sich via SSH
verbindet, auf den zuvor engelegten Benutzer libvirt
möglich wird, sind nachfolgende Ergänzungen der Konfigurationsdateien:
/etc/pam.d/su
/etc/pam.d/su-l
notwendig.
Nachfolgende Zeilen sind an die jeweils zuvor genannten Konfigurationsdateien anzuhängen was mit nachfolgenden Befehlen durchgeführt werden kann:
/etc/pam.d/su
# echo session optional pam_xauth.so >> /etc/pam.d/su
/etc/pam.d/su-l
# echo session optional pam_xauth.so >> /etc/pam.d/su-l
Starten des virt-managers über eine Remote-Verbindung
Login via SSH-Benutzer
Zuerst soll eine SSH
-Remote-Verbindung zum Server hergestellt werden, auf dem der libvirtd
-Dienst/Daemon läuft. Nachfolgend soll der Benuzter klaus
dazu verwendet werden:
$ ssh -A -X -2 -t klaus@192.168.0.125 klaus@192.168.0.125's password: Last login: Mon Jul 13 15:36:07 2020 from 192.168.0.20 [klaus@archlinux ~]$
Benutzerwechsel: libvirt
Anschließend soll vom Benutzer klaus
zum Benutzer libvirt
mit nachfolgendem Befehl gewechselt werden:
[klaus@archlinux ~]$ su libvirt - Password: [libvirt@archlinux klaus]$
Starten des virt-manager
Nun kann als Benutzer libvirt
der virt-manager
mit nachfolgendem Befehl gestartet werden:
$ virt-manager & [1] 1074 [libvirt@archlinux klaus]$
Mit nachfolgendem Befehl kann nach erfolgreichem Wechsel zum Benutzer libvirt
und Start des virt-manager
's überprüft werden, ob dieser auch unter dem Benutzer libvirt
gestartet wurde und nicht unter dem Benutzer, unter dem die SSH
-Verbindung hergestellt wurde:
$ ps auxwf | grep virt-manager libvirt 978 0.0 0.0 6596 2256 pts/0 S+ 15:33 0:00 \_ grep virt-manager libvirt 922 2.1 0.1 784460 76688 ? Ssl 15:31 0:01 python3 /usr/share/virt-manager/virt-manager
Nach ein wenig Anpassungen am Aussehen des virt-manager
s, könnte dieser nun wie folgt, nach dessen Start, aussehen:
Problembehandlung
cannot open display
Falls nach einer erfolgreichen SSH
-Remote-Verbindung und der Wechsel zum Benutzer libvirt
nachfolgende Fehlermeldung beim Starten des virt-manager
's erscheinen sollte:
[libvirt@archlinux klaus]$ virt-manager & [1] 1158 [libvirt@archlinux klaus]$ Unable to init server: Could not connect: Connection refused Unable to init server: Could not connect: Connection refused Unable to init server: Could not connect: Connection refused (virt-manager:1159): Gtk-WARNING **: 15:45:42.590: cannot open display:
liegt dies daran, dass in der Konfigurationsdatei
/etc/ssh/sshd_config
das
X11Forwarding no
noch gesetzt ist.
Eine Korrektur der Einstellung in der Konfigurationsdatei /etc/ssh/sshd_config
bei X11Forwarding
wie folgt dargestellt, einem Neustart des SSH-Dienstes/Daemon und dem kompletten Verlassen der SSH
-Remote-Verbindung mit allen Benutzer und einer entsprechenden Neuanmeldung, sollte das Problem lösen:
Nur relevanter Ausschnitt:
# Tachtler # default: #X11Forwarding no X11Forwarding yes