
Ich habe einen benutzerdefinierten Kernel, der auf mehreren virtuellen Maschinen installiert werden muss.
Eine Möglichkeit besteht darin, den Quellcode auf jede VM zu übertragen und ihn dann zu kompilieren und zu installieren.
Ich würde gerne wissen, ob es einen schnelleren Weg gibt, auf dem Host zu kompilieren und einfach einige Dateien zu übertragen oder den Kernel über Hostdateien zu installieren.
Sowohl das Host- als auch das Gastbetriebssystem sind Ubuntu 14.04 und ich verwende KVM als Hypervisor.
Ich habe dies verwendetVerknüpfungzum Kompilieren und Installieren des Kernels.
Antwort1
Ich empfehle, das Paketsystem Ihrer Distribution zu verwenden. Erstellen Sie Ihr eigenes Kernelpaket und verteilen Sie es dann auf die einfachste Art und Weise an Ihre VMs. Viele Distributionen bieten Anleitungen, wie Sie dies mit ihrem bevorzugten Paketmanager tun können (siehe unten für Ubuntu).
Wenn Sie den Kernel (und/oder andere Software) häufig neu erstellen müssen, können SieErstellen Sie ein lokales Paket-Repository(z. B. auf dem Host), um sie zur Repository-Liste der Gäste hinzuzufügen. Dann können die Gäste alle neuen Pakete abrufen, sobald sie verfügbar sind.
Wenn Sie nur wenige Pakete zu verteilen haben, können Sie diese auch in einem lokalen Ad-hoc-Paketcache auf dem Host ablegen. Geben Sie diesen Speicherort mit Samba an die Gäste weiter oder laden Sie rsync
die Pakete bei Bedarf einfach manuell hoch.
Unter Ubuntu,Erstellen eines benutzerdefinierten Kernelpaketsläuft darauf hinaus:
Holen Sie sich die Quelle
apt-get source linux-image-$(uname -r)
ODERgit clone git://kernel.ubuntu.com/ubuntu/ubuntu-<releasename>.git
Vorbereiten Ihrer Build-Umgebung
sudo apt-get build-dep linux-image-$(uname -r)
Ändern Sie Ihre Kernelkonfiguration
chmod a+x debian/rules debian/scripts/* debian/scripts/misc/*
fakeroot debian/rules clean
fakeroot debian/rules editconfigs
(alles durchgehen)+myVer1
Fügen Sie am Ende der ersten Versionsnummer eine lokale Versionskennung (z. B. ) hinzu,debian.master/changelog
damitapt
dieser als neuerer Kernel als die Version des offiziellen Repositorys erkannt wird.
Erstellen des Kernels
fakeroot debian/rules clean
fakeroot debian/rules binary-headers binary-generic binary-perarch
(Schnellaufbau) ODERfakeroot debian/rules binary
(langsamer, wenn Linux-Tools oder geringe Latenz benötigt werden)
Wenn der Build erfolgreich ist, .deb
befinden sich Ihre benutzerdefinierten Pakete im Verzeichnis über dem Build-Stammverzeichnis.