Non, ça été fait pour FC3 comme indiqué précédement (à cause de udev).
> Attention, la je rigole bien: "qui est le *coeur* d'hotplug", ah bon, /sbin/hotplug, un script de 6 lignes est le coeur de hotplug ?
D'accord, j'ai été rigolo.
Je disait au début : $ cat /proc/sys/kernel/hotplug
/sbin/hotplug
Pour parler de ce qui est appelé par le noyau.
Toi tu me montres un truc appelé en userland (/etc/rc.d/init.d/hotplug).
> Mandrake, Debian, Suse, ... : Utilisation *complete* du projet hotplug pour la détection à chaud et au boot du matériel.
Non. Mandrake fait comme Red Hat (depuis la 10.1).
Pour SuSE, je ne sait pas.
> A chaud, le kernel appelle le script /sbin/hotplug avec en argument le bus ou il a détecté un nouveau materiel, /sbin/hotplug appelle ensuite /etc/hotplug/bus.rc
$ ll /etc/hotplug/bus.rc
ls: /etc/hotplug/bus.rc: Aucun fichier ou répertoire de ce type
De plus, hotplug appelé depuis le noyau n'utilise jamais /etc/hotplug/*.rc (ici en tout cas).
Ici /sbin/hotplut appelle que les fichiers :
DIR="/etc/hotplug.d"
for I in "${DIR}/1ドル/"*.hotplug "${DIR}/"default/*.hotplug ; do
Puis default.hotplug appelle /etc/hotplug/AGENT.agent
Dans les fichiers /etc/hotplug/*.agent j'ai :
* /etc/hotplug/scsi.agent :
TYPE=$(cat $TYPE_ATTR)
case "$TYPE" in
# 2.5.51 style attributes; <scsi/scsi.h> TYPE_* constants
0) TYPE=disk ; MODULE=sd_mod ;;
# FIXME some tapes use 'osst' not 'st'
1) TYPE=tape ; MODULE=st ;;
2) TYPE=printer ;;
3) TYPE=processor ;;
4) TYPE=worm ; MODULE=sr_mod ;;
5) TYPE=cdrom ; MODULE=sr_mod ;;
6) TYPE=scanner ;;
7) TYPE=mod ; MODULE=sd_mod ;;
8) TYPE=changer ;;
9) TYPE=comm ;;
14) TYPE=enclosure ;;
esac
if [ "$MODULE" != "" ]; then
mesg "$TYPE at $DEVPATH"
modprobe $MODULE
else
Pas de détection matériel. Le noyau qui a lu le bus SCSI dit a hotplug qu'il y a un périphérique type printer, cdrom ou disk... Ce'est pas hotplug qui a "détecté" ça.
* /etc/hotplug/ieee1394.agent
# on 2.4 systems, modutils maintains MAP_CURRENT
if [ -r $MAP_CURRENT ]; then
load_drivers ieee1394 $MAP_CURRENT "$LABEL"
fi
pas de MAP_CURRENT sous Linux 2.6. C'est-à-dire avec module-init-tools. Mais Debian doit être avec modutils pour être compatible Linux 2.4 (comme je l'ai sous-entendu plus haut). Ça regarde Debian.
* /etc/hotplug/input.agent
if [ -r $MAP_CURRENT ]; then
load_drivers input $MAP_CURRENT "$LABEL"
fi
* /etc/hotplug/usb.agent :
# on 2.4 systems, modutils 2.4.2+ maintains MAP_CURRENT
# ... otherwise we can't rely on it (sigh)
case "$KERNEL" in
2.4.*|2.5.*|2.6.*)
if [ -r $MAP_CURRENT ]; then
load_drivers usb $MAP_CURRENT "$LABEL"
fi;;
*)
# cope with special driver module configurations
# (mostly HID devices, until we have an input.agent)
# not needed on 2.6 - they are loaded by hotplug
case "$KERNEL" in
2.6.* )
: nothing
;;
# some devices have user-mode drivers (no kernel module, but config)
# or specialized user-mode setup helpers
MODPROBE=:
for MAP in $MAP_USERMAP $HOTPLUG_DIR/usb/*.usermap
do
if [ -r $MAP ]; then
load_drivers usb $MAP "$LABEL"
$ ll /etc/hotplug/usb/*.usermap
ls: /etc/hotplug/usb/*.usermap: Aucun fichier ou répertoire de ce type
En gros sous Linux _2.6_, ça ne charge jamais de module. Sauf pour SCSI mais ce n'est pas de la détection matériel. C'est le noyau qui a fait la détection, puis le communique à hotplug pour configurer la matériel.
> Pour la détection au boot, c'est encore plus con, on appelle les scripts *.rc qui scannent chaque bus a la recherche du matos et ils chargent les modules de chaque matériel détecté(usb, pci, ...).
Sous Linux 2.4 et pour certain...
De plus, ce n'est pas du "hotplug" mais si le projet hotplug fournis les scripts.
> Redhat/Fedora: on fait bande a part, on prend ce qui nous interesse dans hotplug et on fait tout a notre sauce histoire d'etre bien incompatible avec le reste de la planete.
C'est du pure FUD. Renseigne toi 2 secondes. La méthode Debian, est la vieille méthode. De plus cette méthode "pue" car ça charge plein de modules pour rien.
Je regarde /proc/modules juste après le boot et j'ai 58 modules de chargé ! Je n'ai pas usb et pourtant il y a des modules usb de chargés, etc. Je comprend maintenant pourquoi on explique très tôt qu'il faut recompiler un noyau...
Ici j'ai 33 modules dont le réseau alors que j'avais pas le réseau sous debian (normal, je l'avais pas configuré). Dans ces 34, je retire sch_tbf, pppoatm, ppp_generic, atm, unicorn_pci_atm et dm_mod que je n'avais pas sous Debian et j'ai au final, 31 modules de trop sous Debian !
Tu trouves ça "moderne" ?
Fedora applique la nouvelle méthode. Hotplug sert à communiquer et configurer le matériel. Pas à le détecter. C'est le noyau qui doit détecter le matériel (sans charger les modules). C'est aux autres applis (donc hald qui va prendre une place de plus en plus importante) d'utiliser ces informations pour, pourquoi pas, charger un module.
Debian est _toujours_ en retard.
Ce que fait Debian, n'est pas la référence.
[^] # Re: Drôle de surprise !
Posté par 007 . En réponse à la dépêche Sortie de la Debian Woody 3.0r3. Évalué à 2.
Non, ça été fait pour FC3 comme indiqué précédement (à cause de udev).
> Attention, la je rigole bien: "qui est le *coeur* d'hotplug", ah bon, /sbin/hotplug, un script de 6 lignes est le coeur de hotplug ?
D'accord, j'ai été rigolo.
Je disait au début :
$ cat /proc/sys/kernel/hotplug
/sbin/hotplug
Pour parler de ce qui est appelé par le noyau.
Toi tu me montres un truc appelé en userland (/etc/rc.d/init.d/hotplug).
> Mandrake, Debian, Suse, ... : Utilisation *complete* du projet hotplug pour la détection à chaud et au boot du matériel.
Non. Mandrake fait comme Red Hat (depuis la 10.1).
Pour SuSE, je ne sait pas.
> A chaud, le kernel appelle le script /sbin/hotplug avec en argument le bus ou il a détecté un nouveau materiel, /sbin/hotplug appelle ensuite /etc/hotplug/bus.rc
$ ll /etc/hotplug/bus.rc
ls: /etc/hotplug/bus.rc: Aucun fichier ou répertoire de ce type
De plus, hotplug appelé depuis le noyau n'utilise jamais /etc/hotplug/*.rc (ici en tout cas).
Ici /sbin/hotplut appelle que les fichiers :
DIR="/etc/hotplug.d"
for I in "${DIR}/1ドル/"*.hotplug "${DIR}/"default/*.hotplug ; do
J'ai :
$ find /etc/hotplug.d/ -iname "*.hotplug"
/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
/etc/hotplug.d/default/10-udev.hotplug
/etc/hotplug.d/default/20-hal.hotplug
/etc/hotplug.d/default/default.hotplug
Puis default.hotplug appelle /etc/hotplug/AGENT.agent
Dans les fichiers /etc/hotplug/*.agent j'ai :
* /etc/hotplug/scsi.agent :
TYPE=$(cat $TYPE_ATTR)
case "$TYPE" in
# 2.5.51 style attributes; <scsi/scsi.h> TYPE_* constants
0) TYPE=disk ; MODULE=sd_mod ;;
# FIXME some tapes use 'osst' not 'st'
1) TYPE=tape ; MODULE=st ;;
2) TYPE=printer ;;
3) TYPE=processor ;;
4) TYPE=worm ; MODULE=sr_mod ;;
5) TYPE=cdrom ; MODULE=sr_mod ;;
6) TYPE=scanner ;;
7) TYPE=mod ; MODULE=sd_mod ;;
8) TYPE=changer ;;
9) TYPE=comm ;;
14) TYPE=enclosure ;;
esac
if [ "$MODULE" != "" ]; then
mesg "$TYPE at $DEVPATH"
modprobe $MODULE
else
Pas de détection matériel. Le noyau qui a lu le bus SCSI dit a hotplug qu'il y a un périphérique type printer, cdrom ou disk... Ce'est pas hotplug qui a "détecté" ça.
* /etc/hotplug/ieee1394.agent
# on 2.4 systems, modutils maintains MAP_CURRENT
if [ -r $MAP_CURRENT ]; then
load_drivers ieee1394 $MAP_CURRENT "$LABEL"
fi
pas de MAP_CURRENT sous Linux 2.6. C'est-à-dire avec module-init-tools. Mais Debian doit être avec modutils pour être compatible Linux 2.4 (comme je l'ai sous-entendu plus haut). Ça regarde Debian.
* /etc/hotplug/input.agent
if [ -r $MAP_CURRENT ]; then
load_drivers input $MAP_CURRENT "$LABEL"
fi
* /etc/hotplug/usb.agent :
# on 2.4 systems, modutils 2.4.2+ maintains MAP_CURRENT
# ... otherwise we can't rely on it (sigh)
case "$KERNEL" in
2.4.*|2.5.*|2.6.*)
if [ -r $MAP_CURRENT ]; then
load_drivers usb $MAP_CURRENT "$LABEL"
fi;;
*)
# cope with special driver module configurations
# (mostly HID devices, until we have an input.agent)
# not needed on 2.6 - they are loaded by hotplug
case "$KERNEL" in
2.6.* )
: nothing
;;
# some devices have user-mode drivers (no kernel module, but config)
# or specialized user-mode setup helpers
MODPROBE=:
for MAP in $MAP_USERMAP $HOTPLUG_DIR/usb/*.usermap
do
if [ -r $MAP ]; then
load_drivers usb $MAP "$LABEL"
$ ll /etc/hotplug/usb/*.usermap
ls: /etc/hotplug/usb/*.usermap: Aucun fichier ou répertoire de ce type
En gros sous Linux _2.6_, ça ne charge jamais de module. Sauf pour SCSI mais ce n'est pas de la détection matériel. C'est le noyau qui a fait la détection, puis le communique à hotplug pour configurer la matériel.
> Pour la détection au boot, c'est encore plus con, on appelle les scripts *.rc qui scannent chaque bus a la recherche du matos et ils chargent les modules de chaque matériel détecté(usb, pci, ...).
Sous Linux 2.4 et pour certain...
De plus, ce n'est pas du "hotplug" mais si le projet hotplug fournis les scripts.
> Redhat/Fedora: on fait bande a part, on prend ce qui nous interesse dans hotplug et on fait tout a notre sauce histoire d'etre bien incompatible avec le reste de la planete.
C'est du pure FUD. Renseigne toi 2 secondes. La méthode Debian, est la vieille méthode. De plus cette méthode "pue" car ça charge plein de modules pour rien.
Exemple de ma dernière expérience (catastrophique) Debian : ( http://linuxfr.org/~ehoebadoag/15279.html(...) )
Je regarde /proc/modules juste après le boot et j'ai 58 modules de chargé ! Je n'ai pas usb et pourtant il y a des modules usb de chargés, etc. Je comprend maintenant pourquoi on explique très tôt qu'il faut recompiler un noyau...
Ici j'ai 33 modules dont le réseau alors que j'avais pas le réseau sous debian (normal, je l'avais pas configuré). Dans ces 34, je retire sch_tbf, pppoatm, ppp_generic, atm, unicorn_pci_atm et dm_mod que je n'avais pas sous Debian et j'ai au final, 31 modules de trop sous Debian !
Tu trouves ça "moderne" ?
Fedora applique la nouvelle méthode. Hotplug sert à communiquer et configurer le matériel. Pas à le détecter. C'est le noyau qui doit détecter le matériel (sans charger les modules). C'est aux autres applis (donc hald qui va prendre une place de plus en plus importante) d'utiliser ces informations pour, pourquoi pas, charger un module.
Debian est _toujours_ en retard.
Ce que fait Debian, n'est pas la référence.