
Ich arbeite an einem eingebetteten Gerät mit ARM-CPU und Debian Jessie, das mit Multistrap erstellt wurde. Es scheint, dass ich eine leicht gepatchte Version von ModemManager in dieses System installieren muss, und ich bitte um eine Anleitung dazu.
Was ich bisher versucht habe, ist, in das von Multistrap erstellte Root-Dateisystem zu chrooten, den Quellcode von ModemManager mit apt-get herunterzuladen und ihn chrooten zu erstellen. Bisher habe ich es nicht einmal geschafft, das Konfigurationsskript zu übergeben, da ich Abhängigkeiten nicht erfüllen kann.
Um das bekannte Problem von ModemManager zu lösen, dass dieser die Hardware durch das Scannen serieller Ports nach Modems verwirren kann, sind Patches erforderlich. Es gibt eine Möglichkeit, das zu umgehen, indem man Geräte über Udev-Regeln auf eine schwarze Liste setzt, aber in diesem Fall ist der serielle Port Teil des TTY-Subsystems, für das Blacklisting nicht unterstützt wird. Ich habe das im Quellcode von ModemManager überprüft.
Ich bin auch sehr offen für einfachere Lösungsansätze, falls es solche gibt, aber bisher sind mir keine aufgefallen.
Antwort1
Auch wenn diese konkrete Frage alt ist, ist das Hinzufügen einer geänderten Version einer Software zu einem durch Multistrap generierten Debian-Rootfs ein häufiges Problem bei der Verwendung von Multistrap.
Ich würde Cross-Compilation nicht mit Multistrap mischen, da das Kompilieren von Software im von Multistrap generierten Chrootfs zu mühsam ist.
Stattdessen würde ich die geänderte Software irgendwo kompilieren, wo das einfach ist. Möglicherweise haben Sie bereits eine Cross-Compilation-Umgebung für Ihre Ziel-ARM-Architektur, aber wenn nicht, ist die einfachste Methode meiner Meinung nach heute (und auch im Jahr 2016) die Verwendung eines Single-Board-Linux/ARM-Computers wie dem Raspberry Pi mit dem gewünschten Zielbetriebssystem, die Installation der erforderlichen Build-Tools dort und die Kompilierung Ihrer geänderten Software dort. Sie müssen keine Cross-Compilation einrichten, da hier eine native Kompilierung verwendet wird. Kopieren Sie nach der Kompilierung die erstellte Binärdatei in Ihre Multistrap-Umgebung auf Ihrem PC.
Führen Sie Multistrap normal aus und kopieren Sie, nachdem es ausgeführt wurde und Sie alle Pakete im Chroot konfiguriert haben, einfach die geänderte Binärdatei in das Root-Dateisystem, bevor Sie das Root-Dateisystem auf der Zielhardware verwenden.
„Binär“ kann hier nur die kompilierte ausführbare Datei bedeuten, aber auch ein benutzerdefiniertes .deb-Paket (das Sie am Ende mit dpkg im Chroot installieren, anstatt es einfach zu kopieren). Letzteres kann Ihre Änderungen besser schützen, da Sie dann auch die .deb-Versionsnummer ändern können, sodass Ihre Änderungen später nicht rückgängig gemacht werden, apt update; apt upgrade
wenn Ihr eingebettetes System während der Ausführung Software-Updates abrufen kann.