Edit: Ich möchte die Frage etwas vereinfachen:
Das Hauptproblem ist folgendes: /dev/sda wird beim Booten erstellt, unabhängig davon, ob mein USB-Laufwerk eingesteckt ist oder nicht. Wenn ich /dev/sda manuell rm, funktioniert udev ordnungsgemäß, bis ich neu starte. Dann erscheint /dev/sda wie von Zauberhand wieder!
Ursprüngliche Frage lautet:
Ich führe einen Yocto Linux-Build auf einer eingebetteten Platine aus und bin auf ein Problem gestoßen.
Wenn ich bei einem neuen Build ein USB-Laufwerk an die Platine anschließe, wird es als /dev/sda und /dev/sda1 angezeigt (super!). Wenn ich das Laufwerk abziehe, verschwinden diese Einträge (auch super!).
Das Problem tritt auf, nachdem ich ein doppeltes Root-Dateisystem über das USB-Laufwerk auf die Platine kopiert habe (damit ich vollständige Systemaktualisierungen auf der Platine durchführen kann). Alles funktioniert einwandfrei, bis ich neu starte und plötzlich /dev/sda und /dev/sda1 vorhanden sind, unabhängig davon, ob das USB-Laufwerk eingesteckt ist oder nicht.
Ich habe die Berechtigungen überprüft und sie sehen in beiden Fällen gleich aus. Ich habe versucht, die Dateien zu entfernen, aber sie erscheinen beim nächsten Neustart wieder. Die beiden Dateien werden nicht mit dem neuen Root-Dateisystem kopiert. Meine Anwendung verwendet das Vorhandensein dieser Dateien, um festzustellen, ob ein Laufwerk eingelegt ist. Daher ist es wichtig, dass sie ordnungsgemäß funktionieren.
Irgendwelche Ideen?
Danke
Marlon
Antwort1
Ändern Sie die Art und Weise, wie Sie nach USB-Laufwerken suchen, da diese unzuverlässig ist.
Verzeichnis verwenden lsusb
oder prüfen /proc/scsi/usb-storage
. Mit beiden Methoden erhalten Sie viele Informationen vom Kernel, sodass Sie zusätzlich mit Dingen wie dem Umschalten auf eine andere Logik basierend auf Hersteller oder Seriennummer experimentieren können :)