De Linux-kernel is een complex stuk techniek. Van opstart- naar runlevel 5 multi-user modus, initialiseert en beheert de Linux-kernel de bronnen van een pc, inclusief de processor, het geheugen, het netwerk, de video-uitgang en de lokale opslag. Omdat de kernel met al deze verschillende subsystemen en bronnen werkt, worden verschillende berichten op hoog niveau vastgelegd om systeembeheerders te laten weten wat het doet. Deze berichten kunnen worden bekeken met de opdracht " dmesg ". Het probleem is dat de uitvoer van de kernel complex en onbegrijpelijk kan lijken voor het ongetrainde oog. Met een beetje hulp bij het begrijpen van de basisprincipes, kan de opdracht " dmesg " een zeer krachtig hulpmiddel worden in de toolset van een systeembeheerder.

Bagageruimte

De snelste manier om meer te weten te komen over kernelberichten is om de eerste paar regels van het opstartproces te bekijken. Gebruik de volgende opdracht om de eerste pagina met uitvoer weer te geven:

 dmesg | minder 

De eerste drie regels zijn waarschijnlijk over de initialisatie van de "Controlegroepen" voor de processor. Deze zijn niet zo interessant, tenzij je een kernel-hacker bent. De volgende regel is echter erg belangrijk. Het zal je vertellen welke versie van de Linux kernel je gebruikt.

De uitvoer op mijn testmachine luidt als volgt:

 Linux-versie 3.13.0-24-generiek (buildd @ roseapple) (gcc-versie 4.8.2 (Ubuntu 4.8.2-19ubuntu1)) # 46-Ubuntu SMP do 10 april 19:08:14 UTC 2014 (Ubuntu 3.13.0- 24.46-generiek 3.13.9) 

Wat dit me vertelt is dat mijn testmachine Linux kernel 3.13 draait, die op 10 april 2014 door Ubuntu is samengesteld.

De volgende 80 tot 100 regels zijn allemaal details op laag niveau over het BIOS, de CPU en het geheugen. De volgende belangrijke regel is de samenvatting van het systeemgeheugen. Het begint altijd met "Geheugen:". Op mijn testmachine is de uitvoer:

 Geheugen: 1525720K / 1572408K beschikbaar (6507K kernelcode, 641K rwdata, 2752K rodata, 872K init, 924K bss, 46688K gereserveerd, 659400K highmem) 

Het getal na de schuine streep is de totale hoeveelheid systeemgeheugen die toegankelijk is voor de Linux-kernel, in dit geval 1, 5 GB. Op dit punt is Linux bijna klaar met het kijken naar de processor en het geheugen, en het zal snel zijn aandacht richten op de rest van de machine, inclusief de video, de USB-poorten, de harde schijven enzovoort.

Hardware detectie

De kernel-uitvoer is ook een geweldige manier om te ontdekken hoe Linux interageert met de hardware op je pc. Om bijvoorbeeld te ontdekken welke harde schijven de kernel herkent, kunt u de berichten doorzoeken op het trefwoord "sda". Om dit te doen, gebruik " grep " als volgt:

 dmesg | grep sda 

"Sda" is de naam die wordt gegeven aan de eerste SATA-harde schijf, "sdb" is de tweede SATA-harde schijf enzovoort. Als u uw disks niet vindt onder "sda", "sdb" enz., Probeer dan "hda", "hdb" enzovoort.

Zoek naar "eth0" om informatie op de netwerkkaart te krijgen, bijvoorbeeld:

 dmesg | grep eth0 

Op mijn testmachine, toont één van de lijnen van "eth0" gerelateerde uitvoer:

 e1000 0000: 00: 03.0 eth0: Intel (R) PRO / 1000 netwerkverbinding 

Dit vertelt me ​​dat mijn Ethernet-kaart een Intel PRO / 1000 is (bekend als een e1000).

Als u een USB-flashstation plaatst en u wilt controleren of het door de kernel is herkend en aan welke apparaatnaam het is toegewezen, kunt u de laatste kernel-berichten met de tail :

 dmesg | staart -20 

De -20 geeft de tail aan om de laatste 20 regels uitvoer van dmesg te tonen. De voorbeelduitvoer laat zien dat een flashstation van ADATA in de USB-poort werd geplaatst, het heeft een capaciteit van 8GB en dat het de apparaatnaam van sdd .

dmesg kan een zeer nuttige tool zijn voor systeembeheerders. Probeer het eens en kijk wat u kunt leren over uw systeem. Als u vragen heeft, kunt u deze stellen in het gedeelte Opmerkingen en we zullen zien of we u kunnen helpen.