<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-7" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
fs wrote:
<blockquote cite="midpan.2005.02.02.13.07.11.998745@www0.org"
 type="cite">
  <pre wrap="">Προσπαθώ να καταλάβω το boot process στα 2.6 με hotplug/udev και kmod,
και έχω τις εξής απορίες:

- γίνεται να κάνουμε log όποτε το kernel/kmod καλεί το modprobe;
  </pre>
</blockquote>
export MODPROBE_OPTIONS="-v"<br>
<br>
...αλλά δεν κάνει log στο /dev/console.<br>
<blockquote cite="midpan.2005.02.02.13.07.11.998745@www0.org"
 type="cite">
  <pre wrap="">- log όποτε το kernel καλεί το hotplug;
  </pre>
</blockquote>
Το hotplug είναι ένα σκριπτάκι και μάλιστα πολύ απλό... Δεν είναι
τίποτα να προσθέσεις κάτι σαν<br>
# logger "$*"<br>
για να δεις πως το καλεί ο kernel.<br>
<br>
<blockquote cite="midpan.2005.02.02.13.07.11.998745@www0.org"
 type="cite">
  <pre wrap="">
ως τώρα στο syslog βλέπω:

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

  </pre>
</blockquote>
<br>
Τι δεν μπορείς να καταλάβεις ακριβώς; Χοντρικά, όταν ένα σύστημα
ανεβαίνει, γίνονται τα εξής:<br>
<br>
- kernel structures initialization/device probing etc<br>
- execution of init<br>
Μέχρι εδώ ο kernel χρησιμοποιεί ένα ΣΤΑΤΙΚΟ /dev με τα standard device
nodes, όπως τα φτιάχνεις με το MAKEDEV generic. Αυτό χρειάζεται για να
έχεις το /dev/console και αλλα χρήσιμα device nodes ώστε να μπορεί να
τρέξει σωστά η init και το bash (το οποίο θα εκτελέσει τα startup
scripts μέχρι να αναλάβει το hotplug/udev).<br>
- Mount /proc, /sysfs<br>
- Mount tmpfs on /dev (άδειο, κρύβει το αρχικό /dev)<br>
- Population του /dev από το udevstart/coldplug: Το udevstart διαβάζει
όλο το /sysfs και φτιάχνει τα αντίστοιχα device nodes μέσα στο /dev (πχ
hda, hdc, tty*, null, zero, sound etc) ενώ το coldplug φτιάχνει τις hot
plug συσκευές που είναι πάνω στο host (πχ USB memory sticks -&gt; sga,
sgb, netmod -&gt; ttyACM0 etc). ΠΡΟΕΡΑΙΤΙΚΑ γίνεται restore όλου του
/dev από κάποιο tarball που περιέχει τα device nodes από το προηγούμενο
boot.<br>
- Continue with regular boot process (mount filesystems etc)<br>
<br>
Αυτό που διαφέρει από το παραδοσιακό στατικό /dev είναι ότι το /dev
αλλάζει δυναμικά όσο το σύστημα τρέχει. Οι αλλαγές δημιουργούνται κάπως
έτσι:<br>
<br>
device attached/removed -&gt; detection by kernel -&gt; identification
by kernel -&gt; execution of /sbin/hotplug with appropriate arguments
-&gt; execution of appropriate hotplug script (udev) -&gt;
creation/deletion of device node in /dev<br>
<br>
Η διαφορά με το devfsd είναι ότι αυτό δεν γίνεται μέσα στον kernel,
αλλά από userspace process (που τρέχει σαν root).<br>
<br>
Τώρα τελευταία με το DBUS, υπάρχει και η δυνατότητα το νέο device να
εμφανίζεται μέσω του udev σε όλο το DBUS του συστήματος, να ανιχνεύεται
από τυχόν desktop applications που τρέχουν και αυτόματα να ξεκινούν
process, πχ :Κουμπώνω την usb camera -&gt; udev creates device node and
notifies DBUS -&gt; gnome/kde application detects camera, fires up
window and notifies user<br>
<br>
Τα παραπάνω ισχύουν για το gentoo, αλλά παρόμοια είναι η διαδικασία
φαντάζομαι και για τα υπόλοιπα είδη του οικοσυστήματος...<br>
<br>
<div class="moz-signature">-- <br>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-7">
<title>.signature.html</title>
<p><big>Antonis Valakas</big></p>
<span style="font-style: italic;">Systems Consultant</span><br>
Multiservice Networks - <span style="font-weight: bold;">Intracom SA<br>
</span>
<pre><span style="font-weight: bold;">email: avalak_at_intracom.gr</span></pre>
<pre><span style="font-weight: bold;">  www: <a class="moz-txt-link-abbreviated" href="http://www.intracom.gr">www.intracom.gr</a></span></pre>
<pre><span style="font-weight: bold;">
</span></pre>
</div>
</body>
</html>