Passen Sie eine Ubuntu 20.04 VirtualBox-VM an

Oct 17 2020

Ich muss angepasste VirtualBox-VMs (im Lieferumfang von .ova enthalten) für den Unterricht erstellen: Einer ist ein Ubuntu-Server mit Terminalschnittstelle und LAMP, der andere verfügt über ein minimales Desktop-Ubuntu mit nur ausgewählten verfügbaren Anwendungen. Sie müssen leichtgewichtig sein, da die Schüler beide für die Vernetzung verwenden und die Qualität ihrer BYOD-Computer unterschiedlich ist.

In der Vergangenheit (18.04LTS) habe ich eine minimale ISO-Datei heruntergeladen und schrittweise fortgefahren. Dies ist nun nicht mehr möglich, da nur die vollständige .iso verfügbar ist (zhttps://cdimage.ubuntu.com/lubuntu/releases/20.04.1/release/lubuntu-20.04.1-desktop-amd64.iso) für den 20.04. Ich möchte nicht dekrementell vorgehen, da das Ergebnis nicht optimal, unsicher und zeitaufwändig ist.

Ich habe im Internet gestöbert, aber (ziemlich überraschend) ohne eine Lösung dafür zu finden. Ich vermute, ich habe etwas Relevantes verpasst, also frage ich hier, bevor ich Zeit verbringe, um das kochende Wasser zu entdecken.

Danke für deine Hilfe!

Antworten

MastroGeppetto Oct 19 2020 at 16:51

Eine Lösung mit Cloud-Bildern

Mein Problem ist die Erstellung einer benutzerdefinierten Ubuntu VirtualBox-VM ab einer minimalen. Das Ergebnis sollte aus einer VM bestehen, die in einer lokalen VirtualBox-Installation (nicht in der Cloud) ausgeführt wird.

Diese Aufgabe wurde früher mit der Minimalinstallation mini.iso ausgeführt. Aber dieses Disk-Image ist jetzt Legacy, obwohl es noch inoffiziell verfügbar ist.

Ich wollte eine gut dokumentierte, langfristige Lösung, möglicherweise basierend auf offiziellen Veröffentlichungen. Beim Surfen im Internet habe ich verschiedene Vorschläge gefunden, aber keine vollständige Lösung. Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung, die auf solchen Vorschlägen basiert.

Die Lösung könnte erklären, warum die auf "mini.iso" basierende Lösung entlassen wird. Tatsächlich ist die neue Version schneller auszuführen und gibt eine VM zurück, die wahrscheinlich besser für die Verwendung in einer VirtualBox-Umgebung konfiguriert ist. Darüber hinaus kann der Prozess vollständig automatisiert sein (siehehttps://gist.github.com/atoato88/5840807 oder https://gist.github.com/smoser/6066204), während das Legacy eine manuelle Installation erfordert, die lange dauert.

Die Lösung beginnt mit einem Wolkenbild, wie in einem der Beiträge zum Thema vorgeschlagen (https://askubuntu.com/questions/1264128/how-to-do-a-minimal-install-of-20-04).

Ich habe den Prozess, der für eine Linux-Box entwickelt wurde, in Schritte unterteilt:

  • Installieren Sie das Cloud-Image
  • Konfigurieren Sie die VM
  • Konfigurieren Sie das Cloud-Image
  • Benutzeranmeldeinformationen definieren
  • Bereiten Sie sich auf die Anpassung vor

Ich gebe auch einige ungetestete Vorschläge für die Verwendung in einer Windows-Umgebung.

Installieren Sie das Cloud-Image

Cloud-Bilder sind aus verschiedenen Quellen verfügbar. Dieser Leitfaden gilt für diejenigen auf der offiziellen Ubuntu-Website, die verschiedene Geschmacksrichtungen bietet. Ich habe den 20.04 im OVA-Format ausgewählt, das in VirtualBox einfach zu verwenden ist (https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.ova). Wenn Sie die URL bearbeiten, finden Sie andere Formate und das Repo.

Laden Sie das Image herunter und erstellen Sie die VM mit Datei -> Virtuelle Anwendung in die VirtualBox-GUI importieren, ohne sie zu starten. Es kann zweckmäßig sein, den Namen in der Beschreibung (Doppelklick auf die Beschreibungszeile) durch einen einfacheren Namen wie "Minimal-Focal" zu ändern.

Konfigurieren Sie die VM

Vernetzung

Konfigurieren Sie in der Netzwerkkonfiguration der virtuellen Maschine den Netzwerkadapter als "NAT" und leiten Sie (im Feld "Erweitert") den Host-Port 2222 (oder einen beliebigen beliebigen) auf 22 um. Auf diese Weise wird Ihre VM verbunden das Internet und zugänglich über ssh.

Lager

In der Speicherkonfiguration der VM:

  • Entfernen Sie den unbrauchbaren Diskettentreiber
  • Erstellen Sie ein neues DVD-Laufwerk und lassen Sie es leer

Konfigurieren Sie das Cloud-Image

Erstellen Sie ein ISO-Image mit den Dateien, die Cloud-Init beim Booten der VM verwendet. Erstellen Sie an einem geeigneten Ort die folgenden zwei YAML-Dateien:

  • Metadaten:

     instance-id: desktop
     local-hostname: vb-desktop
    
  • Benutzerdaten:

     #cloud-config
     users:
       - name: user
         sudo: ['ALL=(ALL) NOPASSWD:ALL']
         shell: /bin/bash
    

Hier haben Sie die Möglichkeit, zwei Details in der VM zu konfigurieren: den Hostnamen (hier den Wert '' vb-desktop '' für das Feld '' lokaler Hostname '' in der Metadatendatei) und den Benutzernamen (hier den ''). 'user' 'Wert für das Feld' 'name' 'in der Benutzerdatendatei). Überprüf denhttps://cloudinit.readthedocs.io/en/latest/topics/format.html für mehr Details.

Erstellen Sie als Nächstes die ISO-Datei (z. B. ciconf.iso) mit dem Befehl

 $ cloud-localds ciconf.iso user-data meta-data

Der Befehl '' cloud-localds '' befindet sich im Paket "cloud-image-utils", mit dem Sie (in Debian / Ubuntu) installieren

 $ sudo apt install cloud-image-utils

Die gleichen Funktionen sollten auch für Windows-Benutzer verfügbar sein.

Installieren Sie im Abschnitt Speicher der VirtualBox-GUI die ISO-Datei, die Sie gerade auf dem IDE-Laufwerk erstellt haben, das Sie im vorherigen Schritt erstellt haben.

Starten Sie die VM und warten Sie auf die Terminalanmeldung. Klicken Sie dann auf "ACPI herunterfahren". Sie können sich nicht anmelden, da Sie keine Anmeldeinformationen haben.

Benutzeranmeldeinformationen definieren

Wechseln Sie in das Verzeichnis der virtuellen VM-Festplatte (möglicherweise ~ / VirtualBox VMs / minimal-focal), und hängen Sie das Festplatten-Image ein. Es wird das qemu-Paket benötigt, mit dem installiert wird

 $ sudo apt install qemu

Um das Disk-Image zu installieren, gehen Sie wie folgt vor:

 $ sudo modprobe nbd max_part=8
 $ sudo qemu-nbd -c /dev/nbd0 ubuntu-focal-20.04-cloudimg.vdi $ sudo mount /dev/nbd0p1 /mnt

Die Datei "ubuntu-focal-20.04-cloudimg.vdi" bezieht sich auf die Bilddatei, die durch Ihre eigene ersetzt wird. Am Ende ist das VM-Dateisystem im Verzeichnis / mnt verfügbar.

Um die Benutzeranmeldeinformationen '' chroot '' für das VM-Dateisystem zu erstellen, ändern Sie die Benutzeranmeldeinformationen (der Befehl '' passwd '' fordert Sie zur Eingabe eines neuen Kennworts auf) und beenden Sie die Umgebung '' chroot '':

 $ sudo chroot /mnt $ passwd user
 $ sync $ exit

Ersetzen Sie '' user '' durch den im vorherigen Schritt konfigurierten Benutzernamen. Es gibt nur begrenzte Möglichkeiten, Ihr System mit dem Befehl chroot durcheinander zu bringen. Seien Sie also vorsichtig damit. Wenn Sie nichts davon wissen, überprüfen Sie bitte die Manpage.

Kopieren Sie Ihren öffentlichen Schlüssel (ich nehme an, Sie haben einen) nur dann in das VM-Dateisystem, wenn Sie die Chroot-Umgebung sicher verlassen haben (doppelte Überprüfung):

 $ mkdir /mnt/home/user/.ssh $ cat ~/.ssh/id_rsa.pub >> /mnt/home/user/.ssh/authorized_keys

Der obige Schritt ist optional, aber äußerst praktisch. Falls Sie keinen öffentlichen Schlüssel haben, gibt es dafür Tausende von Tutorials ('' ssh-keygen '').

Wenn Sie fertig sind, heben Sie das VM-Disk-Image auf:

 $ sync $ sudo umount /dev/nbd0p1
 $ sudo qemu-nbd -d /dev/nbd0 $ sudo rmmod nbd

Wenn Sie vergessen, die Bereitstellung aufzuheben, ist die VM-Festplatte beschädigt und Sie müssen das Ganze neu starten. Überprüfen Sie dies noch einmal, bevor Sie fortfahren.

Bereiten Sie die Anpassung vor

Starten Sie den Computer über die VirtualBox-Benutzeroberfläche und melden Sie sich mit dem Benutzernamen '' user '' und dem definierten Kennwort an.

Auf die VM kann auch über die Befehlszeile Ihres PCs mit zugegriffen werden

 $ ssh user@localhost -p 2222

('' Benutzer '' wird durch Ihren Benutzernamen ersetzt, 2222 ist die im ersten Schritt konfigurierte Portnummer).

Verwenden Sie dann die von Ihnen gewünschte Weise (ich schlage '' ssh '' vor), um die Arbeit zu beenden.

Melden Sie sich bei der VM an und beheben Sie mit einem Zeileneditor ein fehlendes Detail in der Datei '' / etc / hosts '' in der VM: Fügen Sie am Ende der Zeile '' localhost '' den Namen des neuen Computers in ein das Beispiel '' minimal-focal ''.

Geben Sie als nächstes die folgenden Befehle ein:

 $ sudo dpkg-reconfigure keyboard-configuration
 $ sudo apt update $ sudo apt upgrade
 $ sudo apt install linux-modules-extra-$(uname -r) tasksel

Der erste Befehl passt die VM-Tastatur an die von Ihnen verwendete an, während der Rest die Konfiguration aktualisiert, ein Bundle-Paket installiert, das Module enthält, die in einem Cloud-Image fehlen, und das Tasksel-Dienstprogramm, das für die Anpassung nützlich ist.

Endkontrolle und Schlussfolgerungen

Mit dem Befehl '' tasksel '' können Sie verschiedene Arten von Bundles installieren, z. B. einen LAMP-Server. Sie können sich jedoch auch dafür entscheiden, Ihre bevorzugte Paketsammlung zu installieren, genau wie bei mini.iso.

Der oben beschriebene Prozess ist konzeptionell schwieriger als der mit der mini.iso ausgeführte, aber er ist schneller und dauert etwa 10 Minuten, bis die Maschine für die Anpassung bereit ist. Im Gegensatz dazu müssen Sie einen VDI herunterladen, der größer als die mini.iso ist. Schließlich bleibt die Cloud-Technologie erhalten, und ich hoffe, dass diese Modalität für mehrere Ubuntu-Versionen verfügbar sein wird, nachdem die mini.iso endgültig aufgegeben wurde.

Die letzte Überprüfung kann darin bestehen, eine Desktop-Distribution wie Xubuntu mithilfe von tasksel zu installieren. Der Test ist wichtig, um zu überprüfen, ob ein Display-Manager ordnungsgemäß funktioniert. Um die Prüfung auszuführen, klonen Sie die VM und rufen Sie vom VM-Terminal '' tasksel '' auf. Wählen Sie als nächstes (mit '' Leerzeichen '') den "Minimal Xubuntu Desktop". Warten Sie, bis die Installation abgeschlossen ist, und starten Sie den Computer neu.

Windows-Benutzer sollten in der Lage sein, dieselbe Strategie zu verwenden, aber die Schritte, die das Mounten des VM-Dateisystems und des Befehls chroot erfordern, werden unter Verwendung bestimmter Felder in der Benutzerdatendatei ausgeführt.