Ich entwickle ein Embedded-System, das Linux derzeit mit der Konsolenausgabe an der seriellen Schnittstelle 1 bootet (mit dem Konsolen-Boot-Parameter des Bootloaders). Aber irgendwann werden wir diesen seriellen Port benutzen. Was ist die beste Lösung für die Ausgabe der Kernel-Konsole?/dev/null? Kann es irgendwie auf eine Pty gelegt werden, damit wir möglicherweise darauf zugreifen können?Wohin senden Sie die Kernel-Konsole auf einem eingebetteten System?
Antwort
Wenn Sie nur kernel printk-Nachrichten von der Konsole lesen und nicht getty oder eine Shell darauf ausführen möchten, können Sie netconsole verwenden. Sie können die folgenden Bootloader Kernel-Optionen (oder modprobe netconsole) liefern:
[email protected]/eth1,[email protected]/12:34:56:78:9a:bc
wo 4444 der lokale Port, 10.0.0.1 die lokale IP ist, eth1 ist die lokale Schnittstelle, die Nachrichten aus senden . 9353 ist der Remote-Port, 10.0.0.2 ist die Remote-IP, an die die Nachrichten gesendet werden, und das letzte Argument ist die MAC-Adresse Ihres Remote-Rechners (z. B. Ihres Desktop).
Dann werden die Nachrichten laufen zu lesen:
netcat -u -l -p 9353
Sie mehr dazu in Documentation/networking/netconsole.txt
lesen Sie die printk Nachrichtenpuffer aus einer Schale mit dmesg zugreifen können. Der Kernel-Buffer ist von begrenzter Größe und überschreibt die ältesten Einträge mit den neuesten, so dass Sie entweder dmesg regelmäßig überprüfen oder netconsole wie von @bmdhacks vorgeschlagen anschließen müssen.
Wenn es keine Konsole gibt, verpassen Sie keine Oops-Informationen, die bei einem Kernel-Absturz ausgedruckt wurden. Selbst die Verwendung von netconsole kann hier nicht helfen, wenn der Kernel ausfällt und neu startet, bevor TCP die Ausgabe an den Remote-Socket liefert. Im Allgemeinen ändern wir kernel/panic.c: panic(), um Registerinhalte und andere Zustände in einem Bereich von NOR-Flash zu speichern, so dass zumindest einige Informationen für das Post-Mortem-Debuggen verfügbar sind.
- 1. Kryptographischer Pseudozufallszahlengenerator im eingebetteten System?
- 2. Boost im eingebetteten System mit Speicherbeschränkung verwenden
- 3. Welche serverseitige Webtechnologie sollte ich in einem eingebetteten System verwenden?
- 4. Wie SMS mit AT auf einem eingebetteten System mit begrenztem Speicher lesen?
- 5. Wie funktionieren Haltepunkte auf einem eingebetteten Gerät?
- 6. Wohin soll ich die Bestätigungs-E-Mail senden?
- 7. Docker, wohin geht die Firewall?
- 8. Wohin nach einem Jahr Java?
- 9. Wohin gingen die Protokolle?
- 10. Extrahieren von Geheimnissen aus einem eingebetteten Chip
- 11. Effiziente Möglichkeit, die Zeit von jedem Benutzer auf einem System
- 12. Wie fusionieren Sie Tags auf einem bereits bestehenden System
- 13. Pfad zu einem eingebetteten Objekt
- 14. Berechnen Sie die Punktzahl in einem Pyramiden-Score-System
- 15. Wie erhalten Sie die verbleibende Akkulaufzeit in einem Windows-System?
- 16. Deaktivieren Sie klicken Sie auf Marker in eingebetteten Google Karte
- 17. Eine Anwendung, die fast 100% CPU auf einem System verbraucht
- 18. Wie ermittelt man die Boost-Version auf einem System?
- 19. Wie lange ist die Anforderungswarteschlange auf einem Vista-System?
- 20. Automatisch ersetzen Sie eine Schriftart mit einem eingebetteten
- 21. Wohin mit freeze_support() in einem Python-Skript?
- 22. Refactoring für Testability auf einem vorhandenen System
- 23. Wohin gehen die winkelförmigen Hilfsfunktionen?
- 24. Erstellen Sie ausführbare Jar mit Einstiegspunkt in einem eingebetteten Jar
- 25. Java/SWT: So erhalten Sie Mausereignisse von einem eingebetteten Fenster
- 26. C++ Programmausführungszeitschätzung auf Embedded-System
- 27. wie Sie Dateien von einem System zu einem anderen System mit ASp.net und C# .net
- 28. DNS: Haben Sie eine Domain auf einem Server und die Dateien auf einem anderen
- 29. Serialisieren und Synchronisieren von Daten auf einem eingebetteten Gerät
- 30. YouTube API - Ereignisse auf einem eingebetteten iframe nicht funktioniert
danke für die Antwort. Auf dem Endprodukt könnte ich Netconsole an 127.0.0.1 senden und dann von dem Port in einer Shell lesen, wenn ich es brauchte – MattSmith