Ubuntu Server 18.04 LTS als Hyper-V Gastsystem installieren und optimal einrichten

Ubuntu 18.04 + Windows

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.

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
Virtuelle Festplatte mit PowerShell anlegen
Virtuelle Festplatte mit PowerShell anlegen

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.

Name und Pfad der virtuellen Maschine
Name und Pfad der virtuellen Maschine

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).

Generation der VM festlegen
Generation der VM festlegen

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.

Zuweisen von Arbeitsspeicher
Zuweisen von Arbeitsspeicher

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.

Netzwerkkonfiguration der VM
Netzwerkkonfiguration der VM

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.

Virtuelle Festplatte hinzufügen
Virtuelle Festplatte hinzufügen

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.

VM-Einstellungen: Sicherheit
VM-Einstellungen: Sicherheit

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.

VM-Einstellungen: Arbeitsspeicher
VM-Einstellungen: Arbeitsspeicher

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.

VM-Einstellungen: Prozessor
VM-Einstellungen: Prozessor

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“.

VM-Einstellungen: DVD-Laufwerk
VM-Einstellungen: DVD-Laufwerk

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.

VM-Einstellungen: Firmware
VM-Einstellungen: Firmware

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:

Ubuntu Server Setup: Sprache
Ubuntu Server Setup: Sprache

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

Ubuntu Server Setup: Tastatur-Layout
Ubuntu Server Setup: Tastatur-Layout

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

Ubuntu Server Setup: Installationsart
Ubuntu Server Setup: Installationsart

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.

Ubuntu Server Setup: Netzwerk-Konfiguration
Ubuntu Server Setup: Netzwerk-Konfiguration

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.

Ubuntu Server Setup: Netzwerkkonfiguration (statische IP)
Ubuntu Server Setup: Netzwerkkonfiguration (statische IP)
  • 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.

Ubuntu Server Setup: Auswahl des Mirrors für Paketquellen
Ubuntu Server Setup: Auswahl des Mirrors für Paketquellen

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.

Ubuntu Server Setup: Dateisystem
Ubuntu Server Setup: Dateisystem

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.

Ubuntu Server Setup: Dateisystem (Zusammenfassung)
Ubuntu Server Setup: Dateisystem (Zusammenfassung)

Nun wird der erste Benutzer des Systems angelegt.

Ubuntu Server Setup: User anlegen
Ubuntu Server Setup: User anlegen

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.

Ubuntu Server Setup: Installation abgeschlossen
Ubuntu Server Setup: Installation abgeschlossen

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.

VM-Einstellungen: Netzwerkkarte
VM-Einstellungen: Netzwerkkarte

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:

PuTTY: Verbindung zum Ubuntu Server herstellen
PuTTY: Verbindung zum Ubuntu Server herstellen

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

Links

26 Kommentare zu „Ubuntu Server 18.04 LTS als Hyper-V Gastsystem installieren und optimal einrichten“

  1. 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: []

  2. 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!

    1. 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

      1. 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

        1. 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

          1. 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

          2. 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

          3. 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

  3. 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

    1. 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

  4. 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

    1. 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

      1. 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

  5. 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!

    1. 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

  6. 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.

    1. 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

    1. 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

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert