Détail de la procédure de recherche pour l'attribution des rdisk(x)

 

 

 

 

0.0 Problématique

Qui n'a pas été confronté au problème suivant ?

Un multiboot est en place sur une configuration ; suite à diverses manipulations précédentes (dans le bios, au niveau du câblage physique des disques durs), on constate que le lancement d'un système sélectionné au menu du boot.ini ne fonctionne plus : c'est par exemple la ligne de commande incluant rdisk(1) qui conduit désormais à un plantage au démarrage ; on remplace rdisk(1) par rdisk(2) et cela fonctionne !

Pourquoi ? peu importe, puisque maintenant ça marche !

L'utilisation d'un fichier boot.ini "universel" comportant les lignes de commandes incluant rdisk(0), rdisk(1), rdisk(2), rdisk(3) permet de régler momentanément le problème mais ne l'explique pas !

 

--------------boot.ini "universel"-----------

[boot loader]
timeout=33
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="disque 0 partition 1"
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="disque 0 partition 2"
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="disque 0 partition 3"
multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="disque 0 partition 4"
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="disque 1 partition 1"
multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="disque 1 partition 2"
multi(0)disk(0)rdisk(1)partition(3)\WINDOWS="disque 1 partition 3"
multi(0)disk(0)rdisk(1)partition(4)\WINDOWS="disque 1 partition 4"
multi(0)disk(0)rdisk(2)partition(1)\WINDOWS="disque 2 partition 1"
multi(0)disk(0)rdisk(2)partition(2)\WINDOWS="disque 2 partition 2"
multi(0)disk(0)rdisk(2)partition(3)\WINDOWS="disque 2 partition 3"
multi(0)disk(0)rdisk(2)partition(4)\WINDOWS="disque 2 partition 4"
multi(0)disk(0)rdisk(3)partition(1)\WINDOWS="disque 3 partition 1"
multi(0)disk(0)rdisk(3)partition(2)\WINDOWS="disque 3 partition 2"
multi(0)disk(0)rdisk(3)partition(3)\WINDOWS="disque 3 partition 3"
multi(0)disk(0)rdisk(3)partition(4)\WINDOWS="disque 3 partition 4"

----------------------------------------------

 

Parfois, on veut quand même comprendre ! C'est l'objet de ce qui suit . . .

 

 

1.0 Câblage physique (sur la carte mère) de la configuration (1 graveur et 2 disques durs) :

(C'est un cas d'école propre à ma configuration et qui n'a pas –en toute rigueur- valeur universelle)

 

Channel 0 Master (IDE)   : GRAVEUR

Channel 0 Slave (IDE)    :   -

Channel 1 Master (IDE)   :   -

Channel 1 Slave (IDE)    : Disk1 (XP1 sur partition1)

Channel 2 (SATA)          : Disk2 (XP2 sur partition1)

Channel 3 (SATA)          :   -

 

1.1 Hard Disk Boot Priority (HDBP)(réglable dans le Bios) :

Channel 1 Slave (IDE)    : Disk1 (XP1 sur partition1)

Channel 2 (SATA)          : Disk2 (XP2 sur partition1)

 

1.2 Principe de la recherche (test des channels) : il s'effectue selon l'ordre imposé dans Hard Disk Boot Priority et toujours dans cet ordre (pour ce qui concerne au moins ma configuration hardware) : Channel 0 Master (IDE), Channel 0 Slave (IDE), Channel 1 Master (IDE), Channel 1 Slave (IDE), Channel 2 (SATA) et Channel 3 (SATA) - sur les channels sur lesquels sont connectés des disques durs (comportant un système d'exploitation ou non) en excluant –dans le cas qui nous occupe- les channels à "zéro" ainsi que les channels déjà testés (lors d'une passe précèdente) ou connectés à autre chose que des disques (le graveur par exemple).

(Cette régle est vérifiée au moins sur ma configuration et en toute rigueur n'a pas valeur universelle)

 

Première passe (affectation de rdisk(0)) : on recherche –en commençant par le début de la liste HDBP- le premier channel connecté à un disque abritant un système d'exploitation (SE)

Dans l'exemple, c'est Channel 1 Slave (IDE) qui abrite Disk1 (XP1 sur partition1) donc rdisk(0) est affecté à Disk1 (XP1 sur partition1).

 

Deuxième passe (affectation de rdisk(1)) : on recherche –en commençant par le début de la liste HDBP- si Channel 2 (SATA) abrite un SE

Affirmatif, c'est Disk2 (XP2 sur partition1) donc rdisk(1) est affecté à Disk2 (XP2 sur partition1)

(Remarque : la recherche commence par Channel 2 (SATA) puisque Channel 0 Master (IDE) est connecté au graveur, Channel 0 Slave (IDE) ainsi que Channel 1 Master (IDE) sont à "zéro" et que Channel 1 Slave (IDE) a été testé).

 

Troisième passe et Quatrième passe sans objet puisqu'il n'y a que deux disques 

 

L'affectation est donc la suivante :

rdisk(0) est affecté à Disk1 (XP1 sur partition1)

rdisk(1) est affecté à Disk2 (XP2 sur partition1)

rdisk(2) non affecté

rdisk(3) non affecté

 

Dans le cas de deux disques durs, il n'y a pas de souci, c'est toujours rdisk(0) et rdisk(1) qui sont affectés mais ce n'est plus le cas lorsqu'un troisième disque (ne comportant pas de SE) entre dans la danse  . . !

 

2.0 Câblage physique (sur la carte mère) de la configuration (1 graveur et 3 disques durs) :

(C'est un cas d'école propre à ma configuration et qui n'a pas –en toute rigueur- valeur universelle)

 

Channel 0 Master (IDE)   : GRAVEUR

Channel 0 Slave (IDE)    : Disk2 (XP2 sur partition1)

Channel 1 Master (IDE)   : Disk3 (données)

Channel 1 Slave (IDE)    :   -

Channel 2 (SATA)          : Disk1 (XP1 sur partition1)

Channel 3 (SATA)          :   -

 

2.1 Hard Disk Boot Priority (dans le Bios) :

 

Channel 2 (SATA)          : Disk1 (XP1 sur partition1)

Channel 1 Master (IDE)   : Disk3 (données)

Channel 0 Slave (IDE)    : Disk2 (XP2 sur partition1)

 

Première passe (affectation de rdisk(0)) : on recherche –en commençant par le début de la liste HDBP- le premier channel connecté à un disque abritant un système d'exploitation (SE)

Dans l'exemple, c'est Channel 2 (SATA) qui abrite Disk1 (XP1 sur partition1) donc rdisk(0) est affecté à Disk1 (XP1 sur partition1).

 

Deuxième passe (affectation de rdisk(1)) : on recherche –en commençant par le début de la liste HDBP- si Channel 0 Slave (IDE) abrite un SE

Affirmatif, c'est Disk2 (XP2 sur partition1) donc rdisk(1) est affecté à Disk2 (XP2 sur partition1)

(Remarque : la recherche commence par Channel 0 Slave (IDE) puisque Channel 0 Master (IDE) est connecté au graveur).

 

Troisième passe (affectation de rdisk(2)) : on recherche –en commençant par le début de la liste HDBP- si Channel 1 Master (IDE) abrite un SE

Négatif, rdisk(2) conduit à un plantage si on sélectionne la ligne du boot.ini qui le contient

(Remarque : la recherche commence par Channel 1 Master (IDE) puisque Channel 0 Master (IDE) est connecté au graveur et que Channel 0 Slave (IDE) a été testé).

 

Quatrième passe sans objet puisqu'il n'y a que trois disques

 

L'affectation est donc la suivante :

rdisk(0) est affecté à Disk1 (XP1 sur partition1)

rdisk(1) est affecté à Disk2 (XP2 sur partition1)

rdisk(2) non affecté

rdisk(3) non affecté

 

 

2.2 Hard Disk Boot Priority (dans le Bios) :

(on change l'ordre des disques dans 2.1 Hard Disk Boot Priority mais on laisse inchangé leur câblage physique)

 

Channel 0 Slave (IDE)    : Disk2 (XP2 sur partition1)

Channel 1 Master (IDE)   : Disk3 (données)

Channel 2 (SATA)          : Disk1 (XP1 sur partition1)

 

Première passe (affectation de rdisk(0)) : on recherche –en commençant par le début de la liste HDBP- le premier channel connecté à un disque abritant un système d'exploitation (SE)

Dans l'exemple, c'est Channel 0 Slave (IDE) qui abrite Disk2 (XP2 sur partition1) donc rdisk(0) est affecté à Disk2 (XP2 sur partition1).

 

 

Deuxième passe (affectation de rdisk(1)) : on recherche –en commençant par le début de la liste HDBP- si Channel 1 Master (IDE) abrite un SE

Négatif, car Disk3 abrite des données et rdisk(1) conduit à un plantage si on sélectionne la ligne du boot.ini qui le contient

(Remarque : la recherche commence par Channel 1 Master (IDE) puisque Channel 0 Master (IDE) est connecté au graveur et que Channel 0 Slave (IDE) a été testé).

 

Troisième passe (affectation de rdisk(2)) : on recherche –en commençant par le début de la liste HDBP- si Channel 2 (SATA) abrite un SE

Affirmatif, c'est Disk1 (XP1 sur partition1) donc rdisk(2) est affecté à Disk1 (XP1 sur partition1)

(Remarque : la recherche commence par Channel 2 (SATA) puisque Channel 0 Master (IDE) est connecté au graveur, que Channel 0 Slave (IDE) a été testé ainsi que Channel 1 Master (IDE) et que Channel 1 Slave (IDE) est à "zéro").

 

Quatrième passe sans objet puisqu'il n'y a que trois disques

 

 

L'affectation est donc la suivante :

rdisk(0) est affecté à Disk2 (XP2 sur partition1)

rdisk(1) non affecté

rdisk(2) est affecté à Disk1 (XP1 sur partition1)

rdisk(3) non affecté

 

2.3 Hard Disk Boot Priority (dans le Bios) :

(on conserve l'ordre des disques dans 2.1 Hard Disk Boot Priority mais on modifie leur câblage physique par rapport à 2.0

 

Channel 2 (SATA)          : Disk1 (XP1 sur partition1)

Channel 0 Slave (IDE)    : Disk3 (données)

Channel 1 Master (IDE)   : Disk2 (XP2 sur partition1)

 

 

Première passe (affectation de rdisk(0)) : on recherche –en commençant par le début de la liste HDBP- le premier channel connecté à un disque abritant un système d'exploitation (SE)

Dans l'exemple, c'est Channel 2 (SATA) qui abrite Disk1 (XP1 sur partition1) donc rdisk(0) est affecté à Disk1 (XP1 sur partition1).

 

Deuxième passe (affectation de rdisk(1)) : on recherche –en commençant par le début de la liste HDBP- si Channel 0 Slave (IDE) abrite un SE

Négatif, car Disk3 abrite des données et rdisk(1) conduit à un plantage si on sélectionne la ligne du boot.ini qui le contient

(Remarque : la recherche commence par Channel 0 Slave (IDE) puisque Channel 0 Master (IDE) est connecté au graveur).

 

Troisième passe (affectation de rdisk(2)) : on recherche –en commençant par le début de la liste HDBP- si Channel 1 Master (IDE) abrite un SE

Affirmatif, c'est Disk2 (XP2 sur partition1) donc rdisk(2) est affecté à Disk2 (XP2 sur partition1)

(Remarque : la recherche commence par Channel 1 Master (IDE) puisque Channel 0 Master (IDE) est connecté au graveur et que Channel 0 Slave (IDE) a été testé).

 

Quatrième passe sans objet puisqu'il n'y a que trois disques

 

L'affectation est donc la suivante :

rdisk(0) est affecté à Disk1 (XP1 sur partition1)

rdisk(1) non affecté

rdisk(2) est affecté à Disk2 (XP2 sur partition1)

rdisk(3) non affecté

 

3.0 Câblage physique (sur la carte mère) de la configuration (1 graveur et 4 disques durs) :

(C'est un cas d'école propre à ma configuration et qui n'a pas –en toute rigueur- valeur universelle)

 

Channel 0 Master (IDE)   : GRAVEUR

Channel 0 Slave (IDE)    : Disk2 (XP2 sur partition1)

Channel 1 Master (IDE)   : Disk4 (données)

Channel 1 Slave (IDE)    :   -

Channel 2 (SATA)          : Disk1 (XP1 sur partition1)

Channel 3 (SATA)          : Disk3 (XP3 sur partition1)

 

 

3.1 Hard Disk Boot Priority (dans le Bios) :

 

Channel 0 Slave (IDE)    : Disk2 (XP2 sur partition1)

Channel 1 Master (IDE)   : Disk4 (données)

Channel 3 (SATA)          : Disk3 (XP3 sur partition1)

Channel 2 (SATA)          : Disk1 (XP1 sur partition1)

 

Première passe (affectation de rdisk(0)) : on recherche –en commençant par le début de la liste HDBP- le premier channel connecté à un disque abritant un système d'exploitation (SE)

Dans l'exemple, c'est Channel 0 Slave (IDE) qui abrite Disk2 (XP2 sur partition1) donc rdisk(0) est affecté à Disk2 (XP2 sur partition1).

 

Deuxième passe (affectation de rdisk(1)) : on recherche –en commençant par le début de la liste HDBP- si Channel 1 Master (IDE) abrite un SE

Négatif, Négatif, car Disk4 abrite des données et rdisk(1) conduit à un plantage si on sélectionne la ligne du boot.ini qui le contient

(Remarque : la recherche commence par Channel 1 Master (IDE) puisque Channel 0 Master (IDE) est connecté au graveur et que Channel 0 Slave (IDE) a été testé).

 

Troisième passe (affectation de rdisk(2)) : on recherche –en commençant par le début de la liste HDBP- si Channel 2 (SATA) abrite un SE

Affirmatif, c'est Disk1 (XP1 sur partition1) donc rdisk(2) est affecté à Disk1 (XP1 sur partition1)

(Remarque : la recherche commence par Channel 2 (SATA) puisque Channel 0 Master (IDE) est connecté au graveur, que Channel 0 Slave (IDE) a été testé et que Channel 1 Slave (IDE) est à "zéro").

 

 

Quatrième passe (affectation de rdisk(3)) : on recherche –en commençant par le début de la liste HDBP- si Channel 3 (SATA) abrite un SE

Affirmatif, c'est Disk3 (XP3 sur partition1) donc rdisk(3) est affecté à Disk3 (XP3 sur partition1)

(Remarque : la recherche commence par Channel 3 (SATA) puisque Channel 0 Master (IDE) est connecté au graveur, que Channel 0 Slave (IDE) a été testé ainsi que Channel 1 Master (IDE) et Channel 2 (SATA) et que Channel 1 Slave (IDE) est à "zéro").

 

L'affectation est donc la suivante :

rdisk(0) est affecté à Disk2 (XP2 sur partition1)

rdisk(1) non affecté

rdisk(2) est affecté à Disk1 (XP1 sur partition1)

rdisk(3) est affecté à Disk3 (XP3 sur partition1)

 

 

3.2 Hard Disk Boot Priority (dans le Bios) :

(on change l'ordre des disques dans 3.1 Hard Disk Boot Priority mais on laisse inchangé leur câblage physique)

 

Channel 3 (SATA)          : Disk3 (XP3 sur partition1)

Channel 2 (SATA)          : Disk1 (XP1 sur partition1)

Channel 0 Slave (IDE)    : Disk2 (XP2 sur partition1)

Channel 1 Master (IDE)   : Disk4 (données)

 

Première passe (affectation de rdisk(0)) : on recherche –en commençant par le début de la liste HDBP- le premier channel connecté à un disque abritant un système d'exploitation (SE)

Dans l'exemple, c'est Channel 3 (SATA) qui abrite Disk3 (XP3 sur partition1) donc rdisk(0) est affecté à Disk3 (XP3 sur partition1).

 

Deuxième passe (affectation de rdisk(1)) : on recherche –en commençant par le début de la liste HDBP- si Channel 0 Slave (IDE) abrite un SE

Affirmatif, c'est Disk2 (XP2 sur partition1) donc rdisk(1) est affecté à Disk2 (XP2 sur partition1)

(Remarque : la recherche commence par Channel 0 Slave (IDE) puisque Channel 0 Master (IDE) est connecté au graveur).

 

Troisième passe (affectation de rdisk(2)) : on recherche –en commençant par le début de la liste HDBP- si Channel 1 Master (IDE) abrite un SE

Négatif, car Disk4 abrite des données et rdisk(2) conduit à un plantage si on sélectionne la ligne du boot.ini qui le contient

(Remarque : la recherche commence par Channel 1 Master (IDE) puisque Channel 0 Master (IDE) est connecté au graveur, que Channel 0 Slave (IDE) a été testé).

 

Quatrième passe (affectation de rdisk(3)) : on recherche –en commençant par le début de la liste HDBP- si Channel 2 (SATA) abrite un SE

Affirmatif, c'est Disk1 (XP1 sur partition1) donc rdisk(3) est affecté à Disk1 (XP1 sur partition1)

(Remarque : la recherche commence par Channel 2 (SATA) puisque Channel 0 Master (IDE) est connecté au graveur, que Channel 0 Slave (IDE) a été testé ainsi que Channel 1 Master (IDE) et que Channel 1 Slave (IDE) est à "zéro").

 

L'affectation est donc la suivante :

rdisk(0) est affecté à Disk3 (XP3 sur partition1)

rdisk(1) est affecté à Disk2 (XP2 sur partition1)

rdisk(2) non affecté

rdisk(3) est affecté à Disk1 (XP1 sur partition1)

 

 

 

CONCLUSION :

 

Remarque liminaire : Cette règle a été vérifiée sur une configuration comportant 2 ports IDE et 2 ports SATA

 

On observe que l'association entre les rdisk(x) et les disques abritant les systèmes bootables XP dépend -dans le cas général- non seulement de l'ordre dans la liste "Hard Disk Boot Priority" du bios mais également du câblage physique des disques durs (quand il n'y a pas autant de systèmes XP (un système XP sur une partition de disque) que de disques durs).

Pour ce qui concerne ma configuration, le raisonnement théorique développé ci-dessus a toujours été validé par la mise en œuvre pratique.

J'ai vérifié le fonctionnement de cette règle avec une configuration de 4 disques : 3 systèmes XP (XP1, XP2 cloné et XP3 cloné) sur 3
disques différents plus un disque de données. Ce qui concrétement signifie qu'au niveau du fichier boot.ini un rdisk(x) parmi les rdisk(1), rdisk(2), rdisk(3) conduit à un plantage ! Oui mais lequel ? La règle ci-dessus permet de le trouver sans effectuer concrètement l'action.

 

CRD~19 décembre 2008