# [Noyau] Mélange des disques au démarrage (résolu)

## DidgeriDude

Bonjour à tous.

Je me permets de solliciter votre aide car là, je sèche vraiment :

Sur une machine (amd64), le noyau 3.5.7 fonctionne parfaitement. Par contre, depuis la version 3.6.11 (et ensuite 3.7.9 puis 3.7.10), impossible de booter la machine :

```
VFS: cannot open root device "sda3" or unknown-block(0,3): error -123
```

puis plus loin l'inévitable :

```
kernel panic - not syncing: VFS: unable to mount root fs on unknown block(0,3)
```

Le problème vient donc du fait que le noyau ne trouve pas ma partition /dev/sda3 ; et là je remarque qu'il me trouve mon disque sous le nom /dev/sde !

En effet je possède 4 slots (lecteurs de carte SD), qui, à mon avis, portent maintenant les noms /dev/sda à /dev/sdd. De plus, si un disque USB est branché, il nomme mon disque /dev/sdf !

J'avoue ne pas comprendre pourquoi mon disque dur n'est plus le premier détecté, ou simplement le premier nommé.

Comme info, je tiens à dire que le noyau est compilé à la main, sans initrd ni genkernel. Les noyaux incriminés par ce comportement ont été configurés, comme tous les autres avant eux, avec make oldconfig.

Je n'ai pas envie de mettre dans ce post le .config du noyau (qui est long, même sans les commentaires) car je ne sais pas vraiment quelle partie est la plus à même d'être intéressante pour mon problème. Mais si vous en avez besoin, je peux fournir tout ou partie de la config.

Merci d'avance pour toute idée,

Fab.Last edited by DidgeriDude on Tue Mar 26, 2013 6:18 pm; edited 1 time in total

----------

## mysix

Salut,

Cela peut arriver lorsqu'il y a un changement au niveau du bios.

Mais ce que tu peux faire, c'est de démarrer sur un livecd tel que sysrescuecd

et dans ton fichier grub.conf dans la partition boot, tu mets les références UUID de tes disques

à la place des noms logiques /dev/sdx.

Regardes ici: http://www.gentoo-wiki.info/Gentoo:/dev/disk/by-uuid

Ainsi, le nom des disques peuvent autant de fois changer sans pour autant te bloquer au démarrage  :Wink: 

----------

## DidgeriDude

Merci de ta réponse.

J'avais déjà regardé cette histoire d'UUID directement dans grub. Par contre, dans mes souvenirs, ce n'était pas directement géré par grub, mais grâce à l'initrd qui l'accompagnait, du moins jusqu'à une certaine version de grub (<2 ?).

De plus, ce n'est pas grub, mais grub-static qui est installé sur cette machine en amd64 no-multilib, et je ne suis pas sûr que la version gère les UUID.

Mais autant je peux comprendre que c'est le BIOS qui fait des siennes, autant je ne pige pas pourquoi il n'y a aucun problème avec le noyau 3.5.7 (le BIOS n'est-il pas reconnu de la même manière d'une version du noyau à une autre ? Si c'est le cas, pourquoi rien ne m'est apparu dans mon make oldconfig ?...)

Bref, un truc m'échappe...

PS : Peut-être qu'un flash de BIOS...

----------

## StinGer_Uesugi

Je confirme que tu as besoin d'un ititramdisk pour pouvoir passer une ligne root=UUID= au kernel. L'initramdisk fait ensuite un findfs pour chercher le disque correspondant à l'UUID spécifié.

J'ai fait un initrd il y a peu, ce n'est pas très compliqué. Si tu veux partir sur cette option, fais signe !  :Wink: 

----------

## GentooUser@Clubic

Grub2 est largement scriptable, j'imagine qu'il est possible de lui faire faire une recherche de fs pour passer la bonne ligne root=/dev/sdX au noyau.

Sinon compiler l'USB en module, comme ça il n’interférera plus avec le early boot.

L'ordre de détection du matériel peut changer d'un noyau à l'autre et d'après ce que j'ai lu à l'époque il n'y as pas de moyen de modifier la priorité d'un module compilé en dur dans le noyau.

EDIT: Y'a peut-être un autre moyen d'utiliser les UUID, sans initramfs, lu dans /usr/src/linux/init/do_mounts.c :

 *Quote:*   

> /*
> 
>  *	Convert a name into device number.  We accept the following variants:
> 
>  *
> ...

 

Donc un root=PARTUUID=SSSSSSSS-PP devrait marcher, mais attention  c'est l'uuid de la partition pas celui du système de fichiers qu'on utilise plus classiquement avec l'initramfs, et j'ai pas trouvé comment on récupère ce "NT disk signature"

Et apparemment c'est un ajout est assez récent, donc lire dans le fichier /usr/src/linux/init/do_mounts.c si c'est déjà disponible pour le noyau que vous utilisez.

EDIT2: comme nt disk signature essai 

```
 od --address-radix=none --skip-bytes 440 --read-bytes=4 --format=x1 /dev/sdX
```

Last edited by GentooUser@Clubic on Sat Mar 09, 2013 8:57 pm; edited 1 time in total

----------

## bivittatus

Salut!

J'ai eu le même problème il y a quelques temps, mais je ne sais plus avec quel kernel.

Par contre, le fait de passer en AHCI au niveau du bios et de ne plus y déclarer mes disques a solutionné le problème (à chaque boot, il y a une recherche de disques avant le lancement de grub).

Je n'ai pas assez de connaissances pour expliquer pourquoi ça a solutionné le problème, mais en tout cas, depuis, plus de soucis!

Si ça peut aider... :Wink: 

----------

## guilc

 *bivittatus wrote:*   

> le fait de passer en AHCI au niveau du bios 

 

Si ce n'est pas déjà fait (et qu'il n'y a pas de windows déjà installé en dual boot), c'est effectivement à faire de toute urgence.

Le support SATA AHCI est très supérieur à tout le reste (branchement des disques sata à chaud, NCQ, meilleures perfs, etc...)

Attention, s'il y a déja un windows d'installé en parallèle, ça va le faire partir en écran bleu au boot (il faudra lui faire une "réparation du systeme")

----------

## DidgeriDude

Tout d'abord, merci à tous pour vos idées.

@StinGer_Uesugi : J'avoue ne pas être trop chaud pour créer un initrd. Ça fonctionnait bien sans, je pense donc que ça doit continuer sans. Par contre j'ai bien suivi ton post sur l'initrd, et j'ai grandement apprécié les infos y figurant, surtout un lien menant vers une démarche pas à pas pour en un créer un de toutes pièces...

@GentooUser@Clubic : J'ai trouvé l'idée séduisante d'utiliser le PARTUUID mais à part un vieux soft de Win NT (FTEdit.exe) pour modifier le NT Disk Signature, je n'ai pas trouvé grand chose pour ne serait-ce qu'obtenir cette valeur. Mais je garde ça sous le coude...

@bivittatus et @guilc : Là j'aime bien. J'avais trouvé des histoires à propos de l'AHCI mais la machine qui pose problème est celle d'un collègue et dont je ne m'occupe que de la maintenance lorqu'il est dépassé. Et donc, n'ayant pas accès à son BIOS, je n'avais pas creusé cette piste. Je vais voir et je vous tiens au courant. (Par contre, aucun Windows donc pas de souci en vue de ce côté-là !)

Merci encore à tous.

----------

## GentooUser@Clubic

D'après ce que j'ai cru lire la "NT Disk Signature" n'est autre que la Signature facultative dont parle l'article de wikipedia, selon ces deux sites ils ont la même adresse (01B8) : http://fr.wikipedia.org/wiki/Master_boot_record http://thestarman.narod.ru/asm/mbr/GPT.htm

J'ai déjà donné une commande pour la récupérer dans mon post précédent :

```
od --address-radix=none --skip-bytes 440 --read-bytes=4 --format=x4 /dev/sdX
```

Par contre j'ai aussi remarqué que tous les éditeurs de partitions n'écrivent pas cette signature (parted le fait, pas cfdisk), si elle n’est pas présente, il dois être safe de l'écrire soit-même, par contre faut pas se rater et bien sauvegarder son MBR avant.Last edited by GentooUser@Clubic on Sun Mar 10, 2013 3:35 pm; edited 1 time in total

----------

## DidgeriDude

Oups désolé, je n'avais pas vu la fin du message comme étant une commande pour le lire.

----------

## DidgeriDude

Bonjour à tous.

Désolé du délai de réponse, je n'ai eu accès à la machine que récemment.

Bon alors c'est résolu bien que cela ne me plaise pas : j'ai en effet testé les idfférentes solutions que vous avez proposées mais rien de concluant...

Alors je me suis résolu à compiler l'USB en module...

Autant ça résoud le souci, autant je ne comprends pas la raison de ce problème...

Merci encore à vous tous pour vos propositions et vos idées.

Fab.

----------

## GentooUser@Clubic

 *Quote:*   

> Autant ça résoud le souci, autant je ne comprends pas la raison de ce problème... 

 

Simple si la couche USB est chargé avant celle du SATA ses périphériques apparaîtrons en premier, une modification des interdépendances entre les différentes parties du noyaux à du provoquer ce changement d'ordre.

Juste pour info c'est quoi qui ne convient pas avec ma solution ? Noyau trop vieux ou le programme de partitionnement n'a pas écrit de signature ?

----------

## Biloute

Pour obtenir l'UUID de mes partitions j'utilisait gdisk avec sysrescuecd.

----------

## GentooUser@Clubic

gdisk c’est pour le GPT (ce qui simplifierait tout) mais anéfé fdisk, lui, fournit cette information.

----------

## DidgeriDude

Désolé pour le temps de réponse...

 *GentooUser@Clubic wrote:*   

> Simple si la couche USB est chargé avant celle du SATA ses périphériques apparaîtrons en premier, une modification des interdépendances entre les différentes parties du noyaux à du provoquer ce changement d'ordre.

 

Oui, je comprends le principe. Ce qui m'embête en fait, c'est que je suis dans l'impossibilité de faire en sorte que le noyau garde l'ordre de chargement qu'il avait avant, et qui me convenait parfaitement.

Mais bon, mon souci vient peut-être aussi du fait qu'inconsciemment, je pense qu'il est naturel de charger le support des disques durs avant celui de l'USB, alors que ce n'est qu'arbitraire...

 *GentooUser@Clubic wrote:*   

> Juste pour info c'est quoi qui ne convient pas avec ma solution ? Noyau trop vieux ou le programme de partitionnement n'a pas écrit de signature ?

 

J'ai bien récupéré la signature via ta commande mais la modification du grub.conf avec PARTUUID m'a donné le même message d'erreur. Peut-être que cela aurait fonctionnné avec grub2... Ne possédant pas la machine, j'ai tenté une autre approche...

Merci en tout cas pour ton aide.Last edited by DidgeriDude on Tue Apr 16, 2013 8:11 pm; edited 1 time in total

----------

## GentooUser@Clubic

 *DidgeriDude wrote:*   

> 
> 
> J'ai bien récupéré la signature via ta commande mais la modification du grub.conf avec PARTUUID m'a donné le même message d'erreur. Peut-être que cela aurait fonctionnné avec grub2... Ne possédant pas la machine, j'ai tenté une autre approche...
> 
> 

 Grub n'a rien à voir là dedans, donc soit ton noyau est trop vieux pour cette fonctionnalité soit tu a oublié de donner l'index de la partition en plus de l'uuid.

----------

## DidgeriDude

 *GentooUser@Clubic wrote:*   

> Grub n'a rien à voir là dedans, donc soit ton noyau est trop vieux pour cette fonctionnalité soit tu a oublié de donner l'index de la partition en plus de l'uuid.

 

OK pour Grub ! Par contre, oui je suis un boulet : j'avais oublié l'index... Pas grave, je testerais ça sur une de mes machines à l'occasion.

Merci encore.

----------

