kernel logging

Antonis Valakas avalak at intracom.gr
Wed Feb 2 16:04:20 EET 2005


fs wrote:

>Προσπαθώ να καταλάβω το boot process στα 2.6 με hotplug/udev και kmod,
>και έχω τις εξής απορίες:
>
>- γίνεται να κάνουμε log όποτε το kernel/kmod καλεί το modprobe;
>
>
export MODPROBE_OPTIONS="-v"

...αλλά δεν κάνει log στο /dev/console.

>- log όποτε το kernel καλεί το hotplug;
>
>
Το hotplug είναι ένα σκριπτάκι και μάλιστα πολύ απλό... Δεν είναι τίποτα
να προσθέσεις κάτι σαν
# logger "$*"
για να δεις πως το καλεί ο kernel.

>ως τώρα στο syslog βλέπω:
>
>- όταν (και αν) kernel και modules κάνουν print κάτι στο /proc/kmsg (το
>οποίο διαβάζει το klogd).
>- όταν το udev φτιάχνει ή καταστρέφει συσκευές.
>- μηνύματα από τα agents του hotplug.
>
>
>

Τι δεν μπορείς να καταλάβεις ακριβώς; Χοντρικά, όταν ένα σύστημα
ανεβαίνει, γίνονται τα εξής:

- kernel structures initialization/device probing etc
- execution of init
Μέχρι εδώ ο kernel χρησιμοποιεί ένα ΣΤΑΤΙΚΟ /dev με τα standard device
nodes, όπως τα φτιάχνεις με το MAKEDEV generic. Αυτό χρειάζεται για να
έχεις το /dev/console και αλλα χρήσιμα device nodes ώστε να μπορεί να
τρέξει σωστά η init και το bash (το οποίο θα εκτελέσει τα startup
scripts μέχρι να αναλάβει το hotplug/udev).
- Mount /proc, /sysfs
- Mount tmpfs on /dev (άδειο, κρύβει το αρχικό /dev)
- Population του /dev από το udevstart/coldplug: Το udevstart διαβάζει
όλο το /sysfs και φτιάχνει τα αντίστοιχα device nodes μέσα στο /dev (πχ
hda, hdc, tty*, null, zero, sound etc) ενώ το coldplug φτιάχνει τις hot
plug συσκευές που είναι πάνω στο host (πχ USB memory sticks -> sga, sgb,
netmod -> ttyACM0 etc). ΠΡΟΕΡΑΙΤΙΚΑ γίνεται restore όλου του /dev από
κάποιο tarball που περιέχει τα device nodes από το προηγούμενο boot.
- Continue with regular boot process (mount filesystems etc)

Αυτό που διαφέρει από το παραδοσιακό στατικό /dev είναι ότι το /dev
αλλάζει δυναμικά όσο το σύστημα τρέχει. Οι αλλαγές δημιουργούνται κάπως
έτσι:

device attached/removed -> detection by kernel -> identification by
kernel -> execution of /sbin/hotplug with appropriate arguments ->
execution of appropriate hotplug script (udev) -> creation/deletion of
device node in /dev

Η διαφορά με το devfsd είναι ότι αυτό δεν γίνεται μέσα στον kernel, αλλά
από userspace process (που τρέχει σαν root).

Τώρα τελευταία με το DBUS, υπάρχει και η δυνατότητα το νέο device να
εμφανίζεται μέσω του udev σε όλο το DBUS του συστήματος, να ανιχνεύεται
από τυχόν desktop applications που τρέχουν και αυτόματα να ξεκινούν
process, πχ :Κουμπώνω την usb camera -> udev creates device node and
notifies DBUS -> gnome/kde application detects camera, fires up window
and notifies user

Τα παραπάνω ισχύουν για το gentoo, αλλά παρόμοια είναι η διαδικασία
φαντάζομαι και για τα υπόλοιπα είδη του οικοσυστήματος...

--

Antonis Valakas

Systems Consultant
Multiservice Networks - Intracom SA

email: avalak_at_intracom.gr

  www: www.intracom.gr


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20050202/46a5deb4/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20050202/46a5deb4/attachment.pgp>


More information about the Linux-greek-users mailing list