Informationen über die Hardware eines Linux-Computers erhalten, ohne einen Schraubendreher zu verwenden. Logs mit dmesg analysieren Dmesg linux was es tut


Zusamenfassend:

  • Der SELinux-Prozesskontext kann geändert werden, wenn eine solche Operation in den Sepolicy-Regeln beschrieben ist. V Android-Version 4.4 (KitKat) ist es möglich, Berechtigungen durch Ändern des Kontexts zu erhöhen. Aber ab 5.x ist dies nicht mehr möglich.
  • Dateikontexte existieren.
  • Zusätzlich zum Kontext von Dateien und Prozessen implementiert Android Kontexte für Parameter property_contexts.

addd und konsole

Der Einzige erschwinglicher Weg eine relativ privilegierte Hülle in der Produktion bekommen Android-Geräte- Entwicklermodus. Der Entwicklermodus startet den adbd-Daemon, der auch als Analogon zu ssh / telnet fungieren kann. In Android KitKat befindet es sich in den initramfs unter dem /sbin/adbd-Pfad und ist für Nicht-Root-Benutzer nicht lesbar. Anfänglich läuft adbd als Root und läuft im init SELinux-Kontext / in der Domäne (wird vom init-Prozess verwendet und hat im Allgemeinen mehr Privilegien als andere Domänen). Wenn der Prozesskontext beispielsweise explizit in /init.rc angegeben ist seclabel u: r: addbd: s0, dann startet der Prozess sofort im angegebenen Kontext. Beim Initialisieren von adbd verringert es abhängig von den Kompilierungsparametern (und Android-Parametern (Eigenschaften) die Berechtigungen, ändert nämlich den aktuellen Benutzer von Root in die Shell, setzt den SELinux-Kontext auf Hülse und schneidet alle Systemfunktionen außer CAP_SETUID und CAP_SETGID(was zum Debuggen von Anwendungen über Run-As erforderlich ist). Das sogenannte Capability Bounding Set erlaubt es nicht untergeordneten Anwendungen, die Fähigkeiten zu erhöhen, sondern nur Herabstufungen. Mit diesen Privilegien können Sie auf Ihrem Telefon kaum mehr tun als nichts. Sie können die Fähigkeiten des aktuellen Prozesses mit dem Befehl cat / proc / self / status | . anzeigen grep CapBnd. Und Sie können sie mit dem Befehl capsh (nicht verfügbar auf Android) entschlüsseln, zum Beispiel:


$ capsh --decode = 0000001ffffffffff

Der aktuelle SELinux-Kontext kann mit dem Befehl id oder cat / proc / self / attr / current angezeigt werden. Der vorherige Prozesskontext kann mit dem Befehl cat / proc / self / attr / prev angezeigt werden.


Anzeigen des Kontexts "von Dateien: ls -Z
Anzeigen des Kontexts "der laufenden Prozesse: ps -Z

Wir bekommen Root-Zugriff

root, aber nicht das gleiche

Als erstes habe ich dirtycow für den vorgesehenen Zweck verwendet - ich habe / system / bin / run-as geändert, wodurch die UID / GID auf 0 gesetzt wurde (su macht dasselbe). Allerdings konnte ich das Dateisystem nicht mounten, nicht einmal tmpfs. Ich konnte auch keine Kernel-Module laden. dmesg anzeigen - nein. Ich konnte nicht einmal Verzeichnisse durchsuchen, die 700 Berechtigungen hatten und anderen Systembenutzern gehörten. Ich konnte nur auf Blockgeräte lesen und schreiben, und das Anzeigen von Dateien oder Verzeichnissen war dank der Einstellung der UID / GID eines bestimmten Benutzers möglich (ich schrieb mein Fahrrad - ein Analogon von su, das den Selinux-Kontext und den Benutzer / die Gruppe festlegen konnte) .


Zuerst habe ich die gesamte Firmware, das Booten und die Wiederherstellung gedumpt:


$ dd if = / dev / block / mmcblk0 of = / storage / sdcard1 / mmcblk0.img $ dd if = / dev / block / platform / msm_sdcc.1 / by-name / boot of = / storage / sdcard1 / boot.img $ dd if = / dev / block / platform / msm_sdcc.1 / by-name / recovery of = / storage / sdcard1 / recovery.img

Sie können den Dump mit den Dienstprogrammen kpartx und unpackbootimg untersuchen. Der Befehl kpartx -a mmbblk0.img erstellt ein virtuelles Blockgerät, auf das unter /dev/mapper/loop0 zugegriffen werden kann. Sie können damit wie mit jedem anderen Blockgerät arbeiten. Ich habe die Boot- und Recovery-Dumps mit dem Dienstprogramm unpackbootimg entpackt.


Dann habe ich versucht, in recovery / dev / zero zu schreiben, zu überprüfen und sofort aus dem Dump wiederherzustellen.


Da ich auf Blockgeräte schreiben konnte, konnte ich eine benutzerdefinierte Wiederherstellung schreiben. TWRP von Brigadier gefunden, in die Wiederherstellung geflasht und in die ADB-Reboot-Wiederherstellung neu gestartet. TWRP habe ich nicht gesehen, sondern nur das Android-Symbol "und mit einem Ausrufezeichen. So sieht die Standardwiederherstellung aus, was bedeutet, dass TWRP nicht geflasht wurde.


Ich starte neu in normaler Modus, starte ich den Exploit, überprüfe die Hash-Wiederherstellung des Abschnitts - Hash stimmt mit dem Original überein. Ich versuche die Daten erneut zu schreiben - der Hash hat sich geändert! Ich erinnere mich an den Seitencache, den ich bereinige (echo 3>/proc/sys/vm/drop_caches) - der Hash ist alt. Jene. alles was ich auf das blockdevice schreibe fliegt fehlerfrei nach /dev/null und landet manchmal im Linux-Cache. Aber kommt das Firmware-Update irgendwie? Und die Benutzerdaten werden irgendwie geschrieben interner Speicher... Wir müssen weiter graben.

Versuch, SELinux zu deaktivieren

Damals dachte ich, dass alle Fehler bezüglich fehlender Privilegien von SELinux verursacht wurden (ich habe völlig vergessen, dass Fähigkeiten gekürzt werden können). Ich habe die dmesg-Protokolle nicht gesehen, logcat hat nichts Relevantes angezeigt. Und ich begann darüber nachzudenken, wie man SELinux deaktiviert.


Der erste Hinweis, den ich finden konnte:


$ grep -A2 reload_policy boot / ramfs / init.rc auf Eigenschaft: selinux.reload_policy = 1 restart ueventd restart installd

Jene. Bevor Sie ZIP anwenden, wird die Wiederherstellung alle Partitionen aushängen, aber in meinem Fall geht etwas schief.

Kernelquellen ausgraben

Die GPL-Lizenz verpflichtet Smartphone-Hersteller zur Freigabe der Kernel-Quellen. Danke an Linus und Stallman dafür. Manchmal posten Hersteller etwas links, manchmal richtige Quellen, aber ohne defconfig-Datei, manchmal richtig und ganz selten mit Anleitung zum Bauen (zB LG).


In meinem Fall gab es Quellen mit der richtigen defconfig, aber keine Anweisungen. Mit etwas Schweiß konnte ich den Kern zusammenbauen und darauf achten, dass dies keine komplette Linde ist.


Nach langer Zeit habe ich mich für zwei Dateien entschieden:

Haken

Kyocera hat nicht lange nachgedacht, sondern einfach Hooks für potenziell gefährliche Operationen in Android aufgeschrieben: mount, umount, insmod (nur ein Modul darf geladen werden - wlan und nur wenn der init-Prozess es lädt) und so weiter . Hier liegt das Wiederherstellungsproblem. Er konnte das /system-Dateisystem nicht aushängen! Diese Operationen waren nur für den Init-Prozess erlaubt. Einschließlich konnte ich SELinux nicht deaktivieren, da diese Funktion beim Kompilieren des Kernels deaktiviert wurde. Diese Hooks konnten nur umgangen werden, wenn der Kernel mit bestimmten Parametern geladen wurde ( kcdroidboot.mode = f-ksg oder androidboot.mode = kcfactory, über sie etwas später).

Neustart

Auch eine interessante Datei zum Studieren. Es beschreibt die möglichen Optionen zum Herunterladen des Telefons:

  • adb reboot bootloader- Fastboot-Modus, in meinem Telefon nicht verfügbar (0x77665500 - Hex-Tag 00556677 im Abschnitt sbl1)
  • ADB-Reboot-Wiederherstellung - Wiederherstellungsmodus(0x77665502 - Hex-Label 02556677 im sbl1-Abschnitt)
  • adb reboot rtc- der sogenannte ALARM_BOOT. Ich habe nicht verstanden warum, es gibt kein Label in sbl1. Bezieht sich wahrscheinlich auf https://developer.android.com/reference/android/app/AlarmManager.html
  • adb reboot oem-X(in meinem Fall oem-1, 0x6f656d01 - Hex-Tag 016d656f im Abschnitt sbl1). Was in diesem Modus passiert, wird vom Hersteller festgelegt. Den Quellcodes nach zu urteilen, startet das Telefon in diesem Modus neu, wenn die Firmware-Authentifizierung im Modembereich fehlschlägt.
  • adb reboot edl- Notfall-Download, überführt das Telefon in den Standard-Qualcomm-"ovsky-Download-Modus. Das Telefon ist definiert als QHSUSB__BULK COM-Port, über die Sie einen signierten Bootloader übertragen können (wenn ich mich nicht irre, ist jeder Bootloader für einen SoC-Typ und Telefonhersteller ausgelegt) und Low-Level-Operationen mit dem Telefon durchführen, einschließlich Flashen. Wird normalerweise in Verbindung mit QPST verwendet. Bei einigen Telefonen sickern Bootloader ins Netzwerk, zum Beispiel für das Kyocera KYL22. Woher sie kommen - ich weiß es nicht.
  • Ein bestimmter Download-Modus, in dem durch adb neu starten geh nicht. Hier ist es interessant ... Aber dazu später mehr.

Ein wenig darüber, wie der Boot auf Telefonen mit einem Qualcomm-Prozessor funktioniert:


Qualcomms On-Board-ROM-Bootloader (pbl - Primary Bootloader) lädt die sbl1 (Secondary Bootloader) Partition. sbl1 lädt tz (Trust Zone), dann aboot (android boot, little kernel, lk). Aboot wiederum lädt boot, recovery oder fota.


Beschreibung der an der Beladung beteiligten Abschnitte:

  • tz – Qualcomm-Vertrauenszone. Führt Low-Level-Operationen aus, einschließlich der Arbeit mit QFuses (rpmb-Abschnitt).
  • rpm – Ressourcen- und Power Manager-Firmware. Firmware für einen spezialisierten SoC, der für Ressourcen und Leistung verantwortlich ist.
  • sdi - Trustzone-Speicherpartition. Von der Vertrauenszone verwendete Daten.

Alle diese Abschnitte sind mit einer Zertifikatskette signiert.

fota

In einigen Fällen ist es hilfreich, Firmware-Updates zu ignorieren.


FOTA - Firmware über die Luft. Im Gegensatz zu Boot und Recovery ist fota ein inoffizieller Android-Boot-Modus. Fotas Aufgabe ist es, die Firmware zu aktualisieren. Kyocera verwendet dafür eine Lösung der Firma Red Bend, die in 35Mb ein Update nicht nur des Kernels, sondern auch der /system-Partition unterbringen kann. Daher ist das Schreiben auf die / Systempartition verboten, da andernfalls das Anwenden eines Patches auf falsche Daten das Telefon ausschalten kann.


Auf meinem Handy gab es ein Update. Ich konnte es wagen, da ich bereits die Möglichkeit hatte, zu schreiben/zwischenzuspeichern und das Update jederzeit zu unterbrechen.


Nachdem ich den Quellcode der für die Aktualisierung verantwortlichen Java-Anwendung untersucht hatte, wurde mir klar, wie es passiert:

  • Die Java-Anwendung lädt eine spezielle Datei /cache/delta/boot_delta.bin herunter, erstellt eine Datei /cache/delta/Alt-OTA_dlcomplete, die den erfolgreichen Download der Datei und andere Dateien mit Headern bestätigt.
  • Wenn das Update bestätigt wird, wird das Vorhandensein dieser Dateien erneut überprüft.
  • Wenn die Dateien vorhanden sind, wird der Abschnitt fotamng über die Bibliothek libjnialtota.so geändert.

Ich schreibe einen Befehl, der kontinuierlich eine Partition ausgibt und /cache/delta/boot_delta.bin umbenennt. Ich starte es sofort nach der Vereinbarung, das Telefon neu zu starten. Das Telefon startet im FOTA-Modus neu, meldet kein Update und startet im normalen Modus neu.


Ich fange an, die Daten zu studieren, die ich abgeladen habe. Im /cache-Bereich bekomme ich als Bonus Fota-Logs, die sogar dmseg-Logs enthalten! Der Neustart selbst in fota wird durch die Bytes "1" im fotamng-Abschnitt initialisiert:


$ dd if = / data / local / tmp / one_bit.bin of = / dev / block / platform / msm_sdcc.1 / by-name / fotamng seek = 16 bs = 1 count = 1 $ dd if = / data / local / tmp / one_bit.bin of = / dev / block / platform / msm_sdcc.1 / by-name / fotamng seek = 24 bs = 1 count = 1 $ dd if = / data / local / tmp / one_bit.bin of = / dev /block/platform/msm_sdcc.1/by-name/fotamng seek = 131088 bs = 1 count = 1 $ dd if = / data / local / tmp / one_bit.bin of = / dev / block / platform / msm_sdcc.1 / by-name / fotamng seek = 131096 bs = 1 count = 1

Nach einem Neustart werden sie auf Null zurückgesetzt. In dmesg habe ich das Vorhandensein eines Kernel-Parameters bemerkt kcdroidboot.mode = f-ksg... Hier ist es! Jene. Bootloader entfernt den Schutz für fota. Und theoretisch, wenn ich die Bootpartition in fota schreibe und das Telefon in diesem Modus neu starte, bekomme ich einen Kernel mit deaktiviertem Kyocera-Schutz. Aber schreibe rein Systempartitionen Ich kann immer noch nicht.

Untersuchen der kleinen Kernel (lk)-Quellen

Was sich im Abschnitt aboot befindet, ist der Android-Bootloader, dessen Vanilla-Quellen sich unter befinden:


Dort finden Sie Informationen zum Laden in einige der Modi. Zum Beispiel habe ich Informationen gefunden, dass, wenn Sie "boot-recovery" im Abschnitt Sonstiges schreiben, dann ohne ADB-Reboot-Wiederherstellung... Beim Laden in die Wiederherstellung wird dies. Und wenn die Wiederherstellung nicht booten kann, geht das Telefon in die Boot-Schleife und Sie werden es verlieren. Seien Sie also vorsichtig oder vermeiden Sie diese Neustartoption.


Dort finden Sie auch den Code, der den emmc-Systembereich in den Modus versetzt. Die Antwort auf die Frage, warum die Wiederherstellung nicht überschrieben werden kann. Dieser Schutz kann vom Linux-Kernel deaktiviert werden, indem ein entsprechendes Kernel-Modul geschrieben wird. Alles wurde bereits von einem Freund aus dem Land der aufgehenden Sonne geschrieben, der ungleichmäßig in Richtung der Telefone der Firma Kyocera zu atmen scheint. Das Modul hat beim ersten Mal nicht funktioniert, manchmal hängt es mmc im Claim-Modus. Vielleicht ist nicht alles so eindeutig und es bedarf einer detaillierten Recherche.


So wird die Signatur der Bootpartitionen überprüft:

Erste Erfolge

dmesg

Google hat mir geholfen, die Frage zu beantworten, warum ich die Kernel-Logs nicht lesen kann: /proc/sys/kernel/dmesg_restrict. Der Wert dieses Parameters wird beim Hochfahren des Telefons auf 1 gesetzt. Wenn der Benutzer nicht hat CAP_SYS_ADMIN die Protokolle stehen ihm nicht zur Verfügung.

uevent_helper

In meinem Fall war es überraschenderweise möglich, /sys/kernel/uevent_helper. Wenn Sie in diesen Parameter den Pfad zur ausführbaren Datei schreiben (das Shell-Skript funktioniert auch), dann wird es in einem bestimmten Intervall vom Init-Prozess im Init-Kontext und vor allem mit vollem Leistungsumfang gestartet.


Ich habe ein Skript geschrieben:


#! / system / bin / sh echo 0> / proc / sys / kernel / dmesg_restrict

Habe es auf das Telefon heruntergeladen und seinen Pfad zu /sys/kernel/uevent_helper geschrieben. Ich habe jetzt die Möglichkeit, dmesg zu sehen!

Gepatchtes Add-On


Denn Ich habe es satt, Zugriff auf die abgespeckte Android-Konsole zu haben, und ich bin zu faul, die adbd-Binärdatei zu patchen, also habe ich beschlossen, meine adbd mit Blackjack und Huren zu bauen. Um dies zu tun, musste ich 70 GB Android-Quellen herunterladen, um nicht mit jeder Abhängigkeit separat herumzuspielen. Die Prüfung auf Schneidfähigkeiten entfernt, kompiliert, /sbin /adbd geändert und eine vollwertige Root-Konsole erhalten. Jetzt kann ich Dateisysteme mounten, dmesg ansehen, ohne die Verbindung zu trennen dmesg_restrict, unbemerkt Dateien anzeigen und bearbeiten, die nicht im Besitz von root sind, und mehr. Aber ich kann die / Systempartition noch nicht mounten und Module in den Kernel laden.


Dieses Verfahren kann übrigens vermieden werden, indem man lsh kompiliert und seinen Pfad in /sys/kernel/uevent_helper ersetzt. Es ist wünschenswert, den lsh-Start in ein Skript einzuschließen, das die PATH-Umgebung festlegt, andernfalls müssen Sie den vollständigen Pfad zu jedem Befehl angeben.

W-lan

WLAN in meinem Telefon funktioniert über das Kernelmodul. WLAN ist an - das Modul ist geladen. WLAN aus - das Modul ist entladen. Wenn Sie das Modul durch ein eigenes ersetzen, sollte das gefälschte Modul beim Einschalten von WLAN geladen werden. Zu meinem Glück Digitale Unterschrift Module wurden nicht überprüft. Das erste, was ich versucht habe, war das Erstellen und Laden eines Moduls, das SELinux deaktiviert, indem der Kernel-Speicher durch Amazon Fire Phone ersetzt wird: https://github.com/chaosmaster/ford_selinux_permissive


Um ein Modul zu bauen, benötigen Sie mehr oder weniger geeignete Kernelquellen und die Datei Module.symvers. Wenn die Quellen genau mit dem auf dem Telefon verwendeten Kernel übereinstimmen, sollten die Module.symvers, die beim Erstellen des Kernels automatisch generiert werden, den Zweck erfüllen.


Wenn der Kernel beim Laden eines Moduls flucht ( ist nicht einverstanden mit der Version des Symbols module_layout), müssen Sie Module.symvers aus dem Boot-Abschnitt extrahieren. Dies kann mit dem Skript https://github.com/glandium/extract-symvers erfolgen:


$ unpackbootimg -i boot.img -o boot $ Extract-symvers.py -e le -B 0xc0008000 boot / boot.img-zImage>% PATH_TO_KERNEL% / Module.symvers

Sie können Ihr Modul für das Kyocera-Telefon nicht einfach mitnehmen und zusammenbauen.




Mit jeder Lösung des nächsten Problems gleicht der Vorgang mehr und mehr der Aporie über Achilles und die Schildkröte. Ich weiß nicht, wie lange meine Begeisterung anhält. Vielleicht gibt es hier sachkundige Leute, die Ihnen helfen können, den Grund des Kaninchenbaus zu erreichen.


Bei dieser Gelegenheit bedanke ich mich bei den Entwicklern von Kyocera für die hervorragenden Geräte und deren Schutz. Sonst würde es diesen Artikel nicht geben. Andererseits ist das Fehlen regelmäßiger Updates sehr frustrierend. Wenn Sie ein Telefonmodell mit der Möglichkeit haben, den Bootloader zu entsperren, werde ich es auf jeden Fall kaufen.


PS Vielen Dank an Nikolay Elenkov, Autor von Android-Sicherheitsinterna. Seine Erklärung, wie der Bootloader funktioniert, "hat aber geholfen, den Android-Boot-Prozess zu verstehen.


P.P.S. Ein weiterer Spezialist für mobile Informationssicherheit, Justin Case, sagte, er kenne die Schwachstelle, der alle modernen Qualcomm-Prozessoren ausgesetzt sind, aber er wird keine Details preisgeben.

Stichworte:

  • Android
  • bootloader Anonym einreichen

Problem
Bei all seinen Vorzügen gehört der PCI-Bus der Vergangenheit an. In den meisten Fällen möchten Sie eine Liste aller Geräte im System erhalten, nicht nur PCI-Geräte: Dies ist USB-Geräte,
und SCSI-Geräte, Speicherkonfiguration und sogar Prozessor.
Lösung
Verwenden Sie das dmesg-Programm. Das Programm listet alle vom Kernel erkannte Hardware auf.
Um alle dmesg-Ausgaben anzuzeigen, geben Sie den Befehl ein
$ dmesg | weniger
Die dmesg-Ausgabe kann auch gefiltert werden, um bestimmte zu finden
Geräte. Der folgende Befehl listet beispielsweise alle PCI-Geräte auf:
$ dmesg ich grep -i usb
ISA-Geräte auflisten:
$ dmesg] grep -i isa
isapnp: Suche nach PnP-Karten ...
isapnp: Eigenart des SB-Audiogeräts - Port-Reichweite erhöhen
isapnp: Karte "SupraExpress 56i Voice"
Ermitteln der Größe des physischen Speichers im System:
$ dmesg | grep -ich erinnerung
Speicher: 256492 / 262080k verfügbar (1467k Kernelcode.5204 reserviert.516k Daten.96k
drin. OK Highmem)
Auflisten von IDE-Geräten, die das SCSI-Emulations-Subsystem in 2.4 und älteren Kerneln verwenden:
$ dmesg | grep -i scsi
Kernel-Befehlszeile: root = /dev /hda6 ro hdb = scsi hdc = scsi
ide_setup: hdb = scsi
ide_setup: hdc = scsi

hdb: angehängter ide-scsi-Treiber
hdc: angehängter ide-scsi-Treiber
scsio: SCSI-Hostadapteremulation für IDE-ATAPI-Geräte
Und so sehen "echte", nicht emulierte SCST-Geräte aus:
$ dmesg | grep -i scsi
SCSI-Subsystemtreiber Revision: 1.00
scsiO: Adaptec AIC7XXX EISA / VLB / PCI SCSI HBA-TREIBER, Rev. 6.2.8
aic7892: Ultral60 Wide Channel A, SCSI-ID = 7. 32/253 SCBs
... Anbieter: IBM-PSG Modell: DPSS-336950M M Rev: S9HA
Angeschlossene SCSI-Festplatte sda ​​bei scsiO, Kanal 0. id 0. lun 0
(scsi0: A:0): 160.000MB/S-Übertragungen (80.000MHz DT. Offset 63.16bit)
SCSI-Gerät sda: 71096640 512 Byte hdwr-Sektoren (36401 MB)
Partitionsprüfung:
sda: sdal sda2sda3 sda4< sda5 sda6 >
Im Folgenden werden Informationen über die an das System angeschlossene USB-Kamera angezeigt, einschließlich
seine Position im Dateisystem. Normalerweise USB-Geräteinformationen
dauert zehn oder mehr Zeilen:
% dmesg | grep -i usb
. . .
usb.c: registrierte neue d r i v e r ibmcam
icmcam.c: IBM PC Camera USB-Kamera gefunden (Modell 2. rev.0x030a)
usbvideo.c: ibmcam auf / dev / videoO: canvas = 352x240 Videogröße = 352x240
Informationen zu seriellen Ports anzeigen:
$ dmesg | grep -i tty
ttySOO bei 0x03f8 (irq = 4) ist ein 16550A
Anzeigen von Informationen über den Prozessor (oder die Prozessoren):
$ dmesg | grep -i cpu
Initialisieren der CPU # 0
CPU: LI I Cache: 64K (64 Bytes / Zeile). D-Cache 64K (64 Byte / Zeile)
CPU: L2-Cache: 64K (64 Byte / Zeile)
Intel-Maschinenüberprüfungsbericht auf CPU # 0 aktiviert.
CPU: Nach generisch, Caps: 0183f9ff clc7f9ff 00000000 00000000
CPU: Gemeinsame Obergrenzen: 0183f9ff clc7f9ff 00000000 00000000
CPU: AMD Duron (tm) Prozessor Stepping 01
Bitte beachten Sie, dass die Suche nur die Strings zurückgibt, in denen der gewünschte Teilstring vorhanden ist. Oft sind zusätzliche Informationen enthalten
in benachbarten Zeilen und gefunden durch direkten Dateiscan:
Initialisieren der CPU # 0
Erkannter 801.446-MHz-Prozessor.

Quelle: Hardwaredetails Ihres Linux-Rechners finden, ohne einen Schraubendreher zu verwenden
Übersetzung: V. Kostromin, 11. Januar 2007

Vielen unerfahrenen Linux-Benutzern fällt es schwer, einige Eigenschaften der Hardware ihres Linux-Computers nur mit den in der Konsole (Befehlszeile) verfügbaren Befehlen zu ermitteln. Grafische Shells haben in letzter Zeit spezielle Dienstprogramme enthalten, die solche Informationen in einer ziemlich bequemen Form bereitstellen. Sie stehen Administratoren und Heimanwendern jedoch nicht immer zur Verfügung.

In diesem kurzen Tutorial zeigen wir Ihnen, wie Sie die Spezifikation Ihres Linux-Computers über die Befehlszeile abrufen. Nachdem Sie dieses Handbuch zu Ende gelesen haben, erhalten Sie innerhalb einer Minute eine vollständige Liste aller Komponenten Ihres Computers mit ihren Eigenschaften. Dies kann Ihnen zum Beispiel bei der Suche helfen erforderliche Treiber und Support-Adressen für Ihre Geräte.

Teil 1: Abrufen von Hardwareinformationen mit dem Befehl lspci

Dienstprogramm lspci dient zur Anzeige von Informationen über alle PCI-Busse im System sowie über alle an diese Busse angeschlossenen Geräte. Standardmäßig wird eine kurze Liste solcher Geräte angezeigt. Sie können jedoch zahlreiche Optionen verwenden lspci für nähere Informationen oder Informationen, die auf die spätere Verarbeitung mit anderen Programmen ausgerichtet sind.

# / sbin / lspci
00: 00.0 Host-Bridge: Intel Corporation 82865G / PE / P DRAM-Controller / Host-Hub-Schnittstelle (Rev 02)
00: 02.0 VGA-kompatibler Controller: Intel Corporation 82865G Integrated Graphics Controller (Rev 02)
00: 1d.0 USB-Controller: Intel Corporation 82801EB / ER (ICH5 / ICH5R) USB-UHCI-Controller Nr. 1 (Rev 02)
00: 1e.0 PCI-Bridge: Intel Corporation 82801 PCI-Bridge (Rev c2)
00: 1f.1 IDE-Schnittstelle: Intel Corporation 82801EB / ER (ICH5 / ICH5R) IDE-Controller (Rev 02)
03: 08.0 Ethernet-Controller: Intel Corporation 82562EZ 10/100 Ethernet-Controller (Rev 02)
....

Jetzt weiß ich, dass ich einen Intel Corporation 82865G Integrated Graphics Controller Grafikchip habe und im Internet nach einem Treiber dafür suchen kann. Sehen wir uns an, welche Informationen die diesem Chip entsprechende Zeile enthält:

Sie können die Optionen -v oder -vv verwenden, um weitere Informationen zu erhalten. Zum Beispiel, als ich den Befehl gab lspci -v, ich habe folgendes Ergebnis erhalten:

00: 02.0 VGA-kompatibler Controller: Intel Corporation 82865G Integrated Graphics Controller (Rev 02) (prog-if 00)
Subsystem: IBM Unbekanntes Gerät 0285
Flags: Busmaster, Fast Devsel, Latenz 0, IRQ 185
Speicher bei f0000000 (32-Bit, vorabrufbar)
Speicher bei e8000000 (32-Bit, nicht vorabrufbar)
I/O-Ports bei 1800
Funktionen: Power Management Version 1

Dienstprogramm lspci liest zuerst Informationen vom PCI-Bus und sucht dann nach zusätzlichen Informationen in seiner eigenen Datenbank, die sich in der Datei befindet /usr/share/hwdata/pci.ids und enthält Daten wie Geräte-ID, Hersteller, Geräte, Klassen und Unterklassen. Team

# cat /usr/share/hwdata/pci.ids | grep "82865G Integrierter Grafikcontroller"
82865G Integrierter Grafikcontroller

ermöglicht Ihnen sicherzustellen, dass unser Gerät auch in dieser Datenbank enthalten ist. Diese Geräteliste wird auf der Seite unterstützt, und Sie können das Dienstprogramm verwenden update-pciids um die neueste Version davon zu erhalten.

Teil 2: Abrufen von Hardwareinformationen mit dem Befehl dmesg

Team dmesg Wird häufig unter Linux verwendet, um den Inhalt des Ringpuffers des Kernels anzuzeigen. Es ermöglicht dem Benutzer, den Inhalt von Nachrichten anzuzeigen, die während des Systemstartvorgangs generiert wurden.

Dienstprogramm lspci hilft sehr bei der Erkennung von PCI-Geräten, jedoch benötigen wir oft eine Liste aller Geräte im System. Verwenden von dmesg Wir können die Eigenschaften aller Geräte anzeigen, die von unserem Betriebssystem erkannt werden.

# dmesg | weniger
Normaler Bereich: 59248 Seiten, LIFO-Stapel: 15
DMI vorhanden.
Zuweisung von PCI-Ressourcen ab 20.000.000 (Lücke: 10.000.000: eec00000)
Erkannter 2793.055-MHz-Prozessor.
1 Zonenlisten erstellt. Gesamtseiten: 63344
Kernel-Befehlszeile: ro root = / dev / VolGroup00 / LogVol00 rhgb quiet
Schnelles Speichern und Wiederherstellen der FPU aktivieren ... fertig.
Initialisieren der CPU # 0
CPU 0 irqstacks, hart = c07ae000 weich = c078e000

.....

Wie du sehen kannst dmesg produziert viele Daten, also müssen Sie verwenden grep um die Ausgabe auf genau die Daten zu beschränken, an denen wir interessiert sind. Angenommen, in dieser Moment Uns interessieren Informationen über den im System verbauten Speicher.

# dmesg | grep -ich erinnerung
Speicher: 244136k / 253376k verfügbar (2139k Kernelcode, 8732k reserviert, 866k Daten, 240k Init, 0k Highmem)
Initrd-Speicher freigeben: 2124k freigegeben
Insgesamt zugewiesener HugeTLB-Speicher, 0
Treiber für nichtflüchtigen Speicher v1.2
agpgart: 8060K gestohlener Speicher erkannt.
Freigeben von ungenutztem Kernel-Speicher: 240k freigegeben
.....

Auf ähnliche Weise können Sie Informationen zu jedem Gerät isolieren, das Sie interessiert oder mit dem Sie derzeit Probleme haben, zum Beispiel über Zentraleinheit(CPU), USB-Geräte usw.

Teil 3: Hardwareinformationen von / proc . abrufen

Manchmal möchten Sie möglicherweise Echtzeitinformationen über RAM oder CPU auf einem laufenden System abrufen. Dazu können Sie das virtuelle Dateisystem verwenden / proc... Vielleicht erinnern Sie sich an das Dienstprogramm oben, aber beachten Sie, dass es nur Daten aus dem Dateisystem liest / proc... Denken Sie nur daran, keine Änderungen an den Dateien im Verzeichnis vorzunehmen / proc, Sie können nur den Befehl verwenden Katze um diese Dateien anzuzeigen.

Durch Ausführen des Befehls ls im Katalog / proc, sehen Sie verschiedene Verzeichnisse und Dateien, die Informationen über Ihr System enthalten.

Sehen wir uns an, was diese Dateien enthalten, beginnend zum Beispiel mit cpuinfo.

# cat / proc / cpuinfo
Prozessor: 0
Vendor_id: GenuineIntel
CPU-Familie: 15
Modell: 2
Modellname: Intel (R) Pentium (R) 4 CPU 2,80 GHz
Schritt: 9
CPU-MHz: 2793.055
Cache-Größe: 512 KB
....

Werfen wir einen tieferen Blick und öffnen Sie einen Ordner. Gehen wir zum Beispiel zum Ordner idee und lesen Sie die Informationen zu meiner Festplatte.

# cat / proc / ide / ide0 / hda / driver
ide-disk-version 1.18
# cat / proc / ide / ide0 / hda / capacity
78156288
# cat / proc / ide / ide0 / hda / model
IC35L060AVV207-0

Teil 4: Erhalten Sie mehr Informationen über Ihre Festplatte mit fdisk

Im vorherigen Schritt mit / proc, erhielten wir nur grundlegende, aber eher begrenzte Informationen über die Parameter unserer Festplatte. Lassen Sie uns nun mit dem in Linux verfügbaren Befehl vollständigere Daten erhalten fdisk... Mit seiner Hilfe können Sie Informationen über Festplattenpartitionen, verfügbaren Speicherplatz, belegten Speicherplatz, Swap und vieles mehr abrufen.

Programm fdisk ist ein Werkzeug zum Arbeiten mit einer Festplattenpartitionierungstabelle. Physische Festplatten werden normalerweise in mehrere logische Laufwerke aufgeteilt, die als Festplattenpartitionen bezeichnet werden. Partitionierungsinformationen für eine physische Festplatte werden in der Fegespeichert, die sich im Nullsektor der physischen Festplatte befindet.

Um zu sehen, welche Partitionen Ihre Festplatte hat, geben Sie einfach den Befehl ein:

# fdisk -l
Festplatte/dev/hda: 40,0 GB, 40016019456 Byte
255 Köpfe, 63 Sektoren / Spur, 4865 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Device Boot Start End Blocks ID System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 4865 38973690 8e Linux LVM

Wenn Sie zwei oder mehr Festplatten haben (z. B. hda und hdb) und Daten zu einer bestimmten Festplatte abrufen möchten, geben Sie die gewünschte Festplatte im Befehl an, z. fdisk -l / dev / hda

Teil 5 (HINZUGEFÜGT basierend auf Leser-Feedback): Ausgabe von BIOS-Informationen mit dem Befehl dmidecode

Dienstprogramm dmidecode zeigt den Inhalt der DMI-Tabelle (Desktop Management Interface) Ihres Systems in einem für Menschen lesbaren Format an. Diese Tabelle enthält Informationen zu den Systemhardwarekomponenten, Informationen zur BIOS-Version und mehr. Im Ausgang dmidecode enthält nicht nur eine Beschreibung der aktuellen Systemkonfiguration, sondern liefert auch Daten zu den maximal zulässigen Parameterwerten, beispielsweise den unterstützten CPU-Betriebsfrequenzen, der maximal möglichen Speichergröße usw.

Wenn ich die Ausgabe nur auf bestimmte Bereiche des DMI beschränken möchte, kann ich dies mit der Option ─ t und geben Sie an, an welcher Art von Informationen ich interessiert bin. Prozessorinformationen sind beispielsweise Typ 4 und Speicherinformationen sind Typ 17 in DMI.

Ich hoffe, dieser Leitfaden wird Ihnen auf die gleiche Weise helfen, wie er einem Freund von mir geholfen hat, der MythTV auf einem Fedora-basierten System installiert und seinen Computer geöffnet hat, bevor er diesen Leitfaden liest, um die Parameter einiger Geräte bestimmen zu können :)

Aus den Antworten der Leser

Hardwaredetails finden, ohne einen Schraubendreher zu verwenden

Danke für einen tollen und sehr informativen Artikel. Jetzt kann ich endlich den Gehäusedeckel an meinem Computer schließen :-)
TonyH

Versuchen Sie es mit DMIDECODE

Mit dmidecode erhalten Sie viel mehr Informationen in einem Bericht.
Ohne Unterschrift

Es ist tatsächlich möglich, viel mehr darüber herauszufinden, welchen Speichertyp Ihr ​​Computer verwendet, z. Pins und Geschwindigkeit und Typ ...
Wenn ich zum Beispiel bei der Arbeit bin und mich aus der Ferne bei meinem Heimcomputer anmelden kann, kann ich dann genügend Daten sammeln, um festzustellen, ob mein Arbeitsspeicher aufgerüstet werden kann ...?
Ich habe dies einmal versucht und konnte es nicht - ich war der Lösung dieses Problems ziemlich nahe gekommen, ich hatte nur zwei Optionen zur Auswahl für den Chipsatztyp Hauptplatine, ich habe zufällig eine davon ausgewählt und ... nicht erraten :-( !!
Ohne Unterschrift

Versuchen Sie etwas anderes!

lshw ist ein tolles Werkzeug dafür.
Es gibt auch eine GTK-Schnittstelle dafür.
Ohne Unterschrift

Andere gute Dienstprogramme

Versuche noch einmal dmidecode... Auf RedHat / Fedora-basierten Systemen befindet es sich normalerweise im Verzeichnis /usr/sbin und ist auch über portage oder in . erhältlich Quellcodes(www.nongnu.org/dmidecode/). Sie wird Ihnen viel über Ihr System erzählen.

Für Informationen zu Discs können Sie schlau und smartctl.

Christopher Arnold (arnoldch bei yahoo-inc DOT com)

lsusb- und / sys-Dateisystem

Denken Sie daran, das Dateisystem zu durchsuchen /sys... In gewisser Weise können die Informationen redundant sein ... aber nicht alle.

Um USB-Geräte zu erkennen, gibt es lsusb.

Sensoren wird Details zu Ihrem RAM-Chip preisgeben.

dmesg: Manchmal werden Informationen mit neueren Kernel-Meldungen überschrieben. Wenn ja, schau /var/log/boot.log.

Auf SUSE-Systemen: Sie haben ein Tool namens "yast2" zum Ausführen allgemeiner Verwaltungsaufgaben. Es gibt auch Informationen über die Hardware.

Ohne Unterschrift

Was ist mit dmidecode?

Entnommen aus der Manpage auf dmidecode.

dmidecode ist ein Tool zum Anzeigen des Inhalts der DMI-Tabelle (manchmal auch SMBIOS-Tabellen genannt) Ihres Computers in einem für Menschen lesbaren Format. Diese Tabelle enthält eine Beschreibung der Hardwarekomponenten des Systems sowie weitere nützliche Informationen, wie z Seriennummer und BIOS-Version.

dmidecode

Bietet Bios-Informationen zu einem laufenden Betriebssystem.
Funktioniert nicht auf allen Hardwareplattformen.

Ohne Unterschrift

Noch

suchen lshw und dmidecode

Ohne Unterschrift

Noch eine...

Vergiss nicht lsusb! Ein sehr nützliches Dienstprogramm. Einfach das Paket installieren usbutils von ihrer Distribution (zumindest in Ubuntu und Fedora, wahrscheinlich auch in anderen).

Ohne Unterschrift

hdparm

Um zu bekommen genaue InformationÖ Festplatte kann verwendet werden hdparm.

Ohne Unterschrift

Was ist mit HAL?

Erwähnenswert ist auch, dass bei Verwendung einer modernen Desktop-Umgebung der Befehl lshal wird viele Informationen aus dem HAL (dem Hardware Abstraction Layer, also dem Utopia-Projekt) liefern.

Ohne Unterschrift

lshw

Sie können auch das Dienstprogramm verwenden lshw, mit dem Sie Informationen aus all diesen Quellen in Form einer einzigen Liste anzeigen können (Sie können sie anzeigen).

Systemadministratoren sowie normale Linux-Benutzer müssen häufig die Protokolldateien zur Fehlerbehebung einsehen. Tatsächlich ist dies das Erste, was ein Systemadministrator tun sollte, wenn ein Fehler auf dem System auftritt.

Selbst operationssystem Linux und laufende Anwendungen generieren verschiedene Typen Meldungen, die in verschiedenen Logfiles protokolliert werden. Linux verwendet spezielle Software, Dateien und Verzeichnisse, um Protokolldateien zu speichern. Wenn Sie wissen, in welchen Dateien sich die Protokolle welcher Programme befinden, können Sie Zeit sparen und das Problem schneller lösen.

In diesem Artikel werden wir uns die Hauptbestandteile des Linux-Protokollierungssystems, Protokolldateien sowie Dienstprogramme ansehen, mit denen Sie Linux-Protokolle anzeigen können.

Die meisten Linux-Protokolldateien befinden sich im Ordner /var/log/. Sie können die Protokolldateien für Ihr System mit dem Befehl ls auflisten:

Rw-r - r-- 1 Wurzel Wurzel 52198 10. Mai 11:03 alternatives.log
drwxr-x --- 2 root root 4096 14. November 15:07 apache2
drwxr-xr-x 2 root root 4096 25. April 12:31 Uhr apparmor
drwx ------ 2 root root 4096 5. Mai 10:15 Audit
-rw-r - r-- 1 root root 33100 10. Mai 10:33 boot.log

Im Folgenden werfen wir einen Blick auf 20 verschiedene Linux-Logdateien, die sich im Verzeichnis /var/log/ befinden. Einige dieser Protokolle sind nur auf bestimmten Distributionen zu finden, zum Beispiel ist dpkg.log nur auf Debian-basierten Systemen zu finden.

/ var / log / Nachrichten- enthält globale Linux-Systemprotokolle, einschließlich der Protokolle, die beim Systemstart registriert werden. In dieses Protokoll werden verschiedene Arten von Nachrichten geschrieben: Mail, Cron, verschiedene Dienste, Kernel, Authentifizierung und andere.

/var/log/dmesg- enthält vom Kernel empfangene Nachrichten. Protokolliert viele Meldungen während der Bootphase, sie zeigen Informationen über die Hardwaregeräte an, die während des Bootvorgangs initialisiert werden. Wir können sagen, dass dies ein weiteres Protokoll des Linux-Systems ist. Die Anzahl der Nachrichten im Protokoll ist begrenzt, und wenn die Datei voll ist, werden die alten mit jeder neuen Nachricht überschrieben. Sie können die Nachrichten aus diesem Protokoll auch mit dem Befehl dmseg anzeigen.

/var/log/auth.log- enthält Informationen über die Autorisierung von Benutzern im System, einschließlich der verwendeten Benutzeranmeldungen und Authentifizierungsmechanismen.

/var/log/boot.log- Enthält Informationen, die beim Systemstart protokolliert werden.

/var/log/daemon.log- Enthält Nachrichten von verschiedenen Hintergrund-Daemons

/var/log/kern.log- Enthält auch Meldungen vom Kernel, die bei der Fehlerbehebung von benutzerdefinierten Modulen, die in den Kernel eingebaut sind, nützlich sind.

/var/log/lastlog- Zeigt Informationen über die letzte Sitzung aller Benutzer an. Dies ist eine Nicht-Textdatei. Sie müssen den Befehl lastlog verwenden, um sie anzuzeigen.

/var/log/maillog /var/log/mail.log- Protokolle des auf dem System laufenden E-Mail-Servers.

/var/log/user.log- Informationen aus allen Protokollen auf Benutzerebene.

/var/log/Xorg.x.log- X-Server-Nachrichtenprotokoll.

/var/log/alternatives.log- Informationen zu den Programm-Update-Alternativen. Dies sind standardmäßig symbolische Links zu Befehlen oder Bibliotheken.

/var/log/btmp- Protokoll Linux-Datei enthält Informationen zu fehlgeschlagenen Anmeldeversuchen. Es ist praktisch, den letzten Befehl -f / var / log / btmp zu verwenden, um die Datei anzuzeigen.

/ var / log / Tassen- Alle Meldungen zu Drucken und Druckern.

/var/log/anaconda.log- alle während der Installation registrierten Nachrichten werden in dieser Datei gespeichert

/var/log/yum.log- protokolliert alle Informationen über die Installation von Paketen mit Yum.

/var/log/cron- Immer wenn der Cron-Daemon mit der Ausführung eines Programms beginnt, schreibt er den Bericht und die Meldungen des Programms selbst in diese Datei.

/ var / log / sicher- enthält Informationen zur Authentifizierung und Autorisierung. SSHd protokolliert hier beispielsweise alles, einschließlich fehlgeschlagener Anmeldeversuche.

/var/log/wtmp oder /var/log/utmp - Linux-Systemprotokolle , enthalten ein Protokoll der Benutzeranmeldungen. Mit dem Befehl wtmp können Sie herausfinden, wer sich wann angemeldet hat.

/var/log/faillog- Linux-Systemprotokoll, enthält erfolglose Anmeldeversuche. Verwenden Sie den Befehl faillog, um den Inhalt dieser Datei anzuzeigen.

/var/log/mysqld.log- Linux-Protokolldateien vom MySQL-Datenbankserver.

/var/log/httpd/ oder /var/log/apache2- linux11-Logdateien des Apache-Webservers. Zugriffsprotokolle befinden sich in der Datei access_log und Fehler in error_log

/var/log/lighttpd/- lighttpd-Webserver-Linux-Protokolle

/var/log/conman/- Logdateien des ConMan-Clients,

/var/log/mail/- Dieses Verzeichnis enthält zusätzliche Mailserver-Logs

/var/log/prelink/- Das Prelink-Programm verknüpft Bibliotheken und ausführbare Dateien, um deren Ladevorgang zu beschleunigen. /var/log/prelink/prelink.log enthält Informationen über die .so-Dateien, die vom Programm geändert wurden.

/var/log/audit/- Enthält vom auditd-Daemon generierte Informationen.

/var/log/setroubleshoot / - SE Linux verwendet den Dämon setroubleshootd (SE Trouble Shoot Daemon), um Sicherheitsprobleme zu melden. Dieses Protokoll enthält Nachrichten von diesem Programm.

/var/log/samba/- enthält Informationen und Protokolle des Samba-Dateiservers, mit dem eine Verbindung hergestellt wird geteilte Ordner Fenster.

/var/log/sa/- Enthält .cap-Dateien, die vom Sysstat-Paket kompiliert wurden.

/var/log/sssd/- Wird vom Systemsicherheits-Daemon verwendet, der steuert Fernzugriff zu Verzeichnissen und Authentifizierungsmechanismen.

Anzeigen von Protokollen unter Linux

Um die Protokolle unter Linux anzuzeigen, ist es praktisch, mehrere Befehlszeilen-Dienstprogramme zu verwenden Linux-Strings... Dies kann ein beliebiger Texteditor oder ein spezielles Dienstprogramm sein. Höchstwahrscheinlich benötigen Sie Superuser-Rechte, um die Protokolle unter Linux anzuzeigen. Hier sind die Befehle, die zu diesem Zweck am häufigsten verwendet werden:

  • zgrep
  • zmore

Ich werde nicht auf jeden dieser Befehle im Detail eingehen, da die meisten von ihnen bereits ausführlich auf unserer Site besprochen wurden. Aber ich gebe Ihnen ein paar Beispiele. Das Anzeigen von Linux-Logs ist sehr einfach:

Wir schauen uns log / var / log / Messages an, mit der Möglichkeit zum Scrollen:

weniger / var / log / Nachrichten

Zeigen Sie Linux-Protokolle in Echtzeit an:

tail -f / var / log / Nachrichten

Öffnen Sie die dmesg-Protokolldatei:

cat / var / log / dmesg

Erste Zeilen von dmesg:

Kopf / var / log / dmesg

Wir zeigen nur Fehler von /var/log/messages an:

grep -i Fehler / var / log / Nachrichten

Darüber hinaus können Sie die Protokolle unter Linux mit grafischen Dienstprogrammen anzeigen. Systemprogramm Log Viewer kann zur einfachen Anzeige und Verfolgung verwendet werden Systemprotokolle auf einem Laptop oder persönlicher Computer mit Linux.

Sie können das Programm auf jedem System installieren, auf dem ein X-Server installiert ist. Außerdem kann jeder grafische Testeditor verwendet werden, um die Protokolle anzuzeigen.

Schlussfolgerungen

Im Verzeichnis /var/log finden Sie alle nötigen Informationen zu mit Linux... Aus dem heutigen Artikel haben Sie genug gelernt, um zu wissen, wo Sie suchen müssen und wonach Sie suchen müssen. Das Anzeigen der Protokolle unter Linux wird Ihnen jetzt keine Probleme bereiten. Wenn Sie Fragen haben, stellen Sie diese in den Kommentaren!

In der Boot-Phase können viele Fehler bei Diensten oder Geräten auftreten. Das Anzeigen dieser Nachrichten kann sehr nützlich sein, aber sie werden sehr schnell ausgeführt und wir haben möglicherweise nicht immer Zeit, sie zu lesen. Aber sie können alle mit dem Befehl angezeigt werden dmesg.

Dmesg - was ist dieses Dienstprogramm und wofür wird es verwendet?

Während des Systemstarts, während der Kernel geladen wird, werden das Initialisierungssystem, die Treiber, die Kernelmodule, die Hardware initialisiert, eine große Anzahl von Meldungen wird auf dem Bildschirm angezeigt, die Informationen über den Zustand des Kernels, den Bootvorgang und die Zustand der Geräte.

In der Boot-Phase können viele Fehler bei Diensten oder Geräten auftreten. Das Anzeigen dieser Nachrichten kann sehr nützlich sein, aber sie werden sehr schnell ausgeführt und wir haben möglicherweise nicht immer Zeit, sie zu lesen. Sie können jedoch alle mit dem Befehl dmesg angezeigt werden.

1. Anzeigen von Nachrichten während des Downloads

Wenn Sie den Befehl dmesg als Superuser ausführen, erhalten Sie alle Nachrichten, die der Kernel beim Booten ausgegeben hat. Hier finden Sie viele nützliche Informationen. Sie können sie nur Zeile für Zeile ansehen und versuchen, herauszufinden, was sie bedeuten. Da Sie nun wissen, wie die Startmeldungen aussehen, können Sie viele Probleme problemlos lösen, falls sie auftreten.

$ dmesg | mehr [0.000000] Microcode: CPU0 Microcode früh aktualisiert auf Revision 0x29, Datum = 2013-06-12 [0.000000] cgroup subsys cpuset initialisieren [0.000000] cgroup subsys cpu initialisieren [0.000000] cgroup subsys cpuacct initialisieren [0.000000] Linux Version 4.1. 20-11-default () (gcc Version 4.8.5 (SUSE Linux)) # 1 SMP PREEMPT Fr 18. März 14:42:07 UTC 2016 (0a392b2)

2. Speicher anzeigen

Mit dmesg können Sie sehen, wie viel Speicher auf dem System verfügbar ist:

$ dmesg | grep Speicher

0,000000] Speicher: 3848228K / 4006256K verfügbar (6567K Kernelcode, 1085K rwdata, 4852K Rodata, 1560K init, 1520K bss, 158028K reserviert, 0K cma-reserviert)

3. Anzeigen des Status von Netzwerkadaptern

Da alle Meldungen über den Gerätezustand in dmesg gespeichert werden, können wir den Zustand des Netzwerkadapters oder möglicherweise Fehler, die bei seiner Initialisierung aufgetreten sind, sehen:

$ dmesg | grep eth [101.043873] tg3 0000: 02: 00.0 eth0: Verbindung ist mit 100 Mbit/s aktiv, Vollduplex [101.043885] tg3 0000: 02: 00.0 eth0: Flusskontrolle ist aus für TX und aus für RX [101.043889] tg3 0000: 02 : 00.0 eth0: EEE ist deaktiviert [101.043909] IPv6: ADDRCONF (NETDEV_CHANGE): eth0: Link wird bereit

4. Ändern der Größe des dmesg-Puffers

Wenn Sie der Meinung sind, dass die standardmäßige dmesg-Puffergröße nicht ausreicht, können Sie die Größe ändern, um die Anzahl der Nachrichten zu erhöhen, die gleichzeitig vorhanden sein können. Bearbeiten Sie dazu einfach die Datei und starten Sie Ihren Computer neu.

$ vi /boot/config-4.1.20-11-default CONFIG_LOG_BUF_SHIFT = 18

Ändern Sie den Wert des Parameters dieser Zeile auf den gewünschten Wert, standardmäßig verwende ich 18, was bedeutet, dass ein Puffer von 18 Kilobyte erstellt wird. Sie können jedoch die gewünschte Puffergröße angeben.

5. dmesg-Puffer löschen

Manchmal müssen Sie möglicherweise den Dmesg-Puffer löschen, damit unnötige Nachrichten nicht durcheinander gebracht werden. Dies können Sie mit dem folgenden Befehl tun:

$ dmesg -c

Wenn Sie jetzt den Befehl dmesg erneut ausführen, ist der Puffer leer.

6. Datum und Uhrzeit in dmesg

Wie Sie sehen, gibt es in dmesg standardmäßig keine Daten, es wird nur ein Label verwendet, der Zeitversatz vom Start des Downloads. Es ist aber auch möglich, das vollständige Datum und die Uhrzeit jeder Nachricht anzuzeigen. Sehen Sie sich dazu die Datei /var/log/kern.log an:

$ dmesg | grep "L2-Cache" 18. Okt 23:55:40 Ubuntu-Kernel: [0.014681] CPU: L2-Cache: 2048K

Damit alles funktioniert, muss der klogd-Dienst konfiguriert und gestartet werden.

7. Anzeigen von dmesg-Fehlern

Mit einer so einfachen Kombination können Sie alle Fehler sehen, die während des Bootens oder des Systembetriebs aufgetreten sind:

$ dmesg | grep-Fehler

Schauen wir uns ein kleines Beispiel an. Nehmen wir an, mein WLAN funktioniert nicht. Ich weiß, dass sich der Adapter im Computer befindet, er eingeschaltet ist und alles unter Windows funktioniert. Aber jetzt geht es nicht. Wir schauen uns das dmesg-Protokoll an und sehen:

[21.772824] b43-phy0 FEHLER: Firmware-Datei "b43 / ucode15.fw" nicht gefunden [21.772842] b43-phy0 FEHLER: Firmware-Datei "b43-open / ucode15.fw" nicht gefunden [21.772852] b43-phy0 FEHLER: Bitte öffnen ein Terminal und geben Sie den Befehl "sudo / usr / sbin / install_bcm43xx_firmware" ein, um die richtige Firmware für diese Treiberversion herunterzuladen. Gehen Sie für eine Offline-Installation zu und befolgen Sie die Anweisungen im Abschnitt "Firmware aus RPM-Paketen installieren".

Aus der Nachricht geht hervor, dass das Problem hier in der Firmware liegt, und das System sagt uns sogar, mit welchem ​​​​Befehl es gelöst werden kann oder wo man über die Einrichtung dieses Falls nachlesen und die erforderlichen Dateien herunterladen kann. Somit war das scheinbar unlösbare Problem in wenigen Minuten gelöst. Das Anzeigen von Linux-Protokollen ist sehr nützlich, vergessen Sie nicht, es zu verwenden. Das ist alles, wenn Sie Fragen haben, schreiben Sie in die Kommentare!