Wie kann ich eine zirkuläre Abhängigkeit beim Erstellen aus Tree-Modul und Kernel mit initramfs vermeiden?

Wie kann ich eine zirkuläre Abhängigkeit beim Erstellen aus Tree-Modul und Kernel mit initramfs vermeiden?

Ich kompiliere einen Kernel plattformübergreifend und verwende ein Out-of-Tree-Kernelmodul, das von einem Gerätehersteller bereitgestellt wird. Ursprünglich wurde der Kernel erstellt, dann das Modul, das einwandfrei funktionierte.

Jetzt versuche ich, initramfs im Kernel zu aktivieren. Das Kernelmodul muss in das initramfs-Image aufgenommen werden. Dies führt zu einer zirkulären Abhängigkeit:

  • Der Kernel ist abhängig von der Initramfs-Image-Datei (eingestellt in CONFIG_INITRAMFS_SOURCE).
  • Die Initramfs-Image-Datei hängt vom Out-of-Tree-Kernelmodul ab
  • Das Out-of-Tree-Kernelmodul hängt vom zu erstellenden Kernel ab.

Der beste Workaround, den ich habe, ist:

  1. Erstellen Sie eine leere Datei für das Initramfs-Rootfs-Image
  2. Erstellen des Kernels
  3. Erstellen des Moduls
  4. Erstellen Sie das echte Initramfs-Image
  5. Den Kernel neu erstellen

Dies unterbricht jedoch die makeAbhängigkeitsverfolgung und führt während des normalen Entwicklungszyklus zu vielen unnötigen Neuaufbauten. Gibt es ein Kernel-Build-Ziel, das die von einem Out-of-Tree-Modul benötigten Tools erstellt, ohne tatsächlich den gesamten Kernel zu erstellen?

verwandte Informationen