Mit der Veröffentlichung von Ubuntu 18.04 („Bionic Beaver“) ist eine neue LTS-Version der beliebten Linux-Distribution erschienen. Im folgenden Artikel wird die Installation von Ubuntu Server 18.04.1 als Gastsystem in einer Hyper-V-Umgebung beschrieben. Neben der Konfiguration der virtuellen Maschine und der Installation von Ubuntu Server geht es ebenfalls die Optimierung des Gastsystems, so dass es optimal in einer virtualisierten Umgebung laufen kann. Als Grundlage dient der schon vor einiger Zeit entstandene Artikel Ubuntu Server als Hyper-V Gastsystem installieren und optimal einrichten, in dem die Einrichtung von Ubuntu Server 16.04 gezeigt wurde. Da sich bei Ubuntu Server 18.04 einiges an der Installations-Routine geändert hat, ist es an der Zeit, dem Thema einen neuen Artikel zu gönnen.
Spezielle Linux-Kenntnisse sind dabei nicht erforderlich, wenn auch nicht hinderlich. Wer seinerzeit mit dem vorherigen Artikel eine Ubuntu-VM aufgesetzt hat, wird sich sicherlich sofort zurechtfinden.
Update-Historie (letztes Update: 10.08.2018)- 09.05.2018:
- IP-Konfiguration: Hinweise für die nachträgliche Änderung der IP-Adresse hinzugefügt.
- 01.06.2018:
- Hinweis zum Einstellen der richtigen Zeitzone hinzugefügt.
- 10.08.2018:
- Angepasst an Ubuntu Server 18.04.1 (Setup-Prozess).
- Manuelle Anpassung der Paketquellen nach der Installation.
Inhalt
- 1 Ubuntu: Virtualisierung mittels Hyper-V
- 2 Ubuntu Server herunterladen
- 3 Virtuelle Maschine erstellen
- 4 Installation Ubuntu Server 18.04
- 5 Optimierung der VM-Einstellungen
- 6 Einrichtung Ubuntu Server 18.04
- 7 Zugriff auf die virtuelle Maschine mit SSH/PuTTY
- 8 Erweiterung: IP-Konfiguration nachträglich ändern
- 9 Fazit
- 10 Weiterführende Artikel
- 11 Links
Ubuntu: Virtualisierung mittels Hyper-V
Dieser Artikel ist fokussiert auf Ubuntu Server als Gast-Betriebssystem und Hyper-V als Virtualisierungs-Lösung. Warum nun genau diese Kombination?
Hyper-V
Wenn es um Virtualisierungs-Lösungen geht, kann man zwischen zwei Arten der Virtualisierung unterscheiden: Bei einem sog. Typ-1-Hypervisor läuft das Gast-Betriebssystem direkt auf der Hardware des Hosts. Dagegen setzt ein Typ-2-Hypervisor auf dem Host-Betriebssystem („eine Schicht weiter oben“) auf. Durch den Wegfall dieser Zwischenschicht läuft ein Typ-1-Hypervisor immer effizienter als ein Typ-2-Hypervisor.
Im Gegensatz zum populären VirtualBox ist Hyper-V dabei ein reiner Typ-1-Hypervisor. Daher fiel die Wahl bei diesem Artikel auf die Virtualisierungs-Lösung aus dem Hause Microsoft.
Allerdings kann dieses Tutorial auch mit jeder anderen Virtualisierungs-Software angegangen werden. Die Schritte zur Konfiguration des Gastsystems sind überall identisch.
Ubuntu Server
Microsoft öffnet sich ja zunehmend der Linux-Welt, was beispielsweise das Windows Subsystem for Linux deutlich macht. Auch die Unterstützung von Ubuntu auf Hyper-V ist mittlerweile weit vorangeschritten, wie dieser TechNet-Artikel zeigt. Prinzipiell kann hier auch eine andere Linux-Distribution zum Einsatz kommen, allerdings unterscheiden sich dann u.U. die Schritte zur Konfiguration des Gast-Betriebssystems.
Ubuntu Server herunterladen
Zunächst benötigt man ein ISO-Image des Gastsystems, welches man auf der Ubuntu-Homepage herunterladen kann. Die aktuellste Version ist dabei momentan 18.04 LTS („Bionic Beaver“). Da es sich um eine LTS-Version handelt (Long Term Support), wird diese Version ganze vier Jahre lang unterstützt.
Virtuelle Maschine erstellen
Zunächst muss die Hyper-V-Maschine erstellt werden. Als Hyper-V-Host dient dabei Windows Server 2016. Die gezeigten Schritte gelten aber auch für ältere Versionen von Windows Server bzw. Windows 10.
Virtuelle Festplatte erzeugen
Bevor die VM im Hyper-V-Manager angelegt wird, sollte die virtuelle Festplatte (vhdx) manuell mittels PowerShell erzeugt werden. Dieser Microsoft-Artikel erklärt dabei die Hintergründe: Für Linux-VMs sollte eine Block Size von 1 MB verwendet werden, da ansonsten mehr Speicherplatz auf dem Host-Betriebssystem belegt wird. Da beim Hyper-V-Manager keine benutzerdefinierte Block Size bei der Erstellung von virtuellen Festplatten angegeben werden kann, ist hier der kleine Umweg über die PowerShell notwendig.
Dazu die PowerShell mit Admin-Rechten starten. Folgender Befehl legt dann die virtuelle Festplatte mit einer Größe von 20 GB an:
New-VHD -Path "D:\Hyper-V\UbuntuServer1804\Virtual Hard Disks\UbuntuServer1804.vhdx" -SizeBytes 20GB -Dynamic -BlockSizeBytes 1MB

Laut den Systemanforderungen von Ubuntu Server würde zwar schon eine Festplatte mit 1,5 GB ausreichen, dennoch sollte man die Festplatte gleich etwas größer anlegen, um nachher mehr Spielraum zu haben. Durch das Erzeugen als dynamische Festplatte werden auch keine 20 GB belegt. Es wird nur so viel Speicherplatz benötigt wie die auf der Festplatte gespeicherten Daten einnehmen.
Anlegen der virtuellen Maschine
Nachdem die Festplatte schon vorbereitet wurde, geht es nun im Hyper-V-Manager an das Erzeugen der virtuellen Maschine. Dazu den Assistenten über Aktion > Neu > Virtueller Computer… aufrufen.
Name und Pfad angeben: Nach den Vorbemerkungen zum Assistenten wird der Name der virtuellen Maschine angegeben. Ebenfalls kann der Speicherort der VM konfiguriert werden. In diesem Fall gebe ich das Verzeichnis an, in dem alle Hyper-V-Maschinen gespeichert werden. Auch wenn es nicht so aussieht, sollte man den Pfad hier explizit angeben (die Option Virtuellen Computer an einem anderen Speicherort speichern muss dazu aktiviert werden), da ansonsten keine Verzeichnisstruktur erstellt wird, in der sämtliche Dateien der virtuellen Maschine unter einem Ordner gespeichert werden.

Generation angeben: Die Wahl der „Generation“ hängt vom zu installierenden Gast-Betriebssystem ab. Generation 2 ist dabei die modernere Variante und bietet mehr Virtualisierungs-Features. Da Ubuntu ab Version 14.04 Generation 2 unterstützt, wählen wir hier die entsprechende Option (siehe Microsoft-Artikel).

Speicher zuweisen: Als nächstes wird festgelegt, wie viel Speicher der virtuellen Maschine zur Verfügung stehen soll. 1024 MB (= 1 GB) sollte dabei vollkommen ausreichen. Hier sollte auch die Option Dynamischen Arbeitsspeicher für diesen virtuellen Computer verwenden aktiviert werden, so dass die VM nur so viel Arbeitsspeicher in Anspruch nimmt, die eben gerade benötigt wird.

Netzwerk konfigurieren: Da die VM nachher auch Netzwerkzugang benötigt, wird hier ein Netzwerkadapter angegeben. Dabei handelt es sich um einen sog. virtuellen Switch. Falls hier keine Option gewählt werden kann, muss ein solcher vermutlich erst noch angelegt werden. In diesem Artikel wird dazu die genaue Vorgehensweise erklärt.

Virtuelle Festplatte verbinden: Hier wird nun die virtuelle Festplatte der VM angegeben. Da die HDD bereits zuvor mittels PowerShell erzeugt wurde, wählen wir hier die Option Vorhandene virtuelle Festplatte verwenden und geben die entsprechende vhdx-Datei an.

Der letzte Schritt des Assistenten fasst nochmals alle gewählten Optionen zusammen. Passt alles, wird mit einem Klick auf Fertig stellen der Assistent abgeschlossen.
Einstellungen der virtuellen Maschine anpassen
Direkt nach der Erzeugung und vor dem ersten Start der virtuellen Maschine werden direkt noch einige Einstellungen vorgenommen/optimiert (Rechtsklick auf VM > Einstellungen…)
Sicherheit: Hier wird die Option Sicheren Start aktivieren eingeschaltet. Als Vorlage muss hier Microsoft UEFI-Zertifizierungsstelle gewählt werden, da die virtuelle Maschine später sonst nicht gestartet werden kann.

Arbeitsspeicher: Die Einstellungen für den (dynamischen) Arbeitsspeicher werden hier nochmals genauer spezifiziert. Damit die VM nicht beliebig viel Speicher beanspruchen kann, wird hier einfach das Maximum von 2048 MB (= 2 GB) angegeben.

Prozessor: Damit die VM auch alle zur Verfügung stehenden Prozessor-Kerne nutzen kann, wird die Anzahl der virtuellen Prozessoren soweit erhöht, dass unter Anteil der Gesamtsystemressourcen in % bei 100 steht. Falls die virtuelle Maschine nicht „so viel Dampf“ braucht, kann man hier aber auch einen kleineren Wert angeben. Dennoch ist es empfehlenswert, der VM mindestens zwei Prozessoren zuzuweisen.

SCSI-Controller: Da die erzeugte virtuelle Maschine standardmäßig kein DVD-Laufwerk besitzt, wird hier ein solches hinzugefügt. Dazu einfach den Eintrag DVD-Laufwerk markieren und auf Hinzufügen klicken. Daraufhin kann gleich die zuvor heruntergeladene ISO-Datei angegeben werden, so dass sich diese beim ersten Start der VM „im Laufwerk befindet“.

Firmware: Anschließend kommt noch ein kleiner Abstecher in den Menüpunkt Firmware. Hier wird einfach das soeben hinzugefügte DVD-Laufwerk als erste Startoption festgelegt.

Alle anderen Optionen in den Einstellungen für die virtuelle Maschine können auf Standard-Werten belassen oder nach eigenem Ermessen eingestellt werden. Ebenfalls können sämtliche Einstellungen auch noch nach der Installation des Gast-Betriebssystems geändert werden (wenn man beispielsweise doch einmal mehr Arbeitsspeicher benötigen sollte).
Installation Ubuntu Server 18.04
Die Einrichtung der VM auf dem Host-System ist nun abgeschlossen. Bevor wir die virtuelle Maschine das erste Mal starten, sollte noch ein Prüfpunkt angelegt werden (Rechtsklick auf die VM > Prüfpunkt). Falls bei der Installation etwas schief gehen sollte, kann man die virtuelle Maschine wieder den Ursprungszustand versetzen (über Rechtsklick auf den Prüfpunkt > Anwenden).
Nach einem Rechtsklick auf die VM und Verbinden…, kann die virtuelle Maschine mit Aktion > Starten (oder STRG+S) zum ersten Mal gestartet werden.
Zunächst wird die Sprache des Betriebssystems gewählt – in diesem Fall Deutsch:

Das Tastatur-Layout wird leider nicht automatisch angepasst, so dass im nächsten Schritt das passende Tastatur-Layout gewählt werden muss:

Anschließend wird die Installations-Methode gewählt. Hier ist die erste Option (Install Ubuntu) die passende:

Der nächste Schritt ist bei Ubuntu 18.04 ganz neu: Hier wird die Netzwerk-Konfiguration im Rahmen des Setups vorgenommen (bei älteren Versionen des Betriebssystems musste das immer erst nach dem Setup manuell vorgenommen werden). Standardmäßig wird hier DHCP verwendet, so dass die VM eine dynamische IP-Adresse vom Router zugewiesen bekommt.
Für einen Server ist es aber besser, wenn dieser eine statische IP-Adresse hat. Dazu wird das entsprechende Interface (meist eth0) gewählt. Mit der Enter-Taste kann wählt man nun den Eintrag Edit IPv4 und ruft so den Dialog zum Bearbeiten der Konfiguration auf.

Im folgenden Dialog ist die Option Automatic (DHCP) eingestellt. Hier wählen wir nun Manual. Die anschließende Konfiguration für die statische IP-Adresse ist von eurer Netzwerk-Konfiguration abhängig.

- Subnet: Im Heim-Bereich kommt meist ein 24er-Subnet zum Einsatz: Wenn euer Router also beispielsweise die IP 192.168.178.1 hat, muss hier vermutlich 192.168.178.0/24 angegeben werden (entspricht dem Subnet 255.255.255.0).
- Address: Dies ist die statische IP-Adresse des Gast-Betriebssystems. In diesem Beispiel soll die virtuelle Maschine die statische IP 192.168.178.60 bekommen.
- Gateway: Dies ist einfach die IP-Adresse eures Routers, also z.B. 192.168.178.1.
- Name servers: Dies ist die IP des DNS-Nameservers in eurem Netzwerk. In den meisten Fällen wird dies auch die IP des Routers sein (also beispielsweise 192.168.178.1).
Nach der Bestätigung mit Save werden die Einstellungen für IPv4 übernommen. Hier sollten nun noch die Einstellung für IPv6 überprüft werden: Dies sollte auf Disabled stehen. Damit nutzt die virtuelle Maschine nur IPv4 und kein IPv6.
Wenn die Netzwerk-Konfiguration abgeschlossen ist, wird mit Done das Setup fortgeführt.
Wie die IP-Konfiguration nachträglich noch geändert werden kann, wird am Ende des Artikels auch nochmals kurz erklärt. Die hier vorgenommenen Einstellungen sind also nicht „in Stein gemeißelt“.
Als nächstes erfolgt die Abfrage eines Proxy-Servers. Falls kein Proxy zum Einsatz kommt, den Schritt einfach mit Done überspringen.
Nun wird ein Mirror für die Paketquellen angegeben. Hier kann man die Standard-Adresse einfach übernehmen (http://archive.ubuntu.com/ubuntu) übernehmen.

Es folgt die Einrichtung des Dateisystems. Hier wird einfach die Option Use An Entire Disk gewählt, wenn man die komplette Festplatte für Ubuntu verwenden möchte.

Falls man eine Unterteilung in mehrere Partitionen vornehmen möchte, ist hier die Option Manual zu wählen.
Nun wird die einzurichtende Festplatte ausgewählt. Da die virtuelle Maschine nur eine Festplatte zugewiesen bekommen hat, sollte sich die Auswahl auf eine einzelne Festplatte beschränken.
Anschließend erfolgt auch hier eine Zusammenfassung der Dateisystem-Einrichtung. Wenn alles passt, wird das Setup mit Done und der Bestätigung, dass die komplette Festplatte formatiert wird, fortgesetzt.

Nun wird der erste Benutzer des Systems angelegt.

Nun können noch Snap Apps ausgewählt werden, die im Rahmen des Setups gleich mit installiert werden sollen. Snap soll hier nicht Thema des Artikels sein, daher wird dieser Schritt mit Done übersprungen.
Am Ende wird das System an sich installiert. Nach einer kurzen Wartezeit sollte oben die Meldung Finished install! kommen und man kann das System mit der Option Reboot now neu starten.

Beim Reboot erscheint dann irgendwann die Meldung Please remove installation medium, then press ENTER. Es kann nun vorkommen, dass das ISO-Image nicht mehr gemountet ist (Medien > DVD-Laufwerk > Auswerfen), aber bei der Bestätigung mit Enter nichts passiert. In diesem Fall einfach die VM ausschalten (Aktion > Ausschalten) und neu starten.
Optimierung der VM-Einstellungen
Ubuntu Server ist anschließend fertig installiert. Für den optimalen Betrieb sollte nun noch eine Änderung an den VM-Einstellungen vorgenommen werden (Rechtsklick auf die virtuelle Maschine > Einstellungen…): Unter Netzwerkkarte > Erweiterte Features sollte nun eine statische MAC-Adresse vergeben werden. Dazu kann einfach die Option Statisch gewählt werden, die MAC-Adresse, die nun vorgeschlagen wird, muss nicht mehr verändert werden.

Diese Einstellung ist nicht zwingend notwendig, beugt allerdings bestimmten Netzwerk-Problemen mit der virtuellen Maschine vor.
Nach diesen Schritten sollte erst einmal wieder ein Prüfpunkt der VM angelegt werden, der das installierte Grundsystem beinhaltet.
Einrichtung Ubuntu Server 18.04
Nun folgt die Konfiguration des Gastsystems, damit dieses optimal in der virtualisierten Umgebung läuft. Dazu meldet man sich einfach mit dem soeben erstellen Benutzer an und verschafft sich mittels sudo Root-Rechte. Das Konzept hinter sudo wurde an dieser Stelle schon einmal genauer erklärt.
Systemupdates
Als erstes bringen wir das System auf den neusten Stand. Dazu werden erst einmal die Paketquellen aktualisiert:
apt-get update
Anschließend werden evtl. vorhandene Updates abgerufen:
apt-get upgrade
Beide Befehle kann man auch in einem Rutsch durchführen:
apt-get update && apt-get upgrade
Um auch evtl. vorhandene System-Upgrades zu erhalten, wird noch folgender Befehl ausgeführt:
apt-get dist-upgrade
Falls hier Upgrades gefunden und installiert werden, können nicht mehr benötigte Pakete automatisch entfernt werden:
apt-get autoremove
Nach den Updates sollte die virtuelle Maschine neu gestartet werden:
reboot now
Optimierung für virtuelle Umgebung
Um das System noch bessern an die virtualisierte Umgebung anzupassen, werden nun noch die dafür vorgesehenen Kernel-Module installiert:
apt-get update apt-get install --install-recommends linux-virtual apt-get install linux-tools-virtual linux-cloud-tools-virtual reboot now
Optimierung des I/O-Schedulers
Ein modernes Betriebssystem ist darauf ausgelegt, möglichst viele I/O-Operationen parallel auszuführen. Der Linux-Kernel kennt dazu verschiedene Scheduling-Modi. Hier soll nicht weiter auf die Details eingegangen werden, allerdings sollte der zu Grunde liegende Hypervisor diese I/O-Operationen optimieren und nicht das Gast-Betriebssystem selbst.
Um diese Einstellung einzurichten, muss der Bootloader optimiert werden. nano ist in diesem Fall ein einfacher Text-Editor unter Linux:
nano /etc/default/grub
Hier suchen wir nun nach der folgenden Zeile
GRUB_CMDLINE_LINUX_DEFAULT=""
und ändern diese zu:
GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop"
Mit dieser Einstellung weisen wir die virtuelle Maschine an, sämtliche I/O-Operationen an den darunter liegenden Hyper-V-Hypervisor zu übergeben, der dann für einen optimierten Ablauf sorgt. Dadurch sollte sich die Performance der virtuellen Maschine geringfügig verbessern.
Die Datei wird in nano durch die Tastenkombination STRG+O gespeichert. Anschließend kann der Texteditor durch STRG+X verlassen werden.
Damit die Änderungen wirken, muss der Bootloader neu geladen und das System neu gestartet werden:
update-grub reboot now
Nach diesem Reboot ist unser Ubuntu Server nun für den Betrieb in einer virtualisierten Umgebung optimiert.
Am Ende solte man noch die Systemzeit überprüfen:
date
Falls die angezeigte Zeit nicht stimmen sollte, muss man noch die passende Zeitzone einstellen:
timedatectl set-timezone Europe/Berlin
Anschließend sollte mit dem Befehl date Zeit zurückgeliefert werden.
Dieser Schritt ist wichtig, da bei einer falsch eingestellten Systemzeit sämtliche Zeitangaben (z.B. in Log-Files) falsch sein könnten.
Konfigurieren der Paketquellen
Die Pakete sind bei Ubuntu schon immer in mehrere Repositories unterteilt:
- Main: Von Canonical gepflegte Open Source Software.
- Universe: Von der Community gepflegte Open Source Software.
- Resticted: Proprietäre Treiber für Geräte.
- Multiverse: Software, die lizenzrechtlichen Einschränkungen unterliegt.
Hintergrundinformationen zu den einzelnen Paketquellen findet man in der Ubuntu-Dokumentation.
Seit Ubuntu Server 18.04.1 sind die Paketquellen nach der Installation des Betriebssystems so konfiguriert, dass nur noch das Main-Repository eingerichtet ist. Auf diese Weise soll sichergestellt werden, dass möglichst nur qualitativ hochwertige Software auf dem System installiert wird.
Das bringt jedoch einen Nachteil mit sich: Viele Pakete, die üblicherweise auf einem Server installiert werden, sind nicht im Main-Repository enthalten. In welchem Repository ein gesuchtes Paket enthalten ist, kann man einfach über die Ubuntu-Paketsuche ermitteln. Als Beispiel sei hier das Paket php7.2-fpm genannt, welches auf dem meisten Webservern zum Einsatz kommen dürfte. Wenn man dieses nun per apt-get install php7.2-fpm installieren will, erhält man eine Meldung, dass dieses Paket nicht gefunden werden kann (da das Paket nur im Universe-Repository enthalten ist).
Wenn solche Pakete benötigt werden, kann man diese einfach in die Liste der Repositories mit aufnehmen. Mit folgendem Befehl wird z.B. das Universe-Repository mit eingebunden:
sudo add-apt-repository universe
Kontrollieren (und erweitern) kann man die eingebundenen Repositories auch anhand der Datei /etc/apt/sources.list. Hier sind beispielsweise die Repositories Main, Universe, Multiverse und Restricted eingebunden (die Standard-Einstellung unter Ubuntu 18.04):
deb http://archive.ubuntu.com/ubuntu bionic main universe multiverse restricted deb http://archive.ubuntu.com/ubuntu bionic-security main universe multiverse restricted deb http://archive.ubuntu.com/ubuntu bionic-updates main universe multiverse restricted
Hier gilt es immer abzuwägen, in wie weit man das System für weitere Software öffnen will, bei der Canonical nicht beteiligt ist.
Zugriff auf die virtuelle Maschine mit SSH/PuTTY
Bisher haben wir uns immer über die Hyper-V-Konsole auf die virtuelle Maschine verbunden. Im Normalfall wird man sich diesen Umweg sparen und eine Verbindung einfach über SSH aufbauen wollen.
Das bekannteste Programm dazu ist sicherlich PuTTY. Hier wird einfach die IP-Adresse unserer virtuellen Maschine (in diesem Beispiel 192.168.178.60) und der Port 22 angegeben:

Nach einem Klick auf Open erscheint beim ersten Verbindungsaufbau die Hinweismeldung, dass der Ziel-Rechner unbekannt ist. Durch die Bestätigung mit Ja wird diese Meldung zukünftig für diesen Rechner nicht mehr erscheinen.
Nachdem die Verbindung nun aufgebaut wurde, befindet man sich wieder ganz normal im Terminal des Ubuntu Servers und kann wie gewohnt arbeiten.
Erweiterung: IP-Konfiguration nachträglich ändern
Die Einstellungen bzgl. der IP-Adresse des Servers werden bei Ubuntu 18.04 bereits im Rahmen des Setups festgelegt. Normalerweise wird man die Einstellungen gleich im Setup durchführen und muss sich daraufhin nicht mehr weiter darum kümmern. Trotzdem soll noch kurz die Vorgehensweise zur IP-Konfiguration beleuchtet werden, falls man zu einem späteren Zeitpunkt die IP-Einstellungen nochmal ändern möchte.
Seit Ubuntu 17.10 werden die Netzwerkeinstellungen nicht mehr wie früher unter /etc/network/interfaces konfiguriert, sondern über Netplan. Netplan ist dabei als Konfigurations-Backend für die Netzwerkeinstellungen zu verstehen. Die gewünschten Einstellungen werden nun deklarativ im YAML-Dateiformat hinterlegt. Beim Aktivieren der Einstellungen übergibt Netplan die Kontrolle an einen sog. Renderer: Bei der Desktop-Version von Ubuntu ist dies der NetworkManager, bei der Server-Variante kommt systemd-networkd (Netzwerkdaemon) zum Einsatz.
Die eigentliche Netzwerk-Konfiguration findet man unter /etc/netplan. Hier befindet sich im Normalfall nur eine YAML-Datei (hier z.B. 50-cloud-init.yaml – die Datei kann ggf. aber auch anders heißen). Diese kann mit einem beliebigen Editor bearbeitet werden:
nano /etc/netplan/50-cloud-init.yaml
Durch die Konfiguration im Rahmen des Setups sieht die Datei dann meist so aus und spiegelt die vorgenommenen Einstellungen wider:
network: ethernets: eth0: addresses: - 192.168.178.60/24 gateway4: 192.168.178.1 nameservers: addresses: - 192.168.178.1 search: [] optional: true version: 2
Hier sind folgende Informationen hinterlegt:
- eth0: Name der Netzwerk-Schnittstelle.
- addresses: Statische IP-Adressen (IPv4 und ggf. IPv6).
- gateway4: IPv4-Adresse des Standard-Gateways (IP des Routers).
- nameservers: Liste der IP-Adressen der zu verwendenden Nameserver (DNS). search gibt evtl. vorhandene Such-Domains an.
- optional: Markiert das Netzwerk-Interface als optional für den Bootvorgang (nur bei networkd als Renderer). Wenn auf false gesetzt, wartet networkd beim Booten, bis das Gerät verfügbar ist.
- version: YAML-Version (immer 2).
- renderer: Gibt den zu verwendenden Renderer an. Wenn wie hier nicht angegeben, wird standardmäßig networkd verwendet.
Wenn also nun die IP von 192.168.178.60 auf 192.168.178.100 geändert werden soll, muss hier also nur die Zeile unter addresses modifiziert werden:
- 192.168.178.100/24
Um die IP-Konfiguration über DHCP vorzunehmen, sieht der komplette Dateiinhalt folgendermaßen aus (für einen Server nicht empfehlenswert):
network: ethernets: eth0: dhcp4: yes dhcp6: yes optional: true version: 2
Wenn an der Konfiguration etwas geändert wurde, dann müssen die Einstellungen noch übernommen werden. Dazu wird die YAML-Datei zunächst einmal gespeichert und anschließend wird die Konfiguration mit folgendem Befehl angewendet:
netplan apply
Nicht wundern: Die Änderungen sind nach diesem Befehl sofort „live“, so dass eine SSH-Verbindung danach erst einmal abbricht. Einfach nochmals mit der neuen IP verbinden.
Fazit
Nach diesen Schritten haben wir einen Ubuntu Server 18.04 fertig eingerichtet und für die virtualisierte Umgebung optimiert. Am besten erstellt man nun erst einmal noch einen Prüfpunkt der virtuellen Maschine mit der abgeschlossenen Konfiguration (die zuvor angelegten Prüfpunkte können nun gelöscht werden).
Nun kann das System für weitere Aufgaben genutzt werden: Beispielsweise kann mit Nextcloud eine eigene Cloud eingerichtet werden (siehe Nextcloud auf Ubuntu Server mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban).
Weiterführende Artikel
- Ubuntu Server als Hyper-V Gastsystem installieren und optimal einrichten
- Nextcloud auf Ubuntu Server 18.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban
Links
- Hypervisor (Wikipedia)
- Windows Subsystem for Linux Documentation (Microsoft, englisch)
- Supported Ubuntu virtual machines on Hyper-V (TechNet, englisch)
- Download Ubuntu Server (ubuntu.com, englisch)
- Support (Dienstleistung) (Wikipedia)
- Virtual-Hard-Disk-Format (Wikipedia)
- PowerShell (Wikipedia)
- Best Practices for running Linux on Hyper-V (Microsoft, englisch)
- Installation/SystemRequirements (Ubuntu documentation, englisch)
- Should I create a generation 1 or 2 virtual machine in Hyper-V? (Microsoft, englisch)
- Virtual Switch: Netzwerke in Hyper-V konfigurieren (windowspro.de)
- Dynamic Host Configuration Protocol (Wikipedia)
- Subnetz (Wikipedia)
- Secure Shell (Wikipedia)
- Offizielle PuTTY-Homepage (englisch)
- Offizielle Netplan-Homepage (englisch)
- YAML (Wikipedia)
- NetworkManager (ubuntuusers Wiki)
- systemd-networkd (ubuntuusers Wiki)
Hallo Jan,
wahnsinns Anleitung, danke.
Werde ich gleich mal ausprobieren.
Gruß Hans
Servus,
mal wieder eine super Anleitung, freue mich auf die neue für Nextcloud!
Gruß
Tobi
Vieleicht nutzt es was. Untenstehend sieht in Ubuntu 18.04 bei mir die *yaml wie folgt aus. Verdammt wichtig ist die Reihenfolge der keys (andernfalls Meldung ‚falsche sequence oder key not found‘), In Ubuntu 18.04 im vi-Editor setzt er auch die tabs gleich korrekt, wenn man von Zeile zu Zeile nur mit der Enter-Taste vorrückt.
Gruß Frank
network:
version: 2
renderer: networkd
ethernets:
ens33:
addresses:
– 10.0.0.212/24
dhcp4: no
gateway4: 10.0.0.254
nameservers:
addresses: [10.0.0.254]
search: []
Tolle Anleitung…ebenso wie die für Nextcloud! Weiter so!
Hallo,
eine klasse Anleitung. Aber ein Problem habe ich noch:
Die VM ist wie beschrieben mit dynamischer vhdx und 120GB maximaler Größe angelegt worden.
Nun wächst die vhdx Datei aber nicht mehr mit. Bei 4,02GB ist Schluss. Dateisystem auf dem Hyper-V Host ist NTFS.
Binde ich die vhdx als virtuelle Partition in der Datenträgerverwaltung ein, ist sie korrekt mit 120GB angegeben.
Wie bekomme ich es nun hin, dass die Partition dynamisch weiter wächst und Ubuntu das mitbekommt?
Danke dir!
Achja, falls es noch wichtig ist:
administrator@nextcloud:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 928M 0 928M 0% /dev
tmpfs 192M 792K 191M 1% /run
/dev/mapper/ubuntu–vg-ubuntu–lv 3,9G 3,4G 268M 93% /
tmpfs 958M 0 958M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 958M 0 958M 0% /sys/fs/cgroup
/dev/loop0 87M 87M 0 100% /snap/core/4917
/dev/loop1 88M 88M 0 100% /snap/core/5662
/dev/sda2 976M 145M 765M 16% /boot
/dev/sda1 511M 6,1M 505M 2% /boot/efi
tmpfs 192M 0 192M 0% /run/user/1000
Hi Johannes,
hast du LVM bei der Erst-Installation des Betriebssystems genutzt?
Was passiert nach den 4,02 GB? Wird die Platte dann als „voll“ angezeigt?
Gruß,
Jan
Hallo,
ja, denke, dass ich LVM genutzt habe. Wie kann ich das prüfen?
Ja, die Platte wird als voll angezeigt, siehe oben (/ liegt bei 93%, nachdem ich bisschen was gelöscht habe)…
Gruß Johannes
Hi Johannes,
das hier spricht auf jeden Fall für LVM: /dev/mapper/ubuntu–vg-ubuntu–lv
Was passiert, wenn du du Platte mal „voll“ laufen lässt? Ist dann irgendwann Schluss, oder können weiterhin Dateien geschrieben werden?
Gruß,
Jan
hallo,
genau, dann ist Schluss. Dann geht nichtmal mehr die Befehlsverfollständigung auf der Konsole, da auch hierfür noch Speicherplatz benötigt würde.
Hostsystem ist übrigens Windows Server 2012 R2.
Die virtuelle Festplatte wurde wie beschrieben über Powershell angelegt.
Gruß Johannes
Hi Johannes,
leider kann ich das Problem nicht nachvollziehen, bei mir werden die virtuellen HDDs immer ordnungsgemäß vergrößert.
Steht hier vielleicht irgendwas im Linux Syslog?
Wenn nicht, würde ich auch mal in die Windows-Eregnisanzeige schauen, evtl. werden hier ja irgendwelche Fehler protokolliert.
Gruß,
Jan
herzlichen Dank für die super Anleitung …
Hallo vielen Dank für die klasse Anleitung wieder mal.
Leider habe ich nachwievor das Problem wenn ich den Befahl: nano/etc/default/grub eingebe , dass Ubuntu mir sagt : “ bash:nano/etc/default/grub : No such file or directory “ Das selbe Problem hatte ich bereits bei jedem versuch einen V-Server zu installieren. Die Installation klappt aber ich komme nicht dazu Dateien zu bearbeiten. Angemeldet bin ich als root@ubuntu1804 über den Befehl: sudo -s
Aber wie bisher auch kommt die Meldung dass das verzeichnuis nicht da wäre. An was kann dies denn liegen. Nano ist istalliert da ich auch versucht habe mit apt-get install nano auszuführen und die meldung kam : keine Dateien hinzugefügt.
Ich danke vielmals. Bin schon am verzweifeln ohne Ende. So schwer kann das doch wirklich nicht sein lach
Hallo Jürgen,
das ist in der Tat seltsam. Was mir hier nur auffällt: es fehlt ein Leerzeichen zwischen „nano“ und der Datei, die damit bearbeitet werden soll.
Geht der Editor bei dir auf, wenn du einfach nur nano ohne weitere Parameter aufrufst?
Gruß,
Jan
Geniale Anleitung! Vielen Dank das du dir die Mühe machst und dass so frei zur Verfügung stellst.
Super Anleitung, echt!
Hallo Jan,
ich hätte hier mal eine Frage gelten die von Dir vorgeschlagenen Installationspakete auch für einen VM-Server unter Vmware oder nur für Hyper-V-Maschinen.
1.) apt-get install –install-recommends linux-virtual
2.) apt-get install linux-tools-virtual linux-cloud-tools-virtual
Da ich einen VMware ESXi Server einsetze würde mich natürlich intressieren was ich hier eventuell konfigurien sollte um gute Performance zu erhalten.
Vielen Dank
Thomas
Hallo Thomas,
die Optimierungen gelten hier für alle Installationen, die virtualisiert laufen. Dabei ist es unerheblich, ob Hyper-V, ESXi, QEMU oder auch Virtual Box.
Daher könnte ich diesen Artikel auch mal verallgemeinern und eine generelle Anleitung für virtualisierte Linux-Systeme verfassen.
Gruß,
Jan
Hallo Jan,
Danke für die schnelle Antwort, habe die 2 Pakte nun eingebunden und auch die
/etc/default/grub Datei angepasst.
Nur habe ich ab diesem Zeitpunk eine Lange Rebbot Time hast Du eine Idee warum das jetzt passiert.
Message:
A Start Job is running for sys-devices-virtual..misc-vmbus\21hvp.device (1min 30 / 1 min 30s
Hallo Thomas,
könnte das war hiermit zu tun haben?
Gruß,
Jan
Ich komme am Schritt
„New-VHD -Path „D:\Hyper-V\UbuntuServer1804\Virtual Hard Disks\UbuntuServer1804.vhdx“ -SizeBytes 20GB -Dynamic -BlockSizeBytes 1MB“
in die Powershell einfügen. Bekomme Fehler:
New-VHD : Die Benennung „New-VHD“ wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines
ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern
enthalten), und wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ New-VHD -Path „D:\Hyper-V\UbuntuServer1804\Virtual Hard Disks\UbuntuS …
+ ~~~~~~~
+ CategoryInfo : ObjectNotFound: (New-VHD:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Und nichts passiert!
Hi Hannes,
sind denn die Hyper-V Komponenten für Windows installiert? Ich kann mir nämlich vorstellen, dass dieser Powershell-Befehl erst mit diesen Komponenten verfügbar ist.
Gruß,
Jan
Super Anleitung, fast Perfekt, aber wie immer gibt es zur Perfektion immer noch Anmerkungen.
Da dies ja auf einem Server installiert wird, sollte vllt auch noch erklärt werden, wie die Virtuelle Maschine nach Systemstart automatisch im Hintergrund gestartet wird.
Hi Dirk,
ist das nicht standardmäßig der Fall?
Ich nutze kein Windows mehr, daher kann ich das leider nicht so ohne weiteres nachvollziehen.
Gruß,
Jan
Jan, das ist einer der besten deutschsprachigen Blogs / Techseite. Bitte mache die Schrift größer :-*
Hi,
(leider) verwende ich WordPress, so dass das mit der Schrift, etc. nicht so einfach ist. Aber mit der Browser-Zoom-Funktion kann man sich doch alles ein wenig größer machen, oder?
Gruß,
Jan