# [KERNEL PANIC] unable to mount root fs (resolu)

## solips

Salut a tous,

Apres une installation qui s'est deroulee correctement, au redemarage j'obtiens :

VFS: Cannot open root device "hda1" or hda1

Please append a correct "root=" boot option

Kernel panic: VFS: Unable to mount root fs on hda1

ma configuration de grub est bonne je pense : root (hd0,0) ..... root=/dev/hda1 (je n'ai pas de partition /boot) .

au niveau du noyau (2.6.5) je n'ai active que les systemes de fichier que j'utilise plus ce qui est preconise dans la doc (le tout en dure)

voila, si quelqu'un pouvait me mettre sur une voie . Merci .Last edited by solips on Wed May 26, 2004 6:18 pm; edited 1 time in total

----------

## kernelsensei

oui grub est bon, la preuve le kernel essaye sur hda1 qui correspond bien a (hd0,0) ...

t'as quoi comme FS ?

----------

## solips

Ma partition / est en ext3 (la /home aussi d'ailleurs, j'ai activer l'ext2 pour un DD externe) .

----------

## Leander256

Tu n'aurais pas un disque dur en serial ATA par hasard? Je me souviens d'un post quelque part qui disait que premier disque dur serial ATA s'appelait hde et non hda (si je me souviens bien).

----------

## solips

Non, de toute façon c'est bien la lettre de disque que j'ai utilisee avec fdisk ou en montant mes partitions pendant l'installation .

----------

## nuts

j ai un probleme similaire dans le sens ou j avais un kernel panic car il arriver pas a me mettre le hda1 en / ce qui tres genant en effet, j ai etiends ma machine plusieurs minutes et quand j ai booter ca a bien fonctionner.

----------

## solips

J'ai bien du rebooter une cinquantaine de fois en recompilant le kernel avec differents supports de FS activés mais rien n'y fait .

----------

## ghoti

Arf! Je repense tout-à-coup à quelque-chose : vérifie que le mode LBA est activé pour ce disque dans le BIOS !

----------

## julienm

As-tu pensé à vérifier ton fichier "/etc/fstab". Par défaut gentoo nomme ton périphérique racine /dev/ROOT, tu dois changer ce nom en le remplacanr par /dev/hd<lettre et numéro de partotion de ton disque racine>.

Idem pour la partition d'échange swap, gentoo l'appelle /dev/SWAP mais là aussi il faut le remplacer.

----------

## PrEdAt0r

oui je confirme c'est un pb de fstab car ca me faisait pareil avec la gentoo 1.4 et c'etait ca !!!

et aussi fait gaf au fs que tu spécifit dans fstab sur ta part root car par default c'est du XFS alors que moi par ex c'est du ext3 alors fait y gaf si c'est pareil que moi !!!! reboot sur ton livecd SANS RECOMMENCER l'install ta juste a remonter tes parts (sans oublier /proc) et tu te log en chroot et tu change ton fstab et aprés ca devrai marcher !!!

----------

## kernelsensei

pas besoin du /proc, la partoche / suffit, un petit edit de /etc/fstab et riboute !

----------

## ghoti

 *PrEdAt0r wrote:*   

> oui je confirme c'est un pb de fstab

 

N'importe quoi !!!!   :Evil or Very Mad:  

Tu pourrais même virer ton fstab que ça n'empêcherait pas le kernel de booter !

Tu aurais au plus quelques problèmes dans les initscripts car la racine serait montée en "ro"

Or il s'agit ici d'un KERNEL PANIC : il ne sait pas monter la racine !

Alors, comment veux-tu qu'il aille lire le fstab ?

----------

## kernelsensei

avec une boule de crystal  :Smile: 

nan plus serieusement :

grep -i truc_recherché /dev/hda1

et ca c'est pas des conneries  :Wink: 

Mais bien sur le kernel il s'ammuse pas a faire des grep, mais ca peut etre pratique pour recup des fichiers importants apres un crash  :Smile: 

----------

## arlequin

Je pense que ça nous aiderait pas mal si tu nous copier/coller tes fichiers :

- /boot/grub.conf

- /etc/fstab (plus qu'optionnel)

et que tu nous y rajoute un petit 'grep -i EXT /usr/src/linux/.config'

Peux-tu aussi nous donner le chipset IDE de ta carte mère et le pilote que tu as configuré dans le noyau.

Avec ces infos, on devrait y voir plus clair !

----------

## ghoti

 *kernel_sensei wrote:*   

> grep -i truc_recherché /dev/hda1
> 
> et ca c'est pas des conneries  

 

Ah oui ? Tu es sûr ?

 *man grep wrote:*   

> DESCRIPTION
> 
>        Grep  Recherche  dans  les fichiers d'entrée indiqués les lignes corre-
> 
>        spondant à un certain motif.

 

Je veux bien que /dev/hda1 soit un fichier, mais, bizarrement, il est vide !  :Wink: 

Remarque : essaie ta commande et tu verras bien !

J'espère que tu as quelques gigas de mémoire ?  :Wink:   :Laughing: 

Je ne dis pas qu'il n'y a pas moyen d'exploiter hda1 en "raw mode", mai il faut d'autres outils que grep ...

----------

## kernelsensei

pardon, j'ai oublié -a

donc grep -a machintruc /dev/le_disque :

par erxemple :

```

root@electron boris # grep -a "/etc/"  /dev/hdc5

-@���'��@w�/���@� �ظ�����@ `��INA��@�#@@���@�uxINA�

����u�=��C d.��tz��    �m����ui��u��I>aaaaaaaaaaaaaaaa�?��5˯��IEND�B`�# /etc/security/chroot.conf

## 2. add the following groups to the /etc/group file:

        dodir /etc/iproute2

        insinto /etc/iproute2 ; doins ${S}/etc/iproute2/*

xterm   if grep /usr/bin/wrappers ${ROOT}/etc/profile > /dev/null

                einfo "/etc/profile already updated for wrappers"

        dodir /var/spool /var/log/cups /etc/cups

        SERVERROOT=${D}/etc/cups \

        PAMDIR=${D}/etc/pam.d \

        rm -rf ${D}/etc/init.d

        rm -rf ${D}/etc/pam.d

        rm -rf ${D}/etc/rc*

        rm -rf ${D}/etc/cups/{certs,interfaces,ppd}

                ${D}/etc/cups/cupsd.conf

        insinto /etc/pam.d ; newins ${FILESDIR}/cups.pam cups

        exeinto /etc/init.d ; newexe ${FILESDIR}/cupsd.rc6 cupsd

        insinto /etc/xinetd.d ; newins ${FILESDIR}/cups.xinetd cups-lpd

        #insinto /etc/cups; newins ${FILESDIR}/cupsd.conf-1.1.18 cupsd.conf

        install -m0711 -o lp -d ${ROOT}/etc/cups/certs

        install -d -m0755 ${ROOT}/etc/cups/{interfaces,ppd}

```

avec quelques options/ pipes/ .. tu peux affiner ta recherche et tomber sur le fichier qui t'interesse  :Smile: 

Et pas besoin d'autres outils que grep pour acceder au disque  :Smile:  , moi aussi la premiere fois que j'ai vu ca je suis tombé sur le cul (et c'est pratique, par exemple, dans un IUT ou j'ai un pote admin, des petits malins ont eu un access root et ont fait joujou, apres ca, ils ont effacé les logs .... grep les a retrouvés dans /dev/le_disque   :Wink: )

EDIT:

exemple concret plus propre :

```

root@electron boris # grep -aA 34 '# ChangeLog for media-sound/teamspeak2-server-bin' /dev/hdc5

# ChangeLog for media-sound/teamspeak2-server-bin

# Copyright 2000-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2

# $Header: /home/cvsroot/gentoo-x86/media-sound/teamspeak2-server-bin/ChangeLog,v 1.8 2004/04/28 16:56:15 eradicator Exp $

 

  28 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>

  teamspeak2-server-bin-2.0.20.1.ebuild:

  Removed second IUSE line.

 

  20 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>

  teamspeak2-server-bin-2.0.19.40.ebuild,

  teamspeak2-server-bin-2.0.20.1.ebuild:

  QA fix.

 

  20 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>

  teamspeak2-server-bin-2.0.20.1.ebuild:

  Fixed init script source filename.

 

*teamspeak2-server-bin-2.0.20.1 (20 Apr 2004)

 

  20 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>

  teamspeak2-server-bin-2.0.20.1.ebuild, files/teamspeak2-server.rc6:

  Version bump.  Closes bug #47758.  Thanks Dustin Parr <parr@cs.utk.edu>.

 

  01 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>

  teamspeak2-server-bin-2.0.19.40.ebuild:

  Stable on x86.

 

*teamspeak2-server-bin-2.0.19.40 (27 Sep 2003)

 

  27 Sep 2003; jje <jje@gentoo.org> teamspeak2-server-bin-2.0.19.40.ebuild:

  Initial revision. Still not sure that all of the file locations are correct, putting this out for review.

 

  Submitted by: Jeremy Johnson <jeremy@ic.ucsb.edu>

# Copyright 1999-2004 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License v2

```

Mais bon, on s'eloigne du sujet initial là   :Rolling Eyes: 

----------

## ghoti

Oui, bien vu !  :Smile: 

Je ne connaissais pas l'option "-a" : le man n'en parle pas (ou alors j'ai pas bien lu ? )  :Sad: 

Faudrait que j'utilise "info" plus souvent, car là c'est bel et bien renseigné !

Allez hop : dans les trucs et astuces !  :Smile: 

----------

## kernelsensei

si -a est dans le man ...

```

GREP(1)                                                                GREP(1)

                                                                                               

                                                                                               

                                                                                               

NAME

       grep, egrep, fgrep - print lines matching a pattern

                                                                                               

SYNOPSIS

       grep [options] PATTERN [FILE...]

       grep [options] [-e PATTERN | -f FILE] [FILE...]

                                                                                               

DESCRIPTION

       Grep  searches the named input FILEs (or standard input if no files are

       named, or the file name - is given) for lines containing a match to the

       given PATTERN.  By default, grep prints the matching lines.

                                                                                               

       In addition, two variant programs egrep and fgrep are available.  Egrep

       is the same as grep -E.  Fgrep is the same as grep -F.

                                                                                               

OPTIONS

       -A NUM, --after-context=NUM

              Print NUM  lines  of  trailing  context  after  matching  lines.

              Places  a  line  containing  --  between  contiguous  groups  of

              matches.

                                                                                               

       -a, --text

              Process a binary file as if it were text; this is equivalent  to

              the --binary-files=text option.

```

----------

## ghoti

 *kernel_sensei wrote:*   

> si -a est dans le man ...

 

Pas dans la version française !

```
NOM

       grep,  egrep,  fgrep  -  Afficher  les  lignes correspondant à un motif

       donné.

SYNOPSIS

       grep [ -[[AB] ]num ] [ -[CEFGVBchilnsvwx] ] [ -e ] motif | -ffichier  ]

       [ fichiers...  ]

DESCRIPTION

       Grep  Recherche  dans  les fichiers d'entrée indiqués les lignes corre-

       spondant à un certain motif.

       Si aucun fichier n'est fourni, ou si le nom `-' est mentionné, la  lec-

       ture se fait depuis l'entrée standard.

       Par défaut, grep affiche les lignes correspondant au motif.

       Il  existe  trois  variantes  principales  de  grep, controlées par les

       options suivantes.

       -G     Interprète le motif  comme  une  expression  rationnelle  simple

              (voir plus bas). C'est le comportement par défaut.

       -E     Interprète  le  motif  comme  une expression rationnelle étendue

              (voir plus bas).

       -F     Interprète le motif comme une liste de chaînes figées,  séparées

              par  des  Sauts de Lignes (NewLine). La correspondance est faite

              avec n'importe laquelle de ces chaînes.

       De plus, il existe deux variantes du programme : egrep et fgrep.  Egrep

       est  similaire  (sans être identique) à grep -E, et est compatible avec

       les versions UNIX historiques de egrep.  Fgrep est identique à grep -F.

       Toutes les variantes de grep acceptent les options suivantes :

       -num   Les  correspondances seront affichées avec num lignes supplémen-

              taires avant et après. Néanmoins, grep  n'affichera  jamais  une

              ligne plus d'une fois.

       -A num Afficher  num  lignes  supplémentaires après la ligne correspon-

              dante.

       -B num Afficher num lignes supplémentaires avant  la  ligne  correspon-

              dante.

       -C     est équivalent à -2.

       -V     Afficher  le  numéro  de  version de grep sur la sortie d'erreur

              standard. Ce numéro de version devra être inclus dans  tous  les

              rapports de bugs (voir plus bas).

       -b     Avant  chaque ligne, afficher son décalage (en octet) au sein du

              fichier d'entrée.

       -c     Ne pas afficher les résultats normaux. A la place,  afficher  un

              compte  des lignes correspondantes pour chaque fichier d'entrée.

              Avec l'option -v (voir plus bas), afficher les nombres de lignes

              ne correspondant pas au motif.

       -e motif

              Utiliser  le  motif  indiqué. Ceci permet de protéger les motifs

              commençant par -.

       -f fichier

              Lire le motif dans le fichier indiqué.

       -h     Ne pas afficher le nom des fichiers dans les  résultats  lorsque

              plusieurs fichiers sont parcourus.

       -i     Ignorer les différences majuscules/minuscules aussi bien dans le

              motif que dans les fichiers d'entrée.

       -L     Ne pas afficher les résultats normaux. A la place,  indiquer  le

              nom  des  fichiers  pour  lesquels  aucun  résultat n'aurait été

              affiché.

       -l     Ne pas afficher les résultats normaux. A la place,  indiquer  le

              nom  des  fichiers  pour  lesquels  des  résultats  auraient été

              affiches.

       -n     Ajouter à chaque ligne de sortie un préfixe contenant son numéro

              dans le fichier d'entrée.

       -q     Silence. Ne pas afficher les résultats normaux.

       -s     Ne  pas  afficher les messages d'erreurs concernant les fichiers

              inexistants ou illisibles.

       -v     Inverser la mise en correspondance, pour sélectionner les lignes

              ne correspondant pas au motif.

       -w     Ne sélectionner que les lignes contenant une correspondance for-

              mant un mot complet.  La sous-chaîne  correspondante  doit  donc

              être  soit  au  début  de la ligne, soit précédée d'un caractère

              n'appartenant pas à un mot.  De même elle doit se trouver soit à

              la  fin  de la ligne, soit être suivie par un caractère n'appar-

              tenant pas à un mot.  Les caractères composants  les  mots  sont

              les  lettres,  les  chiffres  et le souligné (`_').  ([NDT] Bien

              entendu les minuscules accentuées ne  sont  pas  des  lettres  !

              elles servent donc à séparer les mots...)

       -x     Ne  sélectionner  que les correspondances qui occupent une ligne

              entière.

EXPRESSIONS RATIONNELLES (REGULAR EXPRESSIONS)

       Une expression rationnelle est un motif qui permet de décrire un ensem-
```

Mais, d'accord : c'est pas une excuse à mon ignorance !  :Wink: 

----------

## solips

Bon, je vous mets pas fstab et grub.conf (ils sont bien configures) . Par contre en bootant sur le cd et apres un chroot si je fait "grep -i EXT /usr/src/linux/.config" :

# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set

#CONFIG_SERIAL_8250_EXTENDED is not set

#CONFIG_SPEAKUP_DECEXT is not set

#CONFIG_SND_GUSEXTREME is not set

CONFIG_EXT2_FS=y

#CONFIG_EXT2_FS_XATTR is not set

CONFIG_EXT3_FS=y

#CONFIG_EXT3_FS_XATTR is not set

y'a un probleme la non ?

----------

## kernelsensei

```

CONFIG_EXT2_FS=y

#CONFIG_EXT2_FS_XATTR is not set

CONFIG_EXT3_FS=y

#CONFIG_EXT3_FS_XATTR is not set

```

 *solips wrote:*   

> 
> 
> y'a un probleme la non ?
> 
> 

 

Ben on a CONFIG_EXT2_FS=y et CONFIG_EXT3_FS=y

ce qui veut dire que EXT2 et 3 sont supportés, donc niveau kernel c'est bon

----------

## kernelsensei

est tu sur de ton grub.conf  ?

car root (hd0,0) ne suffit pas !  (du moins je ne pense pas !)

moi j'ai :

```

title  Gentoo

root (hd0,4)

kernel /boot/vmlinuz-2.6.6 root=/dev/hdc5 vga=791 gentoo=noudev

initrd=/boot/initrd-kenshin-1024x768

```

----------

## solips

j'ai un truc du genre :

root (hd0,0)

kernel /boot/kernel-2.6.5-gentoo root=/dev/hda1 

par contre j'ai pas d'initrd et ton gentoo=noudev c'est quoi ?

----------

## PrEdAt0r

 *Quote:*   

> N'importe quoi !!!!   

 

alors dsl j'aitais pas sanser savoir cool !! car moi javais eu exactement ca !! et c'etait fstab !!

et lorque tu me di 

 *Quote:*   

> Or il s'agit ici d'un KERNEL PANIC : il ne sait pas monter la racine ! 
> 
> Alors, comment veux-tu qu'il aille lire le fstab ?

 

bin avec le livecd   :Mad:   en se relogant en tout remontant comme il faut et en se loggant en chroot !!!

et Ne le prend pas mal (loin de la de me faire des ennemis sur ce forum  :Wink:  ) mais c'est bien avec fstab qu'il sait avec qu'elle partition monter root (/) ?? 

sinon explique !!!

----------

## solips

Non, ici le kernel prend la partition racine en argument chez grub.conf

----------

## kernelsensei

@solips : ces 2 options sont facultatives et n'ont rien a voir avec ton probleme !

@PrEdAt0r : Mai aussi je ne voudrais pas que tu le prennes mal, mais comment tu fais pour lire un fichier sur une partoche que tu ne peux pas monter ?

en fait le kernel se base sur l'argument de boot passé par lilo/grub "root=", monte / en ro (ou rw si argument, ou inversement, argument ro et rw par defaut, bref ...) et SEULEMENT APRES, ce sont LES SCRIPTS DE DEMARRAGE qui (re)montent / et les autres partoches !

----------

## ghoti

Il serait intéressant de savoir comment grub "voit" le disque au départ.

solips : pourrais tu rebooter et, aussitôt que le menu grub s'affiche, faire ceci :

- Taper sur ESC (c'est pour supprimer le timer éventuel pour le boot par défaut)

- Taper "c" pour obtenir une ligne de commande.

Tu devrais voir le prompt "grub > "

Tape alors la commande : geometry (hd0) (attention : le clavier sera en QWERTY ! )

Il va afficher un truc qui rappelle un peu fdisk. Pourrais-tu nous donner cet output ?

----------

## maxtoo

Je pense que ca vient de ton kernel !

Tu n'as pas du activer la section IDE !

----------

## kernelsensei

simple a verifier :

```

grep IDEDISK /usr/src/linux/.config

```

----------

## solips

Bon, je viens d'installer les devlopment-source a la place des gentoo-dev-sources et ça fonctionne normalement . Merci a tous !

----------

## ghoti

Content pour toi !  :Smile: 

Pourtant, quelque part, je reste sur ma faim ...

----------

