(Server, Appliances und Client)
Linux KVM
Kernel-Based Virtual Machine (KVM) ist eine Open Source-Virtualisierungstechnologie, die im Linux® Kernel integriert ist.
Diese Technologie wird unter anderem genutzt bei:
- Proxmox VE
- WinBoat (siehe unten)
- Linux onboard (siehe unten)
Voraussetzung: Hardware-Virtualisierungs-Unterstützung durch die CPU.
WinBoat
- Electron-App, nutzt KVM und Containervirtualisierung unter Linux
- guter Assistent führt per GUI durch alle Installations-Schritte
- Programm lädt und installiert auf Wunsch automatisch das Gast-(Windows)-OS per Dockur
- Anwendungen lassen sich einzeln per RDP aus dem Wirtsystem aufrufen und fühlen sich wie nativ in Linux installiert an
- Windows läuft als VM innerhalb eines Docker-Containers und kommuniziert mit dem Anwender über Winboat Guest Server per FreeRDP
- Dateisystem-Integration über durchgereichtes Verzeichnis in Netzwerkumgebung und Drag & Drop
- Windows-VM läuft auch im Browser (http://127.0.0.1:8006), aber RDP ist flüssiger
- Netzwerk ist per Default zum LAN gekapselt, hat aber Internetzugriff
- USB Passthrough (Beta) funktioniert super
KVM/Quemo-Virtualisierung
Volle KVM/Quemo-Virtualisierung, Verwaltung mehrerer VMs
- egrep -c '(vmx|svm)' /proc/cpuinfo - Virtualisierung verfügbar? muss "0" ergeben
- sudo apt install qemu-kvm qemu-system qemu-utils python3 python3-pip libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager -y - Qemu installieren
- sudo systemctl status libvirtd.service - Dienst überprüfen
- sudo virsh net-start default - virt. Netzwerk zuweisen
- sudo virsh net-autostart default - Autostart
- sudo virsh net-list --all - Status prüfen
- virt-manager - startet Virtualisierungs-Manager GUI
- Quelle und alle Schritte: https://christitus.com/vm-setup-in-linux/
Quellen und Links:
- wichtige Befehle (Linux/Proxmox/ZFS)
- Proxmox PVE Server
- https://www.redhat.com/de/topics/virtualization/what-is-KVM
- KVM Management Tools: https://www.linux-kvm.org/page/Management_Tools
- KVM Community: https://www.linux-kvm.org/page/Main_Page
- Windows in KVM: https://www.makeuseof.com/create-windows-virtual-machine-in-linux-with-kvm/
- Anleitung dt.: https://docs.linuxmuster.net/en/stable/appendix/install-on-kvm/index.html
- https://docs.linuxfabrik.ch/software/kvm.html
- Hot-Backup mit virtnbdbackup utility for libvirt: https://github.com/abbbi/virtnbdbackup
- VMWare in Proxmox konvertieren (vor Proxmox 8.2): https://pve.proxmox.com/wiki/Migrate_to_Proxmox_VE#Migration
Proxmox HA Storage
Beide HA Speicheranbindungen funktionieren bei Proxmox immer mit einer Downtime beim Desaster Recovery.
Die Live Migration von VM ist möglich, selbst bei lokalem Storage.
• 2-Node-Cluster mit ZFS
- Datacenter mit 2 Nodes + lokalen Storages (mehr als 2 Nodes -> CEPH)
- lokales File- und Block-Storage
- bessere Performance gegenüber CEPH (Zugriff lokal)
- asynchrone Verteilung auf alle Storage
- für Datenbanken nicht geeignet, besser DB-Cluster oder CEPH
- ZFS Pool muß auf beiden Storages identisch heißen -> Storage wird repliziert
rpool = lokales System
vm-pool = für VMs - VM erstellen, dann Replication einrichten (Bsp. alle 5 min)
-> Container wird in definierter Zeit repliziert
-> HA wird pro VM definiert
More (rechts) -> Manage HA -> HA aktivieren - HA wartet 2 min. (Zeit fest!) bei Serververlust
-> dann startet VM auf 2. Host
-> Downtime = 2 min. immer beim HA-Wechsel - drittes Quorum erforderlich, Mehrheit hat gültigen Storage
Quorum ist nur in Shell sichtbar (pvecm status) - Datacenter: HA zeigt Status
- HA-Gruppen: Priorität des Hostes für VM definieren
- laufende VM können live zwischen den Hosts migriert werden
- laufende CT können nicht migriert werden
Installation:
- Management-Port fest auf IP legen
- vmbr0 Config-Bridge löschen - Corosync (Cluster-Netzwerk) direkt auf ein Interface legen
2. Netzwerkkarte sinnvoll (ggf. GUI-Netz) - falls möglich Ports bündeln
- Linux Bond, Mode= LACP oder Balance - Bond für Storage ohne Switch (performanter)
- VM-LAN: Linux Bridge vmbr0 -> Port oder Bond zuweisen
(VLAN aware, keine IP) - PVE1: Join Info kopieren
- PVE2: Join Cluster
- Netzwerke wählen - PVE3 für Quorum
- Quorum auf Debian Mini-PC (apt install corosync-qdevice)
- physischer PBS-Server gut als Quorum geeignet
• Ceph
- verteilte open source Storage Lösung (File, Block, Object-Storage)
- bessere Redundanz und Datensicherheit gegenüber ZFS
- CEPH Latenz darf 9ms nicht überschreiten!
- synchrone Verteilung auf alle Storage
- selbstheilend
- gutes Dashboard im PVE
- Update-Installation wie PVE Updates
- min. 3 Ceph-Server
3x CEPH (immer ungerade Anzahl) Monitor für Quorum, Client-Management
CEPH Manager (Monitoring-Daten, Schnittstelle für ext. Monitoring) - min. 4x OSD (Datenträger) pro Cluster, gleiche Anzahl pro Host empfohlen
- läuft auf Standard-Hardware, keine Hersteller-Liste
- Subscription- (mit PVE Subscription) oder NoSubscription Updates
- HDs zufügen / verschiedene HD-Größen / Hosts zufügen
- RADOS Block Device für PVE VMs
- PVE Client verhandelt mit CEPH und speichert auf einen Datenträger
CEPH synchronisiert Daten selbständig auf (2) weitere Kopien - CEPH wird über PVE pro Host installiert
- eigenes, performantes Netzwerk verwenden! (25 Gb/s) - nur Public Network, kein extra Cluster Network
-> Full Meshed Network for CEPH (=keine Switche) - CEPH Monitor für Host2 + Host3 nachinstallieren, Host1 wird automatisch installiert
- CEPH Manager für Host2 oder 3 installieren, 2x Manager genügt
- CEPH OSD = Datenträger, nur NVMe/ SSD, alle Datenträger pro Host hinzu fügen (OSD zu phys. HD dokumentieren)
- CEPH Pools anlegen, Size=3 (Anzahl der Replikate), Min.Size=2 (sonst geht CEPH down)
- CEPH / DephFS: 3x Metadaten Server pro Host erstellen
- VM: Storage Move-to: CEPH-Pool
- CEPH / OSD: Global Flags (noaut usw.) setzen für Wartung
Quellen und Links:
Backup des Proxmox PVE-Host
Backup PVE-Host (3 Kopien)
- PVE: zfs list - suche geeigneten Storage für Backups (Bsp: /hd-vol3/Backups)
- PVE: touch /home/pve-backup.sh - erstelle Backup-Script
- PVE: nano /home/pve-backup.sh
#!/bin/bash
# PVE - Backup
# Definiere destinationdir und Logfile
DEST="/hd-vol3/Backups/host1"
LOG="/hd-vol2/daten2/Uwe/logfiles/backup_monat_PVE-Host--PVE.log"
echo "*** Backup PVE-Host nach $DEST-kopie1" &> "$LOG"
echo `date` &>> "$LOG"
# lösche kopie3
if [ -d "$DEST-kopie3" ]
then
echo " Lösche $DEST-kopie3" &>> "$LOG"
rm -r "$DEST-kopie3"
fi
# Verschiebe kopie2 -> kopie3
if [ -d "$DEST-kopie2" ]
then
echo " Move $DEST-kopie2 -> $DEST-kopie3" &>> "$LOG"
mv "$DEST-kopie2" "$DEST-kopie3"
fi
# Verschiebe &DEST-kopie1 in kopie2
if [ -d "$DEST-kopie1" ]
then
echo " Move $DEST-kopie1 -> $DEST-kopie2" &>> "$LOG"
mv "$DEST-kopie1" "$DEST-kopie2"
fi
# erstelle $DEST
echo " Erstelle $DEST-kopie1" &>> "$LOG"
mkdir "$DEST-kopie1"
# r - recursiv
# h - human readable
rsync -rptgoh --progress --stats "/etc/" "$DEST-kopie1"etc &>> "$LOG"
rsync -rptgoh --progress --stats "/home/" "$DEST-kopie1"home &>> "$LOG"
rsync -rptgoh --progress --stats "/boot/" "$DEST-kopie1"boot &>> "$LOG"
rsync -rptgoh --progress --stats "/root/" "$DEST-kopie1"root &>> "$LOG"
# Dumps nicht mit sichern
rsync -rptgoh --exclude='lib/vz/dump/' --progress --stats "/var/" "$DEST-kopie1"var &>> "$LOG" - Script per Cronjob im gewünschten Intervall ausführen
Der Proxmox VE-Server kann nicht mit der eigenen Backup-Funktion oder dem Proxmox Backup Server gesichert werden.
- möglich wären Linux Backup-Lösungen
- der PVE-Server ist schnell wieder installiert
- der Installer macht das System (RPOOL) platt!
- alle wichtigen Config-Files vorher(!) sichern
- möglichst keine VMs auf RPOOL sichern
Proxmox Virtual Environment Server (PVE)
Spice und Quemu
noVNC-Konsole: Default VM-Konsole, einfach, browserbasierend, Fenster, keine Zwischenablage, kein Sound, teils ruckelige Grafik, keine LAN-Verbindung zur VM erforderlich
- Qemu Guest Tools installieren+aktivieren! (verbessert Leistung und Überwachung, flüssiger, Shutdown, Snapshots, qm-Befehle u.a.)
- Mauszeiger reagiert in noVNC Konsole auch mit Qemu Guest Tools sehr träge (kein Vergleich zu VMWorkstation- oder ESXi-Konsole)
Spice-Konsole: Vollbild (VirtIO-GPU), Sound (Audiogerät hinzu fügen), im Wirts-PC "virt-viewer" inst.
- Zwischenablage in beide Richtungen, ggf. muß spice-vdagent (spice-guest-agent) bzw. Virt-Manager im Client installiert werden (Qemu Guest reicht nicht).
- Display: Spice oder VirtIO-GPU, USB (USB-Device: Spice Port)
- funktioniert ohne LAN-Verbindung zur VM
- siehe Proxmox WiKi SPICE
- VirtIO CD ISO zum Mount in Client: https://logiqlinux.com/de/manuals/hrpc-proxmox-ve/creating-a-new-virtual-machine/installing-virtio-drivers/
- Spice Guest Tools für Windows: https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe
RDP-Konsole: Sound, Zwischenablage, gute Grafik, Vollbild
- Voraussetzung: LAN-Verbindung zur VM, RDP-Server in der VM
Übersicht
Kernel-Based Virtual Machine (KVM) ist eine Open Source-Virtualisierungstechnologie, die im Linux® Kernel integriert ist.
- Bare Metal-Hypervisor vom Typ 1 (wie ESXi, VM-Ressourcen werden vom Hypervisor direkt für die Hardware eingeplant)
- erfordert Virtualisierungsfunktion der CPU, (grep -Ec '(vmx|svm)' /proc/cpuinfo) Antwort muss > 0 sein, ggf. im BIOS aktivieren
- erfordert VM-Emulation wie QEMU (LibVirt bzw. Proxmox)
- Open Source Enterprise Virtualisierer, Frontend+Bundle mit KVM-VM und LXC-Container Virtualisierung, ZFS auf Debian-Basis
- Gast-VM: Windows 2000, XP/2003, Vista/2008, 7/2008R2, 8/2012(R2), 10/2016/2019, 11/2022, Linux, Solaris und verschiedene BSD-Varianten auf Intel und AMD x64-Basis
- Gast-Container: Ubuntu, Debian, Fedora, OpenSuse u.a. Linux
- Filesystem: LVM (ext4) oder besser ZFS
- TPM-Support (kein Zwang), Snapshots, Clones, Backups, Templates, Live-Migration zwischen 2 Hosts, Thin-provisioned Storage
- Enterprise Support und Repository buchbar
- ohne Subscription Lizenz: Betrieb + Update über Community Repository im nichtkommerziellen Bereich möglich
- 04/2024: Proxmox 8.2 mit Importschnittstelle für VMWare ESX (Rechenzentrum -> Storage -> ESXi)
- 11/2025: Proxmox 9.1 Container mit Templates per Pull from OCI Registry (aus Docker u.a.)
Hardware
• ZFS nutzt per Defaul 50% des RAM als Cache (->viel RAM einbauen!)
• möglichst keine Consumer SSD/NVME verwenden, weil deren Cache zu gering ist und sie zu viel beschrieben werden
• 2 kleine SSD (256GB) für System (rpool) verwenden, große NVMe und HDD für die VM
• RAID-1 oder RAID-10 für VMs nehmen
• ZFS ohne Hardware-RAID (direkter Datenzugriff!), LVM mit Hardware-Controller
• Booten von Software-RAID (ZFS) ggf. über HBA (Boot-Partition ist kein RAID)
• ZFS ist LVM vorzuziehen
- hat keine Schreiblücke und benötigt keinen Akku-gepufferten Cache
- flexible Software-RAID Level
- Copy on write, Komprimierung, Checksummierung, Scrubbing
- HA Cluster nur mit ZFS möglich
• NVME-Cache bringt viel
• Proxmox supportet Speichertypen
Installation
- HD-Seriennummern und Slots notieren! (falls RAID ausfällt)
- Installer: Optionen: ZFS-RAID + HDs wählen, HD-Size für System (rpool) festlegen (100GB), ashift= 12
- "Datastore behalten" wie VMWare kennt Proxmox nicht, der Installer macht die System-Partitions platt und "vergisst" die anderen Pools.
Beim Neuinstallieren werden also alle VMs in rpool (sda3+sdb3) gelöscht!
ZFS-Pools auf anderen Partitionen können per zpool import wieder eingebunden werden, wenn man die wichtigsten cfg-Dateien hat.
/etc/pve/storage.cfg (notfalls manuell) wieder herstellen (enthält die Datastores für die GUI)
Für VMs: /etc/pve/qemu-server, für Container /etc/pve/lcx - wieder herstellen, enthält die Configs der VMs
Anleitung ZFS-Pool Import
-> keine VMs auf rpool (local) planen, nur das System! -
Proxmox erstellt 3 Partitions (cfdisk /dev/sda): Legacy BIOS Boot (1MB), EFI Boot-System (512MB), ZFS/Proxmox-RAID 'rpool' (Rest bzw. Setup:HDSize)
Partition 1 und 2 sind kein RAID! (UEFI-Partition nach jedem größeren Update synchronisieren)
Partition 3 (ZFS-RAID) /dev/sda3 und /dev/sdb3 kann nicht direkt booten
• Boot-Loader auf allen Boot-Partitionen synchronisieren:
• update-grub - Aktualisierung der Grub Loader
• grub-install /dev/sdb - Installation des Grub-Loaders auf Laufwerk sdb
• update-initramfs -u - aktualisiert die Grub-Infos auf diesen HDsZFS RAID-1:

>>cfdisk (sda, ZFS)

>> lsblk (sda und sdb)

- Software Defined Network (SDN): wird im Cluster organisiert, VLANs pro VM oder (besser) pro Bridge; Firewall pro VM
1) vmbr0 -> VLAN-Aware = ON, Server neu starten
2) pro VM/CT -> Netzwerk: VLAN-Tag setzen
- in VM/CT ggf. geänderte IP konfigurieren
3) zum PVE kommen vom Switch gebündelte VLAN-Trunk-Ports
Strategie: Ports= BOND, Switche= VLAN, VMs= Firewall - Proxmox WEB-GUI: <ip>:8006
- Proxmox SSH-Konsole: ssh root@<ip>
Powersafe (Homeserver)
Per Default läuft ein Virtualisierungshost sinnvollerweise ohne Powersafe.
Im Homelab ist das aber eventuell sinnvoll.
- cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor - zeigt Powermodus für jede einzelne CPU
Proxmox Default: performance - cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq - zeigt Frequenz für jede einzelne CPU
- echo "powersave" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor - setzt Governor = powersafe (ggf. nicht bootfest, in Crontab eintragen)
- alle CPU Scaling Werte erklärt
- siehe Powersafe, CPU Governor (Homeserver)
- DMZ-Strategie: zweite OPNsense im Proxmox für geschützte VMs (Performance, Single-Point-of-failure), DMZ-Bridge ohne zweite Firewall
Skizze: Baribal Studios - Routing (manuell): ip route add 10.10.10.0/24 via 192.168.1.10 dev vmbr0 (Firewall nicht vergessen)
- Routing (dauerhaft): /etc/network/interfaces (enthält alle Interfaces und Bridges)
post-up ip route add 10.10.10.0/24 via 192.168.1.10 dev vmbr0 - zpool status - zeigt RAID-Status (ZPOOL ist der RAID-Teil von ZFS)
- neuen Pool erstellen: einfach über Proxmox-GUI (Mirror, shift=12), leere Partitionen auswählen (mit cfdisk erstellen)
- zpool list - zeigt Pool- Fragmente, Deduplizierung, (CAP soll nicht über 80% gehen!) - ggf. Autosnapshoots verkleinern
- zpool set autotrim=on rpool - Autotrim anschalten! Wichtiger Platz- und Leistungsgewinn.
- zpool trim rpool - führt TRIM manuell aus, nur zur Kontrolle, Anzeige mit zpool status
- cd /dev/disk/by-id/ -> ls -l zeigt HDs mit Seriennummer und logischem Name (Bsp: sdb3), wichtig bei HD-Defekt
- Datacenter / Storage / lokal-zfs: Blocksize auf 16k + ThinProv. ändern (ist jetzt DEFAULT), sonst ist Overhead riesig
- jede danach angelegte VM bekommt per Default 16k - Blöcke - zfs list - zeigt Partitionen + Mountpoints

• /rpool/ROOT/pve-1 = '/' = Proxmox-Partition - E-Mail Alarmierung ist rudimentär (Postfix), besser Monitoring (CheckMK-Plugins)
- Vollständige Conf einer VM: cat /etc/pve/quemu-server/101.conf
- Windows gibt gelöschten Speicherplatz deutlich verlangsamt wieder frei -> SSD-Trim (HD -> Tools -> Optimieren) regelmäßig planen
- Proxmox-User mit Two Factor -> TOTP absichern
• PAM-User sind lokale Linux-User (meiste besser)
• Proxmox-User sind User des Proxmox Datastore - ssh-keygen - Schlüsselpaar erzeugen
Snapshots - bei ZFS: ggf. Bashclub-ZFS Postinstall-Script ausführen, wechselt auf no-subscription-repository und schaltet Warnung ab, installiert Tools, konfiguriert Cache, Autosnapshots, Config-Backup, Systemaktualisierung (Swap ab 95%, Mailer, Snapshots festlegen!! [Monate - Wochen - Tage - Viertelstunden], blocksize=16k)
- danach: GUI Updates Refresh / Rebooten
- Autosnapshot vererbt sich per Default
- zfs set com.sun:auto-snapshot=false <VMSTORE> - Dateisystem nicht AutoSnapshoten
- zfs set sync=disabled rpool - SYNC ausschalten
- zfs set com.sun:auto-snapshot=true <VMSTORE>/<VM> - nur einzelne VM SnapShoten
- zfs list -t snapshot (zfs get written) - listet alle Snapshots auf
- zfs list -t snapshot | grep pve-1 - listet alle Snapshots der Proxmox-Partition auf
- Snapshots per cd anzeigen: /VMSTORE/<VMNAME> cd /.zfs/snapshot/ → ls -alh
- zfs rollback -r rpool/ROOT/pve-1@zfs-auto-snap_hourly-2023-05-27-1158 -> Rollback des angegebenen Snapshots
so kann Proxmox und jede einzelne VM wieder hergestellt werden - sollte sich auch die VM-Konfig geändert haben, extra /pve/ Snapshot holen. PBE Backup Server sichert auch die VM-Konfig.
- Proxmox Update: niemals via apt upgrade!! Nur über Proxmox-GUI oder so:
• apt update (Paketquellen updaten)
• apt dist-upgrade (Pakete mit ihren Abhängigkeiten installieren)
• REBOOT nach jedem Kernel-Update - Upgrade v8 -> v9: https://pve.proxmox.com/wiki/Upgrade_from_8_to_9
- ZFS-RAID löschen:
• zfs list - zeigt Pools
• nano /etc/pve/storage.cfg - Eintrag löschen
• zpool desroy <pool>
RAID-Cache mit schneller SSD oder NVM (sdc) erstellen - es können mehrere Cache Laufwerke pro Pool angegeben werden
- zpool add -n hd-pool cache sdc sdd
- zpool iostat -v 1 - zeigt Befüllung des Cache
Fehler: 1 ZFS RAID-HD (bsp: sda) gestorben oder ich will 2. HD zufügen - RAID ist degraded, man merkt das nicht (Monitoring!!)
- zpool status zeigt RAID-Status (degraded)
- HD/SSD wechseln (darf auch größer sein)
- zpool set autoexpand=on rpool - schaltet Autoexpand an
- sgdisk /dev/sdb -R /dev/sda - überträgt (repliziert) Partitionen von sdb auf sda
- lsblk - zeigt Partitionen an
- cfdisk /dev/sda - gpt-Partition, Linux Filesystem, wenn neue HD sda größer ist, Proxmox-Partition sda3 resizen auf volle HD-Größe
- sgdisk -G /dev/sda - erstellt neue GUID für die neue HD
- proxmox-boot-tool clean - entfernt ID der defekten HD aus der Bootkonfig
- proxmox-boot format /dev/sda2 - formatiert Boot-Partition mit Windows Dateisystem (sda1 + sda2)
- proxmox-boot-tool init /dev/sda2 - überträgt Bootpartition auf neue HD
- proxmox-boot-tool status - gelegentlich prüfen, muß wieder 2 HDs zum Booten haben
- zpool status - zeigt immer noch, dass rpool DEGRADED ist (HD REMOVED), d.h. neue sda3 hat noch keine Daten
- (zpool replace rpool sda3 - Daten werden auf neue Partition repliziert)
- ls -althr /dev/disk/by-id/ zeigt HDs mit Seriennummer und logischem Name (Bsp: ata-Gigastone_SSD_GSTGGGHABK2406260460-part2 -> ../../sdb2)
- zpool attach rpool sdb3 ata-Gigastone_SSD_GSTGGGHABK2406260460-part2
-> füge neue HD (sdb2) über ID (wichtig beim Umstecken der HD!!) zum rpool (zu funktionierender Platte sdb3, ggf. auch als ID) hinzu - zpool status - jetzt Online, resilvering
- zpool status -v [pool] - zeigt genauen Status des Resilvering an
Notfall-Recovery bei defektem Proxmox Bootsystem - Intallation Proxmox von CD auf beliebigen anderen Datenträger ohne ZFS inst. (sonst hätten wir 2x RPOOL) (gute Datenplatten raus ziehen)
- zfs list - keine Volumes da (HD wieder rein)
- zpool import -fa - importiert alle ZFS-Pools
- Kopieren storage.cfg, quemu-server (/rpool/pveconf/)
- System läuft (ohne SSH-Keys, Autosnapshot usw)
- siehe auch Thomas Krenn WiKi
neue HD hinzufügen, ohne die Alte zu löschen (Backup o.ä.) - zpool attach rpool sdb3 <neue HD> - statt REPLACE kann man mit ATTACH weitere HDs hinzufügen
- zpool status - zeigt dann 3 HD im RAID an
- nun kann man 1 HD entnehmen und aus dem RAID entfernen:
- zpool detach rpool sdb3 - löscht HD aus RAID-Konfig
- proxmox-boot-tool clean - entfernt ID der entfernten HD aus der Bootkonfig
- bootet man jetzt nur von der entnommen sdb, würde sie immer noch melden dass die beiden anderen HD fehlen
separaten ISO-Pool erstellen (NVMe-RAID ist dafür zu schade)
Bsp: ZFS-Pool heißt "hd-pool" und soll Dataset "ISOs" bekomme und ein Directory Storage "ISOs" - zfs create hd-pool/ISOs - Dataset erzeugen
- zfs destroy hd-pool/ISOs - Dataset löschen
- zfs set compression=zstd hd-pool/ISOs - ZSTD-Kompression für weniger Platzverschwendung
- zfs set relatime=on hd-pool/ISOs - ggf bei SSD: unnötige Writes vermeiden
- zfs set quota=100G hd-pool/ISOs - ggf. Quota auf 100GB setzen
- pvesm add dir ISOs --content iso --is_mountpoint yes --shared 0 --path "/hd-pool/ISOs" - Directory Storage für ISOs anlegen
(Pool für VMs: Content= images), auch manuell mit nano /etc/pve/storage.cfg
VM erstellen: - virtuelle Hardware nicht E-1000 (1GB) o.ä., sondern virtuelle Proxmox-Hardware mit 100 GB/s nehmen!
PVE -> Storage local -> ISO-Images -> Download from URL
Suche: proxmox windows drivers stable -> Download-Link kopieren in URL oben, Query URL -> lädt virtio-win.iso (Treiber-CD)
(https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso)
• Windows7: virtio-win-0.1.173-4.iso - Disk Device: SCSI mit 'VirtIO SCSI single' Controller, Discard + SSD-Emulation +IO thread anhaken, no Cache
- CPU Type = host (außer wenn man den Host wechseln will), Machine= Q35, (Version= 5.2 ggf zuverlässiger)
- Quemu anhaken, vergl. VMWare Tools, UEFI Boot
- Network = VirtIO (paravirtualized), vmbr0 ist Default Bridge
- CD1 = Boot-OS
- CD2 = virtio-win.iso
- Windows Installation findet keine Festplatte -> Treiber laden -> vioscsi -> win10
- von CD virto-win.iso 'virto-win-guest-tools' installieren -> installiert alle fehlenden Treiber
- QEMU Guest Agent installieren
• Windows: virto-win.iso, Verzeichnis guest-agent
• Linux: apt-get install qemu-guest-agent , systemctl start qemu-guest-agent
Danach zeigt die VM unter Übersicht die IP, Meldung "kein Agent" verschwindet, qm-Befehle gehen, Shutdown über GUI geht. - im Host Qemu Guest aktivieren: qm set <vid> --agent 1
Test: qm agent <vid> ping - ggf. Spice oder RDP aktivieren
Hochlastige VM optimieren, Auslagerungsdatei ohne Snapshot - powercfg -h off - Hyperfil off
- zfs create -o com.sun:autosnapshot=false rpool/swap - erstellt Verzeichnis, in dem keine Autosnapshots gemacht werden
- Proxmox Datacenter -> Stoarage -> Add -> ID: rpool-swap, ZFS-Pool auswählen, Content= Disk Image, 16k Block Size
- VM -> Hardware -> Add HD -> Bus: SCSI, Storage: rpool-swap, Size: 8GB, SSD-Emulation, Discard
- Windows Datenträgerverwaltung: Datenträger initialisieren, LW-Buchstabe
- Windows Systemeigenschaften -> Leistungsoptionen -> Auslagerungsdatei ändern in Swap-LW
ZFS-HD einer Windows-VM vergrößern - HD in Proxmox vergrößern: VM -> Hardware -> Harddisk -> Disk Action: Resize
- in Windows hindert die Widerherstellungspartition am Vergrößern von LW C:
- Proxmox: lsblk, Widerherstellungspartition identifizieren

- cfdisk /dev/cd16
Windows RE (546MB) löschen (nicht hier Resizen!) - HD in Windows Datenträgerverwaltung vergrößern
- ggf. in /etc/pve/quemu-server/100.conf anpassen, sonst wird das weiter falsch angezeigt
Backup-Strategie: - /etc/cron.daily (Cronjob)
- VM herunter fahren (qm shutdown...)
- Snapshot
- VM starten
- Snapshot weg sichern (repl)
- PBS ermöglicht Backup ohne Shutdown
- keine Backups, Hyperfil oder Auslagerungsdatei auf produktive Volumes legen (mit Snapshot)
- keine Backups auf "Local-Store" legen, denn das ist der PVE
Backup Replication einfach und trojanersicher (SysOps) mit pull, geht auch remote in LAN/WAN - zfs create -o com.sun:autosnapshot=false backup/repl (data, clone, rpooldata) - auf neuem Volume anlegen
- zfs set com.sun:autosnapshot=false backup - ganzer Datenträger ohne Autobackup
- gihub.com bashclub: bashclub-zfs-push-pull -> Link kopieren
- git clone <link> - installiert
- chmod +x 02pull bashclub-zfs - ausführbar machen
- cp bashclub-zfs /usr/bin/ - kopiere an bessere Stelle
- nano 02pull - editieren
Scriptpaht='/usr/bin'
Sourcehost='localhost'
DestPath='backup/repl' - Trojanersicher ist das initiiert vom Remote Backup Server aus. Auf den Systemen läuft zfs send / zfs receive mit Prüfsumme.
VMs importieren - vmdk, vhdx, raw, qcow2, ovf > mounten (Kopieren mit winscp) im Original nach mnt/pve/nfsstore
- zvols, lvm, usb, hdd, ssd (phys. Geräte)
- qm importdisk 100 /mnt/hypervfreigabe/dc.vhdx local-zfs - importiert und konvertiert automatisch
- ova: entpacken von ovf, mf, vmdk, nvram
- VMWare Workstation: Export als OVA (möglichst vorher VMWare Tools deinstallieren)
- WinSCP: Dateien auf Proxmox übertragen
- qm importovf 101 bitnami-wordpresspro-5.1.1-0-linux-debian-9-x86_64.ovf local-zfs
- bei UEFI-VM: BIOS auf UEFI setzen (qm set 101 --bios ovmf)
- Treiber von SCSI auf SATA ändern (sed -i 's/scsi/sata/g' /etc/pve/qemu-server/101.conf)
Quelle: Krenn AG WIKI - ESX.vmdk von Proxmox Shell aus importieren
- Disk als IDE-LW hinzu fügen
- physische Systeme: mit VMWare Converter oder Clonezilla Festplatten erzeugen
- VM in Proxmox neu einrichten, HDs hinzu fügen (unused disk: discard + add)
- VMWare Tools deinstallieren
- virtio-win.iso installieren, QUEMU-Guest installieren
- ab Proxmox 8.2 mit Importschnittstelle für ESXi (Datacenter -> Storage -> ESX), Variante 4
Variante 3: Clonezilla - clonezilla Empfangsmodus auf neu erstellter, leerer VM
- clonezilla booten auf PC
Variante 4: VMWare ESX per Proxmox Import Agent (neu 2024) - importiert ESX Host v.6.5 - v.8
- ESXi Datastore in Proxmox einbinden und VM importieren
- Assistent erkennt (je nach Ausgangs-VM) Controllertyp, CPU, RAM, HD automatisch
- https://forum.proxmox.com/threads/new-import-wizard-available-for-migrating-vmware-esxi-based-virtual-machines.144023/
- https://www.thomas-krenn.com/de/wiki/ESXi_VM_Importer_-_Proxmox_VE_Storage_Plugin?xtxsearchselecthit=1
- nach Import: Treiber für HD auf VirtIO umstellen, LAN neu hinzu fügen, Quemu Guest Agent inst.
- nach dem Import alter VM ggf. Controller in vioscsi ändern
- vio-Treiber in nicht startendes Windows per CMD integrieren:
- virt-IO -CD "einlegen"
- System reparieren - > Eingabeaufforderung
- Windows-Laufwerk (x:) und VirtIO-Laufwerk (d:) suchen
- drvload d:\vioscsi\2k22\amd64\vioscsi.inf -> erfolgreich geladen
- dism /image:x:\ /add-driver /driver:d:\vioscsi\2k22\vioscsi.inf -> Operation successfully
Proxmox - Cluster - ermöglicht Livemigration, Hochverfügbarkeit, gemeinsame Oberfläche
- ZFS erforderlich (also kein RAID-Controller + LVM)
- LANs (empfohlen):
- Corosync - PVE-Cluster
- Ceph - Storage
- vmbr0 - VMs - Cluster synchronisiert /pve/ Konfigurationen
- fügt 2 oder mehr Proxmox-Hosts zu einer Oberfläche hinzu, auch ohne zentralen oder replizierten Storage (2 Instanzen bilden "Mehrheit")
- mit zentralem Storage können VM im laufenden Betrieb verschoben werden (HA, Failover)
- auch ohne zentralem Storage geht Livemigration im Cluster (entsprechend langsam), Server-Sync (Bsp. minütlich)
- dediziertes (schnelles!) Storage-Netz für ZFS Sync
- Achtung: VMs dürfen keine gleichen Namen (101) haben! Am Besten leeren Host hinzu fügen. Sync. Storage-Pools müssen gleichen Namen haben.
- https://pve.proxmox.com/wiki/Cluster_Manager
- CEPH (empfohlen) ist ein selbstheilender, sich selbst verwaltender, frei skalierbarer Speicher über mehrere Geräte hinweg (Open Source Software)
- min. 3 Server
- min. 4 Datenträger je Server
- dediziertes Storage-LAN (min. 25 Gb/s bei NVMe)
Proxmox Remote Migration - Migration von VM oder LXC von einem Host auf einen anderen über das Netzwerk
- kein Cluster erforderlich, verteilte Standorte und getrennte Systeme möglich
- Berechtigung über API-Token
- Anleitung: https://www.thomas-krenn.com/de/wiki/Proxmox_Remote_Migration?xtxsearchselecthit=1
Proxmox Datacenter Server - verwaltung von mehreren Proxmox VE oder PBS-Servern
- Server müssen nicht im selben Cluster sein
- Vertrauensstellung wird durch Fingerprint hergestellt (PVE: Zertifikate -> pve-ssl.pem)
USB-Stick in VM durchreichen - USB-Stick an Host stecken, Stick erscheint im Host unter "Disks"
- USB-Device in VM hinzu fügen, "Use USB Vendor/Device ID"
- Stick auswählen, fertig
Quellen und Links:
- Proxmox wichtige Befehle, Pfade und Dateien
- Backup des Proxmox PVE Host
- Proxmox Backup Server (PBS)
- xwichtige Befehle (Linux/Proxmox/ZFS)
- xKVM / Proxmox Übersicht
- xSamba / SMB-Freigaben
- Proxmox Firewall
- Proxmox konfigurieren, Postfix, Fail2ban usw. https://decatec.de/home-server/proxmox-ve-installation-und-grundkonfiguration/
- Proxmox VE Helper Scripts (Microcode Updates, Datacenter Manager, Host Backup...)
- Proxmox PVE Host Sicherung auf Proxmox PBS und forum.proxmox.com (Erklärung + Restore)
Linux Software für Desktop-Installation
Software, die nicht fehlen sollte:
Browser:
- Firefox Browser (+Ghostery) und Thunderbird Mailclient
- Chrome Browser kann ohne Zusatzsoftware URL-Verknüpfungen auf dem Desktop erstellen
Office-Suiten:
- Libre Office - meist vorinstalliert, OpenSource, leistungsstark
- OnlyOffice - OpenSource, sehr moderne Suite, kein Datenbank-Modul
Grafik:
- Grafik siehe auch "Grafikprogramme" (Gimp, Inkscape)
- GwenView oder gThumb - Bildbetrachter und Fotogalerie
gThumb: (sudo apt install gthumb) - Darktable - beste kostenlose Alternative zu Adobe Lightroom (RAW-Formate, Lcihttisch, nicht-destrukive Bearbeitung, mit Bibliotheksdatenbank und XMP-Datei)
sudo apt install darktable
Videobearbeitung:
- OpenShot - OpenSource, nichtlineare Video-Bearbeitungs-Software für die Betriebssysteme Windows, macOS und Linux
unbegrenzt viele Spuren, Blender 3.3 kompatibel - Freetube - Abspielen/Download von Youtube-Videos
Audio:
- Audacity - universeller Audio-Editor
- Ardor - professionelle Mehrspur Audio-/Midi-Workstation ab 1 USD
PlugIns: AudioUnit, LV2, VST (v2 & v3) and LADSPA formats. FX plugins. Software instruments. MIDI processors. Automate any parameters. - Clementine - Audio-CDs rippen
- VLC Mediaplayer
- Kodi Mediacenter - openSource Mediacenter, viele Decoder und PlugIns
Utils/Sonstige:
- PDF Drucker (apt install printer-driver-cups-pdf)
- Devolutions Remote Desktop Manager (RDP, SSH, VNC, VMWare, Hyper-V, Telnet, FTP, Powershell, Anydesk, Teamviewer, HTTP/S, SNMP) (Synaptic)
- KeepassXC (offiziell, Software-Distribution), Keepass2 (inoffiziell, Synaptic) - Passwort-Manager
- Signal Messenger (Synaptic)
- Midnight Commander MC - Terminal Dateimanager wie NC (sudo apt install mc)
- Flameshot - Sniping-Tool, Screenshot mit umfangreichen Bearbeiten-Funktionen (Software-Distribution)
- MS Visual Studi Code - Programmieren
- PDF Arranger - PDFs zusammenführen, aufteilen sowie deren Seiten rotieren, ausschneiden oder umsortieren
- Angry IP Scanner - IPs und Ports, Open Source
- FileZilla - S/FTP Filetransfer
- ClamAV - Virenscanner für E-Mail u.a.
- Fastfetch - umfangreiche Systeminformationen im Terminal (sudo apt install fastfetch)
- Btop++ - System- und Prozessmonitor (sudo apt install btop)
- Okular (im Softwarestore) - universeller Documentviewer, PDF, ePub, Bildformate
- balenaEtcher - ISO auf USB brennen (RUFUS-Ersatz)
- K3B - Brennen von CD-ROMs & Audio-CD's
- Turbo-Print - kostenpflichtig, aber Druckertreiber mit großem Funktionsumfang
Virtualisierer mit Qemu und KVM (für die letzte Windows App)
- WinBoat - sehr einfach zu installieren, reicht Verzeichnis, Zwischenablage, USB durch
- KVM - volle KVM/Quemo-Virtualisierung, Verwaltung mehrerer VMs
-> siehe Linux KVM
5 Wege zur Softwareinstallation: https://www.tutonaut.de/5-wege-zur-softwareinstallation-unter-linux/
Linux Basics
Quellen und Links:
Distributionen
- Debian
- freies Betriebssystem des Debian-Projektes
- Basis für viele andere Forks
- "Fels in der Brandung", grundsolide, langsamer bei neuen Komponenten
- etwa alle 2 Jahre erscheint eine neue Stable Version
- LTS-Support 3 bis 5 Jahre
- 32-bit (i386) Unterstützung beri Bedarf nachinstallieren
- eigene Paketverwaltung dpkg und deren Frontend APT
- Cinnamon Desktop installieren:
su
apt install cinnamon-desktop-environment
- Drucker: CUPS = lokale Drucker mit automatischer Erkennung (http://localhost:631/) - Ubuntu
- kommerzieller Hersteller Canonical
- Debian-basierend, LTS-Versionen alle 2 Jahre, 5 Jahre oder mehr Support
- Ubuntu Pro Abo (für Privat bis 5 PCs kostenlos) bis 10 Jahre Sicherheitsupdates
- setzt vorrangig auf proprietäre 'Snap' Paketverteilung
- Gnome Desktop unter Wayland
- eigenes Softwarecenter: App Center (kein Open Source) zeigt nur Snap (andere Softwareverteilungen nur über Shell)
- RDP Zugriff standardmäßig
- Wireguard mit GUI
- stabil, geht inzwischen viele Sonderwege, dass es oft nicht mehr empfohlen wird
- Cinnamon Desktop unter Ubuntu inst: sudo apt install cinnamon-desktop-environment - Linux Mint
- einfach, pragmatisch, Windows-ähnlich
- stabil, wartungsarm
- aktualisiert sich jeweils aus Ubuntu LTS, nutzt aber kein SNAP und ergänzt die Distribution mit Codecs, Java usw.
- nutzt die Ubuntu Paketquellen + eine Eigene
- ein zweiter, separater Zweig "Linux Mint Debian Edition" nutzt die original Debian Quellen - Fedora Workstation
- schön, neu, für experimentierfreudige Nutzer
- extrem reduzierte Gnome Shell, nicht Windows-ähnlich
- Virtualisierungssoftware "Boxen" vorinstalliert, beispielsweise für Windows-VM
- moderne Wayland Architektur
- Updates und Store: Gnome Software
- integriert nur patentfreie Software, das erschwert Installation von Codecs, Grafiktreibern usw.
- eine der führenden Distributionen, Hauptsponsor ist Red Hat
- halbjährlich neue Version mit 9 Monaten Support
- verschiedene Editions für Server, Workstation, IoT, Cloud usw. - ct Distibutionen Auswahlhilfe
Softwareverteilung, Softwarekatalog
- FlatHub/FlatPak
- Flathub ist distributionsübergreifender Standardkatalog (ausser Ubuntu)
Flathub in Ubuntu installieren: https://flathub.org/de/setup/Ubuntu
- enthält Open-Source-Apps und proprietäre Anwendungen wie Discord, Zoom, Spotify
- verteilt immer die aktuellste Version unabhängig von der Linux-Distribution
- jede Runtime enthält alle benötigten Bibliotheken
- Apps sind gekapselt und haben im Idealfall keinen direkten Zugriff auf System oder andere Apps (Sandboxing)
- Berechtigungen werden bei der Installation festgelegt (mit App Flatseal können die Berechtigungen manuell angepasst werden)
- neue und alte Versionen kollidieren nicht
- doppelte Ressourcen werden nur einmal gespeichert (Deduplication), trotzdem ressourcenhungrig und etwas langsamer beim Start - AppImage
- alternatives, distributionsübergreifendes Format, nicht so verbreitet wie FlatHub
- Images enthalten alle benötigten Bibliotheken und können ohne Installation gestartet werden (Ausführen erlauben)
- es können mehrere Versionen des selben Programmes "installiert" sein
- keine automatische Integration in das System
- keine automatischen Updates - Snap
- proprietärer, kommerzieller App-Store von Canonical
- Default für Ubuntu, nutzbar für viele andere Distributionen
- Softwareprojekte wie Firefox, Libre Office.. können die Wartung der Pakete selbst übernehmen
(oft ist Snap aber ungepflegeter als FlatPak)
- verwaltet von Dienst snapd, Kommandozeilenbefehl snap
- technisch vergleichbar mit AppImage oder FlatPak
- es können mehrere Versionen des selben Programmes installiert sein
- gespeichert in /var/lib/snapd/snaps
- Sandbox/Berechtigungen werden mit AppArmor verwaltet - RPM
- klassisches Paketformat von Fedora - klassische DEB Paketverwaltung
- oft für Server verwendet, Zugriff über Repositories der jeweiligen Distribution - fremde Paketquellen (PPA)
- klassisches Repository der jeweiligen Software - ausführbare Binärdatei
- letzte zu wählende Installationsmethode
- keine automatischen Updates
Terminal / Shell / Konsole öffnen mit [STRG] + [ALT] + [T]
Konsole als ROOT dauerhaft öffnen: sudo -i
ROOT-Konsole wieder verlassen: exit
Nur ein Administrator kann 'sudo' ausführen.
User "root" hat unter Ubuntu per Default kein Passwort.
Interaktive Anmeldung als root ist nicht empfohlen.
User (mit Home) erstellen: sudo useradd -m uwe
Passwort festlegen: sudo passwd uwe
User wechseln: su uwe
Falls root ein Passwort hat, zu root wechseln: su (ohne root)
Befehl als 'root' ausführen: sudo touch /etc/test
Befehl als 'benutzer' ausführen: sudo benutzer touch /etc/test (ergibt Fehler)
Konsolenkommandos
Systemupdate
sudo apt(-get) update
sudo apt(-get) upgrade
sudo reboot
sudo apt(-get) -y dist-upgrade
sudo apt(-get) -F install - repariert beschädigte Pakete
sudo pro config set apt_news=false (Werbung für Ubuntu Pro deaktivieren)
sudo do-release-upgrade - Release-Upgrade
automatische Updates
* sudo apt install unattended-upgrades - automatische Sicherheitsupdates installieren (Debian)
* cronjob mit allen Updates erstellen (update / upgrade / dist-upgrade / autoremove)
Systembereinigung
sudo apt-get autoremove - entfernt veraltete Kernel und Hilfspakete
sudo apt-get autoclean - entfernt veraltete DEB-Dateien aus der Paketquelle /var/cache/apt/archives/
sudo apt-get clean - entfernt alle DEB-Dateien aus der Paketquelle /var/cache/apt/archives/
Allgemein
lsb_release -a - zeigt Ubuntu Version
cat /ect/os-release - zeigt Linux OS Release
ls - wie dir,
ls -sh (zeigt Liste),
ls -l (Langform mit Berechtigungen, Anzahl Dateien im Verzeichnis, 1=Datei, Besitzer, Gruppe, Bytes, Datum, Name),
ls -a (zeigt auch versteckte Files) -> ls -all
man -k <Stichwort> - zeigt alle Befehle zu einem Stichwort
nano (dateiname> - Editor (Kopieren: ALT-6, Einfügen: Strg-U)
pwd - zeigt aktuellen Datei-Pfad
ps -edaf -> listet laufende Prozesse mit ihrer ID
kill (ID) -> beendet Prozess mit ID siehe ps .edaf
top - zeigt Taskmanager (Auslastung CPU, Speicher, Swap, Prozesse)
whoami - zeigt aktuellen Benutzer
tail -f /var/log/*.log - zeigt alle System-Logs
tail -f /var/log/syslog - zeigt Syslog live
crontab -l - listet alle Cronjobs des Benutzers auf
sudo dpg-reconfigure locales - Konfigurationsscript für Spracheinstellung Ubuntu / Debian
Netzwerk
ifconfig - (wie Windows IPCONFIG) zeigt Namen der Netzwerkkarten, ausgehandelte Geschwindigkeit und IP-Parameter (apt install net-tools)
ip a - (neu, wie IPConfig) - listet alle Netzwerkadapter + Parameter auf
ip r - (wie route print)
hostname -I - zeigt nur IP (mit Boardmitteln)
ping [webseite.com]
traceroute [dns/ip] - (sudo apt install traceroute)
nslookup [webseite.com]
curl -v [webseite.com] - gibt http-Inhalt und Zertifikat zurück
"route -n" oder "netstat -r" - zeigt Routingtabelle, Route ADD / DEL route... (ggf. nachinstallieren)
tcpdump -i eth0 port 443 - Paketsniffer (oft vorinstalliert), gibt Datendump aller Verbindungen von Netzwerkkaqrte und Port (apt install tcpdump)
tcpdump -i eth0 - zeigt allen Traffic auf eth0
sudo nano /etc/netplan/00-installer-config.yaml - IP-Adresse konfigurieren mit Netplan per Terminal
sudo nano /etc/netplan/01-netcfg.yaml (Verzeichis nicht sichtbar!)
iftop - Netzwerktool, analysiert Traffic, Ports, DNS und Bandbreite (sudo apt install iftop), Aufruf: sudo iftop
Festplatte
df -h - zeigt freien Speicherplatz der Festplatte (disk free)
du -shc * - zeigt alle Verzeichnisgrößen im aktuellen Verzeichnis incl. Summe
lsblk - listet alle Datenträger und Block Storages auf
gparted - Partition Editor, GUI, auch aus Live-System
cd -L <Verzeichnis> - Wechsel in logisches Verzeichnis (Standard)
cd -P <Verzeichnis> - Wechsel in physisches Verzeichnis (Bsp: cd -P /bin, cd -P /home)
cp [Optionen] Quelle Ziel - copy
mv [Optionen] Quelle Ziel - move
rm -r * - löscht aktuelles Verzeichnis incl. Unterverzeichnisse (recursiv)
find / -iname "datei.log" - sucht Datei (groß oder klein geschrieben) in allen Verzeichnissen
Partiton vergrößern:
- physische HD vergrößern
- lsblk - listet aktuelle Struktur
- growpart /dev/sda 3 - (mit Leerzeichen) vergrößert das angegebene Vol. auf die freie Größe (growpart installieren)
- resize2fs -p /dev/sda3 - (ohne Leerzeichen) Dateisystem anpassen
siehe Linux Filesystem
Neue Festplatte einbinden:
- cfdisk /dev/sdb - Partition erstellen
- Festplattenmanager GUI: Partition formatieren
- Festplattenmanager: HD beim Systemstart einhängen, Einhängepunkt festlegen
oder: mount /dev/sdb1 /mnt/hd1, dauerhaft in /etc/fstab
Dateiberechtigungen
cut -d: -f1 /etc/passwd - alle User im System anzeigen
cat /etc/group - alle Gruppen anzeigenid {Benutzer} - zeigt alle Gruppen eines Benutzers
Ubuntu: Standardmäßig hat ein User im eigenen Home-Verzeichnis Vollzugriff und in anderen User-Verzeichnissen Lesezugriff.
Linux vererbt grundsätzlich nichts.
Rechte rekursiv setzen: chmod -R u+rwX,g+rX,o+rX /verzeichnis (User:rwx, Gruppe: rX, other: rx)
• chown - ändert Besitzer
• chgrp - ändert die Gruppe
• chmod - ändert die Berechtigungen
• chattr - ändert Dateiattribute auf ext - Filesystemen

Zeichen: Directory (d) oder Datei (-)
2.-4. Zeichen: rwx - User (u)
5.-7. Zeichen: rwx - Group (g)
8.-10. Zeichen: rwx - Other (o)
• rwx - read / write / execute-search
Execute bei Ordnern bedeutet: Recht zum Ordner öffnen
• Berchtigung ändern: chmod u=rwx, g=rw, o=r testfile.txt
oder: read=4, write=2, execute=1 -> alle Rechte= 7
ergibt: chmod 754 testfile.txt
• Benutzer + Gruppe ändern:
chown -R www-data:www-data /var/www/wordpress
(weist dem /wordpress -Verzeichnis recursiv(-R) den Besitzer + Gruppe "www-data" zu)
Dateimanager Nautilus mit Root-Rechten nutzen: nautilus-admin installieren
sudo apt-get install nautilus-admin
Nach Neustart gibt es "Als Systemverwalter ausführen" im Kontextmenue.
Terminal-Dateimanager MC (Midnight Commander, ähnlich Norton Commander)
apt install mc - Aufruf mit 'mc' im Terminal
(System)festplatte verschlüsseln
1) Systemverschlüsselung mit Cryptsetup/Luks:
- geht nur, wenn kein Multi-Boot mit anderem OS verwendet wird
- nicht geeignet für Server, die unbeaufsichtigt starten (Passworteingabe erforderlich)
- Systempasswort, ist für alle User gleich
• beim Installationsvorgang: Festplatte löschen und Ubuntu installieren -> Erweiterte Funktionen zur Verschlüsselung der Festplatte
• LVM verwenden
• neue Installation verschlüsseln -> "Sicherheitsschlüssel" wird bei jedem Start verlangt
2) ab Ubuntu 23.10: experimentelle TPM-Unterstützung
• beim Installationsvorgang: Festplatte löschen und Ubuntu installieren -> Erweiterte Funktionen -> Enable Hardware-Backed Full Disk Encryption
• Schlüssel wird im TPM abgelegt und muß nicht bei jedem Boot eingegeben werden (wie Bitlocker)
3) Cryptsetup installieren, HD nachträglich verschlüsseln
• im Festplattenmanager können nun beliebige Festplatten oder USB-Stick verschlüsselt neu formatiert werden
• Schlüssel kann im System-Schlüsselbund/Brieftasche gespeichert werden
SSH-Zugriff aktivieren
• ggf. feste IP einrichten
• sudo systemctl status ssh - läuft SSH?
• sudo apt install openssh-server -> SSH (Server) installieren
• sudo systemctl status ssh -> wie oben, Status überprüfen, hilfreich bei Anmeldefehlern
• sudo systemctl enable ssh -> Dienststart automatisch
• sudo systemctl start ssh -> Dienst manuell starten
• sudo ufw allow ssh -> Firewall für SSh öffnen
• sudo nano /etc/ssh/sshd_config -> sshd_config anpassen
- (LoginGraceTime 200)
- PermitRootLogin yes - erlaube Root-Login
- StrictModes yes
- Port xyz - ggf. eigenen Port definieren
• /etc/init.d/ssh restart -> Dienst neu starten
SSH-Zugriff:
• ssh root@192.168.178.50 (Windows oder Linux)
Linux merkt sich die Fingerprints jeder SSH-Verbindung.
Befindet sich unter einer schon bekannten IP ein neues, unbekanntes Gerät, schlägt die SSH-Verbindung fehl!
Abhilfe: Verzeichnis .ssh enthält 'known_hosts'. In dieser Datei Eintrag mit der o.g. IP-Adresse löschen.
Ubuntu remote bedienen:
Einstellungen -> Freigabe -> Bildschirmfreigabe aktivieren, VNC-Protokoll aktivieren, Fernsteuerung erlauben
Damit die Remote Anmeldung ohne Bestätigung vom Ubuntu-Desktop funktioniert, diese Einstellung ändern.
Achtung! Ubuntu legt für die RDP-Verbindung ein eigenes Passwort fest!
Bug in Ubuntiu 20: das Kennwort ändert sich bei jeder Anmeldung.
Lösung:
XRDP installieren.
apt update apt install xrdp
apt install xorgxrdp
sudo systemctl start xrdp // Start und Eable XRDP-Service sudo systemctl enable xrdp systemctl status xrdp // Check Status sudo ufw allow from any to any port 3389 proto tcp // open Port in Firewall
Wichtig: Die RDP-Anmeldung funktioniert nur, wenn der Nutzer lokal abgemeldet ist!
Teamviewer Host in Shell installieren
- wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
- sudo apt install ./teamviewer_amd64. deb
- teamviewer info
- teamviewer passwd xxxgeheimxxx
- teamviewer setup
Verzeichnisstruktur
- bin - Binärdateien, Programme
- dev - Devices (Tastatur, Maus, Festplatte)
- etc - Konfigurationsdateien
- home - vergl. "Users" unter Windows
- lib - Codebibliotheken, die sich andere Programme teilen
- media - für Automounter (USB-Sticks..), Verzeichnisse werden unter Gnome auch auf dem Desktop angezeigt
- mnt - als Mountpoint für HDs
- sbin - Systemdateien
- tmp - Temporäre Dateien
- usr - Programmtools und Bibliotheken
- usr/local - für eigenes Zeug
- usr/local/bin - für eigene, systemweite Scripts
- var - vom System verwendete Dateien
E-Mail / SendMail
Ubuntu hat per Default keinen Mailserver / MTA (Mail Transfer Agent) installiert.
• Unix E-Mail Postausgang Warteschlange: /var/spool/mqueue oder /var/mqueue
• Unix E-Mail Posteingang: /var/spool/mail/ (eine Datei je E-Mail)
- Nullmailer (am Beispiel CheckMK) Benachrichtigungen mit CheckMK 1.6 via E-Mail versenden - YouTube
Log: /var/log/mail.log - SSMTP zum Senden per SMTP Einfache sendmail Konfiguration auf UBUNTU | Gloski Consulting
- SendMail Verwendung und allgemeine Konfiguration von Sendmail unter Linux (linux-praxis.de)
Config: /etc/sendmail.cf
Shortcut erstellen (Programm, Webseite o.a.)
Ubuntu / Snap Installed Pakete
- /var/lib/snapd/desktop/applications/ - enthält die Verknüpfungen aller Snap installierten Pakete (*.desktop)
- /usr/share/applications/ - sonstige Verknüpfungen (*.desktop)
- copy & paste auf Desktop
- Rechtsklick: Start erlauben
- fertig
Ubuntu manuell
- "Name.desktop" Datei auf User-Schreibtisch erstellen
(nano Name.desktop) - Bsp: WEB-Link
[Desktop Entry]
Version=1.0
Name=Testlink Google
Type= Application
Exec=firefox https://www.google.com/search?q=uwe-kernchen.de&ie=UTF-8
Icon=text-html
(oder) Icon=/snap/firefox/current/default256.png - Bsp: Programm
[Desktop Entry] Version=x.y Name=ProgramName Comment=This is my comment Exec=/home/alex/Documents/exec.sh Icon=/home/alex/Pictures/icon.png Terminal=false Type=Application Categories=Utility;Application;
- Dateieigenschaften: Ausführen als Programm (chmod 755)
- Rechtsklick auf Verknüpfung: "Start erlauben"
- Wenn alles passt, wird der Link mit dem im Desktop Entry definierten Name angezeigt, nicht mit "Name.desktop".
- Chrome kann mit "Speichere als Shortcut" selber *.desktop Datei unter "Anwendungen" erstellen
- Lösung2 (Meta Refresh):
- erstelle Name.html auf User-Desktop
- Inhalt:
<html> <head> <meta http-equiv="refresh" content="0; url=https://askubuntu.com" /> </head> <body> </body> </html>
RSYNC
Beispiel:
- kopiert Unterverzeichnisse, Rechte, Zeit, Gruppenrechte, Besitzrechte (bei root), Human readable
- mit Logfile
- mit Status am Ende des Logfiles
- exclude = Ausschluß
- delete = löscht fehlende Dateien am Ziel
rsync -rptgoh -stats (--exclude='Temp/') (--delete) --log-file=logfile.log [Quelle/] [Ziel]
Ubuntu Recovery
- beim Booten SHIFT oder ESC drücken führt zum GRUB Boot-Menue, "Erweiterete Optionen" wählen
(Systemübersicht mit HD-Nutzung, Pakete reparieren, Dateisystem prüfen, Root Shell) - Quellen: https://wiki.ubuntuusers.de/Recovery-Modus/
Multiboot Linux-Windows erzeugt falsche Uhrzeit
• Lösung1: Windows Zeit auf "TimeZoneIsUniversal" setzen "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation", DWORD (32-Bit) Name „RealTimeIsUniversal“ - Wert= 1
• Lösung2: Linux Zeit auf "Lokale Zeit" setzen,
im Terminal: sudo timedatectl set-local-rtc 1 --adjust-system-clock
Systemzeit in Hardware-Uhr übertragen: sudo hwclock -w
Server sicher machen, wichtige Befehle: CT 13/2016 S. 124ff.
- Prozessliste: ps ax | grep -v " \[.*\]"
- Verbindungsliste von außen: lsof -i 4 -n
- Liste aller geöffneten Dateien: lsof +L1
- System Syslog: /var/log/syslog
Linux serielles Terminal
- sudo dmesg | grep tty - zeigt alle seriellen Geräte + Namen
Linux entscheidet sich wegen schlechter Performance gegen Spectre-Schutz
Eine Schutzfunktion im Linux-Kernel sollte vor der Hardware-Lücke Spectre-V2 schützen, hat wohl aber mitunter zu starken Einfluss auf die Rechengeschwindigkeit.
In Benchmarks einiger Beobachter, etwa beim Linux-Hardware-Portal Phoronix, ist von 40 bis 50 Prozent Leistungsverlust die Rede, wie immer bei Meltdown- und Spectre-Patches kommt dies allerdings sehr stark auf die Art der Arbeit an, mit der die CPU beschäftigt wird.
Auch hier ist der Schutz also optional und keineswegs durchgehend.
