Erre több lehetőségünk is van. Az egyik legrégebbi eljárás, a soros porton keresztüli debugolás. Ezzel több problémánk is lehet. Kell hozzá egy speciális soros porti kábel (azt hiszem, hogy nevezik nullmodem kábelnek is). Ez nem minden esetben áll rendelkezésünkre. A másik dolog, ami a soros porti kábeles debug ellen szól az az, hogy fizikailag közel kell lennünk a géphez, a kábel maximális hossza miatt. Viszont van egy olyan lehetőség, amely minden hálózati környezetben használható. Ez nem más, mint a Molnár Ingo által fejlesztett netconsole.
Hogy mi is ez?
Molnár Ingo 2001. szeptemberében kezdte el a fejlesztését a netconsole-nak, az akkori 2.4-es kernelhez. A netconsole egy olyan kernel modul (amelyet nyilván célszerű fixen a kernelbe fordítani), amely lehetővé teszi a kernel ``printk'' üzeneteinek UDP protokollon, hálózaton keresztül történő továbbítását. Ezzel a módszerrel nagyszerűen lehet debugolni a diszkkel kapcsolatos hibákat akkor, ha a soros konzol használata nehézkes, vagy éppen lehetetlen. Ha a kód fixen a kernelbe van drótozva, akkor a netconsole a hálózati kártya inicializálása után azonnal aktiválódik. Mivel a hálózati kártyának működnie kell a használatához, a korai kernel panic-okat nem lehet vele debugolni, de majd az egész boot folyamatot figyelemmel kísérhetjük ezzel a módszerel. A netconsole nem csak a 2.4-es kernelhez használható, hanem mostantól Matt Mackall munkájának köszönhetően a 2.6.0-mm2 kerneltől kezdve a 2.6-os kernel sorozatban is bátran próbálkozhatunk vele.
A használata:
A kernel a bootolás folyamán a hálózati kártya és a TCP stack indítása után aktiválja a netconsole-t, amely UDP csomagokat küld a hálózati kártyán keresztül a hálózatra. Ezeket a csomagokat egy debugger munkaállomásról értelmezhetjük.
A beállítása a forrás gépen:
netconsole=[src-port]@[src-ip]/[< dev >],[tgt-port]@< tgt-ip >/[tgt-macaddr]
ahol:
src-port | az UDP csomagok forrás portja (alapértelmezetten 6666) |
src-ip | a forrás IP cím (a hálózati kártya IP címe) |
dev | hálózati csatoló (alapértelmezetten eth0) |
tgt-port | a logoló ügynök (logging agent) portja (alapértelmezetten 514) |
tgt-ip | a IP logoló ügynök IP címe |
tgt-macaddr | a logoló ügynök MAC address-sze (fizikai címe)( alapértelmezetten broadcast) |
Példa a használatra (boot időben):
Linux netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc
vagy futási időben modulból betöltve:
insmod netconsole netconsole=@/,@10.0.0.2/
Ha a netconsole él, akkor egy monitorozó gépről a ``netcat -u -l -p < port >'' használatával értelmezhetjük az üzeneteket. Vagy használhatjuk a syslogd-ot.
FIGYELEM: az alapértelemezett beállításokkal a netconsole ``broadcast'' üzeneteket (amit minden egyes hálózati tag megkap abban a hálózati szegmensben) küld, amely extrém nagy hálózati terhelést okozhat abban a szegmensben.
Használatának vannak határai, amelyek szerintem érthetőek, és elfogadhatóak: csak IP alapú hálózaton működik, csak UDP csomagokkal, és csak ethernet eszközökön keresztül.
Ezzel a debug módszerrel elmenthetjük a kernel panic-okat, nyugodtan elolvashatjuk a kernel által boot időben generált üzeneteket, amelyek elengedhetetlenek, ha elemezni akarjuk a kernelünk működését, vagy csak egyszerűen segítséget szeretnénk kérni / bugreportot akarunk küldeni.
Bővebb infó a netconsole-ról a 2.6.0-mm2 kerneltől kezdve a Documentation/networking/netconsole.txt állományban lehet találni.
Jó munkát!
- A hozzászóláshoz be kell jelentkezni
- 2367 megtekintés
Hozzászólások
Éppen tegnap forgattam itt 2.6.0-mm2 -öt, hátha megy vele az UML, de valamiért ezzel sem akarja az igazságot...
Nah, akkor találtam ezt az opciót, gyorsan be is tettem modulba... ahogy elnézem, megérte... :)
- A hozzászóláshoz be kell jelentkezni
Pozsynak van egy olyan patch-e, ami szerintem megoldja a boot kezdeten fellepo problemak logolasat:
https://svn.uhulinux.hu/packages/dev/kernel/patches/99-early_printk.patch
William Irwin - IBM
- A hozzászóláshoz be kell jelentkezni
jo vo'na tudni hogy mi ellen... :-)
- A hozzászóláshoz be kell jelentkezni
Az ellen nem véd. :))))
- A hozzászóláshoz be kell jelentkezni
ugy ertettem, hogy a patch hanyas kernelhez keszult, csak annyira bennem van az ``against'' szo, hogy azer' mondtam ``ellen''-t.
- A hozzászóláshoz be kell jelentkezni
Ez most hogyan jött fel a tracker -ben?
-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
- A hozzászóláshoz be kell jelentkezni