Kann ich systemd-nspawn verwenden, um eine „chroot“-Installation (in diesem Fall Debian mit Debootstrap) einzurichten, bevor ich es boote? D. h. unbeaufsichtigte Installation und Einrichtung.
Ich muss die Tastaturbelegung, den Hostnamen, möglicherweise die Zeitzone und das Gebietsschema festlegen. Und ich möchte systemd-Tools wie hostnamectl, localectl, timedatectl usw. verwenden.
Ist das möglich und wie geht das, oder sollte ich Konfigurationsdateien verwenden? Werden sie überhaupt von systemd erkannt? Wenn ich beispielsweise einen Hostnamen in /etc/hostname einstelle, wird er richtig erkannt? Kann ich die Tastenbelegung auch so festlegen?
Antwort1
Ist es möglich
Ja.
Ich habe Debian in nspawn ausgeführt. Es funktioniertGroßartigmit minimalen Installationen.
Wenn Sie dies hingegen mit einer Desktop-Installation tun, müssen Sie damit rechnen, dass Sie auf ein oder zwei kleinere Probleme stoßen, die Sie umgehen müssen.
soll ich Konfigurationsdateien verwenden? Werden sie überhaupt von systemd erkannt? Wenn ich beispielsweise einen Hostnamen in /etc/hostname einstelle, wird er dann richtig erkannt?
/etc/hostname funktioniert definitiv, es wird von systemd unterstützt, es ist genau das, was hostnamectl
bearbeitet werden würde. Im Allgemeinen ist es schwer zu erkennen, worüber Sie sich hier Sorgen machen. Debian Jessie verwendet standardmäßig systemd, daher sollte jede für Debian Jessie geschriebene Dokumentation zur Konfiguration von Dingen – z. B. im Debootstrap-Anhang des Installationshandbuchs – für systemd funktionieren. (Obwohl dieser Anhang eher eine Skizze ist und nicht zeigt, wie Sie es unbeaufsichtigt laufen lassen können.)
Nach dem, was Sie gesagt haben, könnte Sie auch interessieren systemd-firstboot
. Ich habe es noch nicht ausprobiert und meines Wissens ist es in mancher Hinsicht begrenzt, aber es könnte informativ sein.
Ich denke, Sie müssten in jedem Fall verwenden systemd-nspawn --boot
und eine Servicedatei ähnlich der von systemd-firstboot verwendeten hinzufügen. Wenn Sie das System nicht booten, hostnamectl
funktioniert zB nicht ... Sobald Ihr Skript auf die eine oder andere Weise fertig ist, müsste es auch das System herunterfahren.
Ein wichtiges Problem ist, dass Sie, wenn Sie Netzwerkdienste installiert haben (einschließlich Avahi, Cups usw.), wahrscheinlich nspawn --net-veth
oder ein gleichwertiges Programm ausführen möchten, um Konflikte mit den Netzwerkdiensten des Hosts zu vermeiden. Um an diesem Punkt Netzwerkzugriff zu erhalten (z. B. um weitere Pakete zu installieren), richten Sie einen DHCP-Client auf der Schnittstelle ein host0
.