Rediriger les messages d'erreur du système qui s'affichent à l'écran et/ou désactiver complè tement une carte réseau

8 réponses
Avatar
Francois Lafont
Bonjour à tous,

J'ai eu hier un petit souci avec un serveur HP Proliant pas tout jeune
sur lequel j'avais installé une Debian Squeeze (pas d'interface
graphique installée). En effet, une fois l'installation effectuée, au
tout début du premier démarrage, j'avais sur l'écran plein de messages
d'erreur du système qui s'affichaient très très vite (au pif je dirais
toutes les 20 ms, bref ça défilait vite). Le message était toujours le
même et cela concernait la carte réseau eth0 qui n'était pas bien prise
en charge. Le message, qui revenait sans cesse très rapidement, polluait
complètement l'affichage sur mon écran, à tel point que j'ai cru au
départ que le démarrage n'avait été totalement stoppé dès le départ.

Mais en fait pas du tout. De manière très fugace j'ai pu voir que
j'avais l'invite de connexion. Pendant que le même message d'erreur
défilait sans cesse sur l'écran, j'ai saisi le login "root" et son mot
de passe « à l'aveugle » (ma saisie, je pense, devait s'afficher sur
l'écran mais entrecoupée par les vagues incessantes de message d'erreur
si bien que ça revenait à taper à l'aveugle). Ensuite, toujours à
l'aveugle, j'ai tenté un « ls -la / » et toujours à vitesse grand V j'ai
pu voir entre deux messages l'arborescence des fichiers s'afficher (ie
le résultat de la commande ls). Du coup, même si je ne voyais
globalement rien à l'écran, à part mes messages d'erreur défiler,
j'avais une session tty1 parfaitement opérationnelle (mis à part le
réseau qui ne fonctionnait pas bien sûr).

À ce moment là, il y a deux choses que j'aurais bien aimé être capable
de faire et c'est l'objet de mes deux questions ci-dessous :

\begin{parenthese}
Finalement, le problème a été résolu en redémarrant le serveur et en
allant sur le bios afin de désactiver la carte réseau. Au prochain
démarrage, plus de messages d'erreur et là sur une console j'ai pu
installer « à la main » (via une clé usb) le paquet firmware-bnx2 qui a
permis ensuite de prendre en charge correctement la carte réseau.
\end{parenthese}

1. Sur la console tty1, comment faire pour rediriger vers /dev/null
toute la flopée de messages d'erreur que le système m'affichait sur
l'écran. Je ne parle pas des messages d'erreur d'une commande qui échoue
(par exemple "bash: toto : commande introuvable"), mais des messages
envoyés sur la console par « le système » (par qui exactement je ne sais
pas). Le genre de message qui peut s'afficher automatiquement par
exemple quand on insère une clé usb (enfin j'imagine que ça provient du
même flux).

J'avais pensé faire « exec 2>/dev/null » mais ça n'avait pas marché.
Mais c'est logique car ça redirige le flux des erreurs des commandes de
mon bash en cours, mais les messages d'erreur que j'avais provenaient
sans doute d'un autre flux. Au passage, j'ai pu tester « exec
2>/dev/null » sur un terminal chez moi et je n'ai plus de prompt qui
s'affiche ni ma saisie (à croire que ça provient du flux des erreurs de
mon bash ?).

2. Comment, en ligne de commandes, désactiver la carte réseau
complètement ? Par « complètement », j'entends « comme si (ou presque)
on l'avait désactivée via le bios, ou en tout cas de manière à ce que
l'OS fasse comme si la carte n'existait plus ». J'avais tenté un «
ifdown eth0 » mais sans succès.

Merci d'avance pour votre aide.
Désolé d'avoir été un peu long, j'espère que c'est clair au moins.


--
François Lafont

8 réponses

Avatar
YBM
Le 15.09.2012 13:53, Francois Lafont a écrit :
2. Comment, en ligne de commandes, désactiver la carte réseau
complètement ? Par « complètement », j'entends « comme si (ou presque)
on l'avait désactivée via le bios, ou en tout cas de manière à ce que
l'OS fasse comme si la carte n'existait plus ». J'avais tenté un «
ifdown eth0 » mais sans succès.



rmmod nom_du_pilote
Avatar
Erwan David
YBM écrivait :

Le 15.09.2012 13:53, Francois Lafont a écrit :
2. Comment, en ligne de commandes, désactiver la carte réseau
complètement ? Par « complètement », j'entends « comme si (ou presque)
on l'avait désactivée via le bios, ou en tout cas de manière à ce que
l'OS fasse comme si la carte n'existait plus ». J'avais tenté un «
ifdown eth0 » mais sans succès.



rmmod nom_du_pilote



Si t'as 4 cartes avec le même chip, ça va pas marcher.

Ou trop bien.


--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Pascal Hambourg
Salut,

Francois Lafont a écrit :

1. Sur la console tty1, comment faire pour rediriger vers /dev/null
toute la flopée de messages d'erreur que le système m'affichait sur
l'écran.



Il est possible de diminuer le niveau de log du noyau sur la console par
différents moyens, notamment :
- en activant la combinaison de touche dite "magic sysrq key" (alt +
impr.écran/sysrq + 0 sur x86) ;
- en modifiant la valeur du sysctl kernel.printk (/proc/sys/kernel/printk) ;
- en ajoutant le paramètre loglevel avec la valeur souhaitée dans la
ligne de commande du noyau passée par le chargeur d'amorçage.

Je pense que tu sauras trouver les détails toi-même.

2. Comment, en ligne de commandes, désactiver la carte réseau
complètement ? Par « complètement », j'entends « comme si (ou presque)
on l'avait désactivée via le bios, ou en tout cas de manière à ce que
l'OS fasse comme si la carte n'existait plus ». J'avais tenté un «
ifdown eth0 » mais sans succès.



Le déchargement du pilote correspondant avec rmmod ou modprobe -r est
une méthode radicale mais sera refusé si l'interface est activée (même
si non opérationnelle). ifdown n'est efficace que si l'interface est
gérée par ifupdown et avait été auparavant activée. Essayer "ifconfig
ethX down" plutôt.
Avatar
Nicolas George
Erwan David , dans le message , a écrit :
Si t'as 4 cartes avec le même chip, ça va pas marcher.



Dans ce cas :

echo -n $PCI_ID > /sys/class/net/eth0/device/driver/unbind

L'identifiant peut être obtenu par un ls bien senti dans le
pseudo-répertoire en question.
Avatar
Francois Lafont
Bonjour,

Merci à tous pour vos réponses.

1. Pour la désactivation des messages provenant du kernel sur la
console, j'essayerai de retenir la commande sysctl. Je pense avoir
compris à peu près. J'ai trouvé plus de détails sur cette page :

http://lists.debian.org/debian-user/2008/02/msg00457.html

Par exemple, sur ma Squeeze, j'ai :

# sysctl kernel.printk
kernel.printk = 4 4 1 7
(revient à faire « cat /proc/sys/kernel/printk »)

Le premier nombre (4 ici), si j'ai bien compris, indique que tous les
messages du noyau dont le loglevel est inférieur strictement à 4
s'afficheront sur la console (sachant qu'apparemment le loglevel d'un
message peut aller de 0 [très grave] à 7 [pour faire du debug]).

En faisant :

# sysctl -w kernel.printk='0 4 1 7'
(revient à faire « echo 0 > /proc/sys/kernel/printk »)

je n'ai plus de message venant du kernel sur ma console. Apparemment,
c'est immédiat (pas besoin de rebooter, de fermer puis rouvrir tty1).
J'ai pu faire le test en insérant une clé usb sur ma machine car ce
genre d'événement provoque en général des messages du kernel.

J'ai constaté que la modif ne survit pas à un redémarrage. Je n'ai pas
testé mais apparemment pour avoir un changement pérenne, il faut éditer
le fichier /etc/sysctl.conf et ajouté la ligne :

kernel.printk = 0 4 1 7


2. Là, j'ai encore un souci. Si j'ai bien compris pour désactiver «
complètement » ma carte eth0, je fais :

ifconfig eth0 down

puis

modprobe -r nom_du_pilote

Mais comment connaître le nom_du_pilote qui s'occupe de gérer eth0. Avec
par exemple un lsmod, j'obtiens toute une série de modules, mais je
serais bien incapable de savoir lequel correspond à ma carte réseau.

--
François Lafont
Avatar
Doug713705
Le 16-09-2012, Francois Lafont nous expliquait dans
fr.comp.os.linux.configuration :

2. Là, j'ai encore un souci. Si j'ai bien compris pour désactiver «
complètement » ma carte eth0, je fais :

ifconfig eth0 down

puis

modprobe -r nom_du_pilote

Mais comment connaître le nom_du_pilote qui s'occupe de gérer eth0. Avec
par exemple un lsmod, j'obtiens toute une série de modules, mais je
serais bien incapable de savoir lequel correspond à ma carte réseau.



lspci devrait t'aider à identifier ton matériel.

Ensuite une recherche sur le net devrait te permettre d'identifier le
module concerné.

--
Doug - Linux user #307925 -
Slackware64 roulaize ;-)
Avatar
Francois Lafont
Le 16/09/2012 20:59, Doug713705 a écrit :

2. Là, j'ai encore un souci. Si j'ai bien compris pour désactiver «
complètement » ma carte eth0, je fais :

ifconfig eth0 down

puis

modprobe -r nom_du_pilote

Mais comment connaître le nom_du_pilote qui s'occupe de gérer eth0. Avec
par exemple un lsmod, j'obtiens toute une série de modules, mais je
serais bien incapable de savoir lequel correspond à ma carte réseau.



lspci devrait t'aider à identifier ton matériel.

Ensuite une recherche sur le net devrait te permettre d'identifier le
module concerné.



Ok. Merci Doug.

$ lspci | grep -i eth
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)

Ensuite, faire le lien avec le nom du module lié à ce matériel n'est pas
forcément évident mais avec Google c'est vrai qu'on s'en sort. Sinon,
j'ai pu m'aider aussi du champ description que donne la commande modinfo :

for m in $(lsmod | tail -n +2 | cut -f1 -d' '); do
echo "Module $m:"
modinfo "$m" | grep "^description"
done > liste

Ensuite une petite recherche (insensible à la casse) de "realtek" dans
le fichier liste et j'ai pu voir que le module en question était r8169.
Et effectivement, après un petit :

ifconfig eth0 down
modprobe -r r8169

plus de carte réseau eth0 accessible. Si je fais ensuite :

modprobe -a r8169

alors mon « réseau » repart aussitôt et je peux pinguer google juste après.

Merci encore pour votre aide. :-)

--
François Lafont
Avatar
Christophe PEREZ
Le Mon, 17 Sep 2012 05:59:40 +1100, Doug713705 a écrit :

lspci devrait t'aider à identifier ton matériel.

Ensuite une recherche sur le net devrait te permettre d'identifier le
module concerné.



Euh... lspci -k fait les 2 d'un coup.