OVH Cloud OVH Cloud

[Mandriva2007 ] : DD saturé pendant compilation du noyau 2.6.20

56 réponses
Avatar
claude
bonjour,

Je tourne avec MDV LiveCD 2007, noyau 2.6.17. Je souhaite passer au
2.6.20 car les drivers NVidia ne sont pas reconnus par le noyau courant.

J'ai lancé 3 compil suite à des oublis ds la config. Est-il normal que
la 3ème compil sature ma partition / (3 Go) et stoppe la compil ?
je suis bloqué. de fait, /usr fait 2.7 Go.
comment faire du ménage sur mon DD ?

mon DD :
/ : 3 Go
swap : 1 Go
/home : 4 Go

merci de vos conseils

Claude

10 réponses

1 2 3 4 5
Avatar
claude

curieusement, j'ai le msg qd je quitte linux :
umount /proc not mounted ...



Qu'est ce qu'il y a dans /proc après le démarrage? S'il n'y a rien, de
toute façon le système ne peut pas fonctionner correctement. Peut-être
une option mal définie lors de la compil noyau?



le msg erreur exact en quittant linux :

"umounting proc filesystem /proc not mounted".

voici /proc (j'ai enlevé une partie car tres long) :

[ proc]# ls -l /proc
total 0
dr-xr-xr-x 4 root root 0 fév 25 2007 1/
dr-xr-xr-x 4 root root 0 fév 25 2007 1002/
dr-xr-xr-x 4 root root 0 fév 25 2007 105/
dr-xr-xr-x 4 root root 0 fév 25 2007 112/
dr-xr-xr-x 4 root root 0 fév 25 2007 113/
[...]
dr-xr-xr-x 4 root root 0 fév 25 2007 755/
dr-xr-xr-x 4 root root 0 fév 25 2007 766/
dr-xr-xr-x 4 root root 0 fév 25 2007 767/
dr-xr-xr-x 4 root root 0 fév 25 2007 774/
dr-xr-xr-x 4 root root 0 fév 25 2007 775/
dr-xr-xr-x 4 root root 0 fév 25 2007 790/
dr-xr-xr-x 4 root root 0 fév 25 2007 885/
dr-xr-xr-x 4 root root 0 fév 25 2007 999/
-r--r--r-- 1 root root 0 fév 25 18:07 apm
-r--r--r-- 1 root root 0 fév 25 18:07 buddyinfo
dr-xr-xr-x 6 root root 0 fév 25 18:06 bus/
-r--r--r-- 1 root root 0 fév 25 18:07 cmdline
-r--r--r-- 1 root root 17306 fév 25 18:07 config.gz
-r--r--r-- 1 root root 0 fév 25 18:07 cpuinfo
-r--r--r-- 1 root root 0 fév 25 18:07 crypto
-r--r--r-- 1 root root 0 fév 25 18:07 devices
-r--r--r-- 1 root root 0 fév 25 18:07 diskstats
-r--r--r-- 1 root root 0 fév 25 18:07 dma
dr-xr-xr-x 3 root root 0 fév 25 18:07 driver/
-r--r--r-- 1 root root 0 fév 25 18:07 execdomains
-r--r--r-- 1 root root 0 fév 25 18:07 fb
-r--r--r-- 1 root root 0 fév 25 18:07 filesystems
dr-xr-xr-x 3 root root 0 fév 25 18:07 fs/
dr-xr-xr-x 3 root root 0 fév 25 18:07 ide/
-r--r--r-- 1 root root 0 fév 25 18:07 interrupts
-r--r--r-- 1 root root 0 fév 25 18:07 iomem
-r--r--r-- 1 root root 0 fév 25 18:07 ioports
dr-xr-xr-x 18 root root 0 fév 25 18:07 irq/
-r--r--r-- 1 root root 0 fév 25 18:07 kallsyms
-r-------- 1 root root 469438464 fév 25 18:07 kcore
-r--r--r-- 1 root root 0 fév 25 18:07 keys
-r--r--r-- 1 root root 0 fév 25 18:07 key-users
-r-------- 1 root root 0 fév 25 18:06 kmsg
-r--r--r-- 1 root root 0 fév 25 18:07 loadavg
-r--r--r-- 1 root root 0 fév 25 18:07 locks
-r--r--r-- 1 root root 0 fév 25 18:07 mdstat
-r--r--r-- 1 root root 0 fév 25 18:07 meminfo
-r--r--r-- 1 root root 0 fév 25 18:07 misc
-r--r--r-- 1 root root 0 fév 25 18:07 modules
lrwxrwxrwx 1 root root 11 fév 25 18:07 mounts ->
self/mounts
-rw-r--r-- 1 root root 0 fév 25 18:07 mtrr
dr-xr-xr-x 6 root root 0 fév 25 18:07 net/
-r--r--r-- 1 root root 0 fév 25 18:07 partitions
dr-xr-xr-x 2 root root 0 fév 25 18:07 scsi/
lrwxrwxrwx 1 root root 64 fév 25 2007 self -> 3607/
-rw-r--r-- 1 root root 0 fév 25 18:07 slabinfo
-r--r--r-- 1 root root 0 fév 25 18:07 stat
-r--r--r-- 1 root root 0 fév 25 18:07 swaps
dr-xr-xr-x 8 root root 0 fév 25 18:06 sys/
--w------- 1 root root 0 fév 25 18:07 sysrq-trigger
dr-xr-xr-x 2 root root 0 fév 25 18:07 sysvipc/
dr-xr-xr-x 4 root root 0 fév 25 18:07 tty/
-r--r--r-- 1 root root 0 fév 25 18:07 uptime
-r--r--r-- 1 root root 0 fév 25 18:07 version
-r--r--r-- 1 root root 0 fév 25 18:07 vmstat
-r--r--r-- 1 root root 0 fév 25 18:07 zoneinfo


Avatar
claude

curieusement, j'ai le msg qd je quitte linux :
umount /proc not mounted ...



Qu'est ce qu'il y a dans /proc après le démarrage? S'il n'y a rien, de
toute façon le système ne peut pas fonctionner correctement. Peut-être
une option mal définie lors de la compil noyau?

voici /etc/mtab :


/dev/sda5 / ext3 rw 0 0
none /proc proc rw 0 0
/dev/sda7 /home ext3 rw 0 0
/dev/sda3 /mnt/datas vfat rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/hda /mnt/cdrom iso9660 ro,nosuid,nodev,users 0 0


l'entée: none /proc/sys/fsbinfmt...... est pour moi une nouveauté.....


Avatar
Blaise Potard
Le Sun, 25 Feb 2007 14:46:06 +0100, claude a écrit:

waaaoouuu !! Il faut rester humble devant la technique, mais il faut
aussi persévérer. il y a forcément une solution !!

bon, bonne nouvelle, je boote sur le 2.6.20. mkinitrd a généré l'image.
mais, mais..., je n'ai pas encore le réseau ni ma résolution VGA.


Ah ! C'est déjà un grand pas en avant. Alors, il semblerait (mais je ne
sais pas du tout si ça suffit) qu'il faudrait ajouter manuellement ton
interface réseau.

1) Il est possible qu'il suffise de mettre la ligne suivante dans
/etc/modprobe.conf:
alias eth0 forcedeth

2) Pour le VGA, il semblerait qu'il faille installer le dernier driver
graphique nvidia. Sur le net, ça a l'air d'avoir résolu le problème (?)

Ce que je trouve le plus étonnant, c'est que ton lspci n'a pas du tout
changé : visiblement tu ne reconnais pas plus de matos qu'avant. Alors
qu'en principe il devrait tout reconnaître maintenant !

Avatar
Nicolas George
Blaise Potard wrote in message
<45e1da2c$0$13855$:
Ce que je trouve le plus étonnant, c'est que ton lspci n'a pas du tout
changé : visiblement tu ne reconnais pas plus de matos qu'avant. Alors
qu'en principe il devrait tout reconnaître maintenant !


Ce que reconnaît le noyau et ce qu'affiche lspci n'a strictement aucun
rapport.

Avatar
claude
Blaise Potard wrote in message
<45e1da2c$0$13855$:
Ce que je trouve le plus étonnant, c'est que ton lspci n'a pas du tout
changé : visiblement tu ne reconnais pas plus de matos qu'avant. Alors
qu'en principe il devrait tout reconnaître maintenant !


Ce que reconnaît le noyau et ce qu'affiche lspci n'a strictement aucun
rapport.


ce serait bien d'expliciter. rien que pour la culture générale.

merci


Avatar
Nicolas George
claude wrote in message <45e1dd51$0$19803$:
ce serait bien d'expliciter. rien que pour la culture générale.


Les bus modernes, dont le bus PCI (mais aussi USB, par exemple) comportent
dans leur protocole un moyen standard pour chaque périphérique présent de
décliner son identité, au moyen en général de quelques nombres. Très
souvent, ces nombres comportent au moins une classe, standardisée
globalement, qui explicite de quel type de périphérique il s'agit, un
identifiant vendeur, attribué à chaque constructeur, et un identifiant de
produit, attribué par le constructeur.

lspci lit tous ces identifiants sur le bus, en utilisant l'interface
/proc/bus/pci fournie par le noyau, et les affiche. Pour que ce soit plus
lisible, il utilise une table de correspondance entre les identifiants et
des noms lisibles. Cette table est un simple fichier texte, souvent dans
/usr/share/misc/pci.ids, et peut être mise à jour, la dernière version se
trouvant sur <URL: http://pciids.sourceforge.net/v2.2/pci.ids >. Quand lspci
dit « unknown », ça veut juste dire que le périphérique n'est pas listé dans
sa table. On peut demander à lspci de ne pas utiliser la table, et
d'afficher les valeurs numériques, avec l'option -n.

De son côté, le noyau a, pour chaque driver capable de gérer des
périphériques PCI, une table permettant de déterminer quels périphériques il
peut gérer, et quels périphériques il ne peut pas gérer. On peut avoir une
certaine vue de ces tables en regardant
/lib/modules/`uname -r`/modules.pcimap (qui ne liste pas ce qui est géré par
des drivers directement dans le noyau). Au moment d'initialiser un driver,
le noyau énumère les périphériques PCI, et regarde les quels sont acceptés
par la table.

Le mécanisme qui permet au noyau d'énumérer les périphériques pour un driver
est le même que celui qui lui permet de les énumérer pour /proc/bus/pci/,
qui sert à lspci. Dans ces conditions, il est clair que si un périphérique
n'apparaît pas du tout dans lspci, le noyau ne peut pas le gérer : c'est
tout simplement qu'il n'existe pas (éventuellement virtuellement, par
exemple désactivé par le BIOS). Mais au delà, rien : un périphérique peut
être reconnu par le noyau et affiché « unknown » par lspci, ou
réciproquement être listé avec un nom très détaillé par lspci et ne pas être
reconnu par le noyau.

Une manière de savoir si un périphérique est reconnu par le noyau est
d'aller voir dans /sys/bus/pci/devices : chaque périphérique y est
représenté par un lien symbolique vers un répertoire. Si dans ce répertoire
se trouve un lien symbolique « driver », le périphérique est reconnu.

Voici un petit script (zsh) pour voir ça :

for i in /sys/bus/pci/devices/*
if [[ -e $i/driver ]]; then
d=`readlink $i/driver`
print ${i:t} reconnu par ${d:t}
else
print ${i:t} inconnu
fi

Avatar
claude
claude wrote in message <45e1dd51$0$19803$:
ce serait bien d'expliciter. rien que pour la culture générale.


Les bus modernes, dont le bus PCI (mais aussi USB, par exemple) comportent
dans leur protocole un moyen standard pour chaque périphérique présent de
décliner son identité, au moyen en général de quelques nombres. Très
souvent, ces nombres comportent au moins une classe, standardisée
globalement, qui explicite de quel type de périphérique il s'agit, un
identifiant vendeur, attribué à chaque constructeur, et un identifiant de
produit, attribué par le constructeur.

lspci lit tous ces identifiants sur le bus, en utilisant l'interface
/proc/bus/pci fournie par le noyau, et les affiche. Pour que ce soit plus
lisible, il utilise une table de correspondance entre les identifiants et
des noms lisibles. Cette table est un simple fichier texte, souvent dans
/usr/share/misc/pci.ids, et peut être mise à jour, la dernière version se
trouvant sur <URL: http://pciids.sourceforge.net/v2.2/pci.ids >. Quand lspci
dit « unknown », ça veut juste dire que le périphérique n'est pas listé dans
sa table. On peut demander à lspci de ne pas utiliser la table, et
d'afficher les valeurs numériques, avec l'option -n.

De son côté, le noyau a, pour chaque driver capable de gérer des
périphériques PCI, une table permettant de déterminer quels périphériques il
peut gérer, et quels périphériques il ne peut pas gérer. On peut avoir une
certaine vue de ces tables en regardant
/lib/modules/`uname -r`/modules.pcimap (qui ne liste pas ce qui est géré par
des drivers directement dans le noyau). Au moment d'initialiser un driver,
le noyau énumère les périphériques PCI, et regarde les quels sont acceptés
par la table.

Le mécanisme qui permet au noyau d'énumérer les périphériques pour un driver
est le même que celui qui lui permet de les énumérer pour /proc/bus/pci/,
qui sert à lspci. Dans ces conditions, il est clair que si un périphérique
n'apparaît pas du tout dans lspci, le noyau ne peut pas le gérer : c'est
tout simplement qu'il n'existe pas (éventuellement virtuellement, par
exemple désactivé par le BIOS). Mais au delà, rien : un périphérique peut
être reconnu par le noyau et affiché « unknown » par lspci, ou
réciproquement être listé avec un nom très détaillé par lspci et ne pas être
reconnu par le noyau.

Une manière de savoir si un périphérique est reconnu par le noyau est
d'aller voir dans /sys/bus/pci/devices : chaque périphérique y est
représenté par un lien symbolique vers un répertoire. Si dans ce répertoire
se trouve un lien symbolique « driver », le périphérique est reconnu.

Voici un petit script (zsh) pour voir ça :

for i in /sys/bus/pci/devices/*
if [[ -e $i/driver ]]; then
d=`readlink $i/driver`
print ${i:t} reconnu par ${d:t}
else
print ${i:t} inconnu
fi



très instructif ! merci

pour nvidia, pas de lien symbolique module --> xxxx, comme pour d'autres
peripf que j'ai regardés.
donc, il y a un pb. comment créer cette relation ? à la main ? en
recompilant le noyau ?
là s'arretent mes compétences... :-(


Avatar
Nicolas George
claude wrote in message <45e1fc16$0$15130$:
très instructif ! merci


Je t'en prie, ce fut un plaisir.

pour nvidia, pas de lien symbolique module --> xxxx, comme pour d'autres
peripf que j'ai regardés.


Si tu parles d'une carte graphique, c'est normal : ce n'est pas le noyau qui
la gère, à moins d'utiliser le framebuffer, c'est le serveur X11, et il ne
laisse pas de trace dans /sys/.

Il y a quelques autres périphériques qui ne doivent correspondre à aucun
driver : un pont PCI ou ISA, par exemple.

Si tu parles d'un contrôleur de je-ne-sais-quoi, c'est plus gênant.

donc, il y a un pb. comment créer cette relation ? à la main ? en
recompilant le noyau ?


Il y a trois raisons qui peuvent faire que cette relation n'existent pas :

- Le module capable de gérer le périphérique en question existe dans
/lib/modules/`uname -r`/ mais il n'est pas chargé.

- Le driver capable de gérer le périphérique existe dans le noyau, mais il
n'a pas été compilé pour la version en utilisation actuellement.

- Le driver n'existe tout simplement pas.

Le premier cas ne devrait pas arriver avec une distribution actuelle
configurée par défaut, parce que les modules sont chargés automatiquement en
fonction des périphériques qu'ils sont censés reconnaître, mais une
bizarrerie peut se produire. Il faudrait essayer de voir dans modules.pcimap
s'il y a un module plausible correspondant aux identifiants PCI du
périphérique concerné.

Pour le second cas, il faudrait fouiller dans les sources du noyau, à la
recherche des identifiants qui vont bien. Par exemple, pour mon contrôleur
SATA, ça ressemble à ça :

static const struct pci_device_id piix_pci_tbl[] = {
[...]
{ 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },
[...]

Il arrive que des constantes définies ailleurs soient utilisées, par exemple
le contrôleur IDE de mon portable :

static struct pci_device_id atiixp_pci_tbl[] = {
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP200_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID, PCI_ANY_ID, (PCI_CLASS_STORAGE_IDE<<8)|0x8a, 0xffff05, 1},
{ 0, },
};
MODULE_DEVICE_TABLE(pci, atiixp_pci_tbl);

dans drivers/ide/pci/atiixp.c et :

/* ATI IXP Chipset */
#define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349
#define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353
#define PCI_DEVICE_ID_ATI_IXP300_SMBUS 0x4363
#define PCI_DEVICE_ID_ATI_IXP300_IDE 0x4369
#define PCI_DEVICE_ID_ATI_IXP300_SATA 0x436e
#define PCI_DEVICE_ID_ATI_IXP400_SMBUS 0x4372
#define PCI_DEVICE_ID_ATI_IXP400_IDE 0x4376
#define PCI_DEVICE_ID_ATI_IXP400_SATA 0x4379
#define PCI_DEVICE_ID_ATI_IXP400_SATA2 0x437a
#define PCI_DEVICE_ID_ATI_IXP600_SATA 0x4380
#define PCI_DEVICE_ID_ATI_IXP600_SRAID 0x4381
#define PCI_DEVICE_ID_ATI_IXP600_IDE 0x438c

dans include/linux/pci_ids.h. L'un dans l'autre ce n'est pas très difficile
à trouver.


Pour finir, si le driver n'existe pas, il n'y a rien d'autre à faire qu'à
attendre.

Avatar
claude

Si tu parles d'une carte graphique, c'est normal : ce n'est pas le noyau qui
la gère, à moins d'utiliser le framebuffer, c'est le serveur X11, et il ne
laisse pas de trace dans /sys/.

pour le moment, je veux installer mon chipset réseau NFORCE-MCP61 de

nvidia. ça fait 15 jours que je suis là dessus.
impossible d'avancer.


Il y a trois raisons qui peuvent faire que cette relation n'existent pas :

- Le module capable de gérer le périphérique en question existe dans
/lib/modules/`uname -r`/ mais il n'est pas chargé.

- Le driver capable de gérer le périphérique existe dans le noyau, mais il
n'a pas été compilé pour la version en utilisation actuellement.

- Le driver n'existe tout simplement pas.

Le premier cas ne devrait pas arriver avec une distribution actuelle
configurée par défaut, parce que les modules sont chargés automatiquement en
fonction des périphériques qu'ils sont censés reconnaître, mais une
bizarrerie peut se produire. Il faudrait essayer de voir dans modules.pcimap
s'il y a un module plausible correspondant aux identifiants PCI du
périphérique concerné.

je ne crois pas, mais je vais regarder cela à nouveau.



Pour le second cas, il faudrait fouiller dans les sources du noyau, à la
recherche des identifiants qui vont bien. Par exemple, pour mon contrôleur
SATA, ça ressemble à ça :


j'ai réussi today à booter sur le noyau 2.6.20 qui reconnait ENFIN mon
DD sata comme module externe (non intégré au noyau).

Avatar
Emmanuel Florac
Le Mon, 26 Feb 2007 00:07:42 +0100, claude a écrit :


pour le moment, je veux installer mon chipset réseau NFORCE-MCP61 de
nvidia. ça fait 15 jours que je suis là dessus.
impossible d'avancer.


Vérifies tout de même que tu as le module ad hoc compilé et installé :
/lib/modules/2.6.20/kernel/drivers/net/forcedeth.ko


--
L'Algérie était au bord du gouffre, aujourd'hui elle a fait un grand pas
en avant.
Aït Ahmed.

1 2 3 4 5