Passen Sie eine Ubuntu 20.04 VirtualBox-VM an
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
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-desktopBenutzerdaten:
#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.