# Impossible de démarrer HP Proliant RAID/SAS

## T0MuX

Bonjour à tous !

J'ai recyclé récemment un HP Proliant ML110. Je suis ravi, seule l'alim et la ram était morte ^^

Il dispose d'une carte RAID/SAS HP SmartArray E200. Je décide donc d'en faire mon serveur maison et de lui installer Gentoo, sans interface graphique.

À savoir, j'ai un RAID 1 avec 2x160Go en bon état.

L'install s'est très bien passé. Cependant petit hic, je peine à le faire démarrer. Je n'arrive d'ailleurs pas vraiment à savoir de quoi ça vient. Je pense qu'il manque soit un module grub, soit un module dans l'initrd ou peut être juste le kernel.

Ma partition de boot se nomme /dev/cciss/c0d0p1 elle a aussi un UUID que Grub utilise pour l'amorcer. Bon visiblement Grub y accède bien puisque, sur les captures ci-jointes on voit bien qu'il charge le kernel et l'initrd sans souci. Je pense du coup à un truc manquant dans le noyau.

Voilà ce que j'ai au boot : https://0x0.st/JLx.jpg

----------

## sebB

Salut,

Plusieurs pistes:

T'as regardé dans les parametres SCSI si t'as pas oublié une option?

Option de systeme de fichier manquante?

Config de grub foireuse?

RAID mal configuré (là j'y connais rien...)?

Comment t'as généré ton initrd?

----------

## takhisis_astrafall

Il faudrait aussi rebooter sur le "livecd" pour : 

- afficher ta liste de partition ( fdisk -l par exemple)

- retrouver le module utilisé par ta carte raid ( et le reste ) ( lspci -vvv te permettra de le faire ) et t'assurer que les drivers sont bien en dur

- vérifier que ton FS soit bien compilé en dur dans le noyau aussi 

- récupérer la config de ton kernel (je ne sais plus si genkernel copie un .config dans le /boot ) (et y aller à coup de grep pour vérifier que tout est là)

----------

## brokenHeart

Hello, 

j'ai installé il y a quelques temps un serveur HP Proliant DL360 G4p un vieux serveur lame mais le module de la carte raid est le même : CCIS

Faut que le RAID soit déjà correctement configuré au niveau hardware. (je n'ai fait qu'un volume avec tous les disques (les 2 disques de 72Gb)) après c'est comme si on avait un seul disque mais le nommage est un peu particulier ...

Chez moi c'est comme ça :

```
Device            Boot   Start       End   Sectors  Size Id Type

/dev/cciss/c0d0p1         2048    264191    262144  128M 83 Linux

/dev/cciss/c0d0p2       264192   1312767   1048576  512M 82 Linux swap / Solaris

/dev/cciss/c0d0p3      1312768 142253279 140940512 67.2G 83 Linux
```

Pourquoi tu vas pas voir dans un shell grub comment ça se passe comme le conseille grub ?

Tu fais 

```
ls
```

 et tu vois les partitions que ça te sort. EDIT : Chez moi : (hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) 

Normalement ton root ça serait plutôt du 

```
/dev/cciss/c0d0p3
```

 à moins que tu n'aies fait qu'une seule partition (?)

Partant de là, il peut suffire d'éditer la ligne de boot de grub si tout ce qui lui manque c'est le root : CTRL+E au boot, correction puis avec un peu de chance CTRL+X et la becane reprends son boot comme si de rien n'était. Voir même le saisir directement sur le prompt "root block device()::" ...

Avec la syntaxe un peu particulière imposée par le module du contrôleur ça m'étonnerait pas que grub se soit planté à l'install.

Sinon pour celui qui veut se prendre la tête : Éventuellement vérifier les variables dans grub rescue avec 

```
set
```

. Ensuite à coup de 

```
ls
```

 (Dans un système bios avec disques non GPT par exemple : ls (hd0,1)/) faut trouver le boot, le root, les indiquer dans les variables : 

Le chemin des modules de grub est normalement dans la variable cmdpath et dans un système BIOS le chemin normal est dans /boot/grub/i386-pc/ 

des fois cette variable s'initialise mal et il faut la saisir manuellement mais il y a une syntaxe particulière dans grub et il faut faire 

```
set cmdpath=(<nom_du_disque>,<num_partition>)/grub/i386-pc/
```

 en remplaçant <nom_du_disque>,<num_partition> par ce que donne la commande ls dans le shell grub pour /boot. EDIT : Chez moi ça donnerait set cmdpath=(hd0,msdos1)/grub/i386-pc/ 

A partir de là il devient possible de faire du insmod. 

Suivant ce qui est chargé ou pas, il faut charger les modules (controleurs, filesystem, etc ...) que chargerait normalement grub avec 

```
insmod
```

, si les modules linux sont dans le kernel, l'initrd et le kernel seront suffisant.

En mode rescue c'est clavier qwerty et tant qu'on a pas chargé de modules "de confort" tout ce qu'on a comme commandes c'est ls, set et insmod.

A la fin c'est 

```
insmod linux
```

 ensuite on donne la bonne ligne de boot 

```
linux (<nom_du_disque>,<num_partition>)/vmlinuz root=/dev/xxx
```

 Par exemple dans un système bios sans initrd ça donnerait : linux (hd0,msdos1)/vmlinuz-4.4.6-gentoo root=/dev/sda3 mais a adapter en fonction de ce voit grub comme noms de partition. 

Une fois que le module linux a été chargé il devient possible de charger plein de trucs dans le shell grub, on peut même avoir un clavier français, l'aide (avec help) et trouver les UUID des devices (il y a une commande mais la j'ai pas de grub sous la main) ... Pour trouver les bons noms de kernel et d'initrd on peut faire du ls sur les volumes avec la syntaxe grub, ce qui valide au passage le chargement des modules gérant les fs et les contrôleurs ...

On tape ensuite 

```
boot
```

 et si on a pas fait d'erreur ça démarre.

Je n'ai pas noté quand je l'ai installé, mais je crois que je n'ai pas eu d'autre choix que de booter comme ça la première fois, puis une fois booté, vérification des modules du kernel, un petit 

```
grub-mkconfig -o /boot/grub/grub.cfg
```

 vérification du grub.cfg et roule ...

C'est assez mal documenté grub (ou un peu trop) mais globalement tout ce qu'il faut faire manuellement en mode rescue, c'est ce que ferait le grub.cfg lors d'un démarrage normal bien configuré.

... faut que je publie ma procédure de démarrage d'urgence mais je ne l'ai validé qu'avec des systèmes BIOS ou dans des machines virtuelles.

Je démarrerais bien ce serveur pour voir comment il est installé mais mes voisins risquent de brailler, il fait bien du 90db quand il boot ce cochon ...

EDIT : je viens de le booter pour voir, je ne me suis vraiment pas foulé : genkernel ...

schéma de partition :

```
fdisk -l /dev/cciss/c0d0

Disque /dev/cciss/c0d0 : 67,9 GiB, 72833679360 octets, 142253280 secteurs

Unités : secteur de 1 × 512 = 512 octets

Taille de secteur (logique / physique) : 512 octets / 512 octets

taille d'E/S (minimale / optimale) : 512 octets / 512 octets

Type d'étiquette de disque : dos

Identifiant de disque : 0x00000000

Périphérique      Amorçage  Début       Fin  Secteurs Taille Id Type

/dev/cciss/c0d0p1             2048    264191    262144   128M 83 Linux

/dev/cciss/c0d0p2           264192   1312767   1048576   512M 82 partition d'échange Linux / Solaris

/dev/cciss/c0d0p3          1312768 142253279 140940512  67,2G 83 Linux

```

```
cat /etc/fstab

# /etc/fstab: static file system information.

#

# noatime turns off atimes for increased performance (atimes normally aren't

# needed); notail increases performance of ReiserFS (at the expense of storage

# efficiency).  It's safe to drop the noatime options if you want and to

# switch between notail / tail freely.

#

# The root filesystem should have a pass number of either 0 or 1.

# All other filesystems should have a pass number of 0 or greater than 1.

#

# See the manpage fstab(5) for more information.

#

# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.

#/dev/cciss/c0d0p1      /boot           ext2            defaults,noatime        0 2

UUID="61x6x993-xxxxxxxxxxxxxxxxxxxxxx"     /boot           ext2            defaults,noatime        0 2

#/dev/cciss/c0d0p3      /               ext4            noatime         0 1

UUID="8dxdf644-xxxxxxxxxxxxxxxxxxxxxx"     /               ext4            noatime         0 1

#/dev/cciss/c0d0p2      none            swap            sw              0 0

UUID="eex50x46-xxxxxxxxxxxxxxxxxxxxxx"     none            swap            sw              0 0

#/dev/cdrom             /mnt/cdrom      auto            noauto,ro       0 0

#/dev/fd0               /mnt/floppy     auto            noauto          0 0
```

La syntaxe mise en commentaire fonctionnerait probablement aussi :

et dans le grub.cfg ça donne :

```
linux   /kernel-genkernel-x86_64-4.4.6-gentoo root=UUID=8dxdf644-xxxxxxxxxxxxxxxxxxxxxx ro

initrd  /initramfs-genkernel-x86_64-4.4.6-gentoo
```

mais root=/dev/cciss/c0d0p3 fonctionnerait probablement aussi. 

J'ai été voir dans un shell grub, il voit ma grappe en (hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) donc ce que j'ai écrit plus haut à propos de grub s'applique ...

il faut juste que les variables soient correctement initialisées avec les bon chemin et rajouter une ligne initrd ...

```
lspci -vvvv

(...)02:01.0 RAID bus controller: Compaq Computer Corporation Smart Array 64xx (rev 01)

        Subsystem: Compaq Computer Corporation Smart Array 6i

        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx-

        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-

        Latency: 64, Cache Line Size: 64 bytes

        Interrupt: pin A routed to IRQ 24

        Region 0: Memory at fdef0000 (64-bit, non-prefetchable) [size=8K]

        Region 2: I/O ports at 4000 [size=256]

        Region 3: Memory at fde80000 (64-bit, non-prefetchable) [size=256K]

        [virtual] Expansion ROM at fde00000 [disabled] [size=256K]

        Capabilities: [d0] Power Management version 2

                Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)

                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

        Capabilities: [dc] PCI-X non-bridge device

                Command: DPERE- ERO+ RBC=512 OST=8

                Status: Dev=02:01.0 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=2048 DMOST=8 DMCRS=32 RSCEM- 266MHz- 533MHz-

        Capabilities: [f0] Vital Product Data

pcilib: sysfs_read_vpd: read failed: Connection timed out

                Not readable

        Kernel driver in use: cciss

(...)
```

J'espère que ça t'aidera ... Je le redébranche, il me vrille les oreilles ce truc.   :Very Happy: 

Dommage parce que c'est une belle machine, en plus j'en ai 2 comme elle. bi-proc, xeon dual core. 6Gb de RAM extensible à 12Gb, alim redondante, RAM ECC (qui vaut peanuts sur ebay) redondante. 6 ports réseaux mais pas SATA.   :Sad: 

----------

