Dies ist eine alte Version des Dokuments!
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 Virtualisierungsplatform KVM (qemu
) und die Möglichkeit über das Desktop-Programm virt-manager
über eine GUI komfortabel virtuelle Maschinen unter
ArchLinux zu erstellen.
qemu
- Virtualisierungsumgebung selbst mit allen dafür benötigten Paketenvirt-manager
- Desktop GUI zur Verwaltung von virtuellen Maschinendnsmasq
- DNS „Forwarder“ und DHCP-Serverebtables
- Netzwerk Brücken (ethernet brdge) Filter Werkzeugedmidecode
- Desktop Management Interface Tabellen Werkzeuge
# pacman -S qemu virt-manager dnsmasq ebtables dmidecode
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:
972
- und mit der Erstellung eines
home
-Verzeichnisses - der
shell
:/bin/bash
- der Benutzer-ID:
972
- der Bezeichnung: hier
libvirt
[root@archlinux ~]# useradd -c 'libvirt' -g 972 -m -s /bin/bash -u 972 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:972:972: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-Seesion Ü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 Konfigurationsdatein anzuhängen und können mit nachfolgenden Befehlen durchgeführt werden:
/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.1.30'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önnt dieser nun wie folgt, nach dessen Start, aussehen: