# mdadm, grub2 & HP smart array P400: stuck at boot

## sinanqapudan

Hi there,

I've been trying to install Gentoo hardened on a HP Proliant DL380 G5, but I'm stuck at boot with: 

```
!! Could not find the root block device in .
```

Which, if I'm not wrong, means that the cciss driver for the controller (HP smart array P400) is not loaded at boot.

Here's the a snapshot of the screen: http://tinypic.com/view.php?pic=ztciso&s=9.

These are the main features of the installation:

I decided to go for a software raid using mdadm and NO lvm, as I did not want to lock myself with the smart array raid controller p400.

I used gpt for the disks, via parted. This is their current layout

```
root@sysresccd /root % parted                                    

GNU Parted 3.2

Using /dev/md1

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) select /dev/cciss/c0d0

Using /dev/cciss/c0d0

(parted) print

Model: Compaq Smart Array (cpqarray)

Disk /dev/cciss/c0d0: 147GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

Number  Start   End     Size    File system     Name    Flags

1      1049kB  3146kB  2097kB                  grub    bios_grub 

2      3146kB  137MB   134MB                   boot    raid

3      137MB   674MB   537MB   linux-swap(v1)  swap

4      674MB   147GB   146GB                   rootfs  raid

(parted)
```

Here's the md drives layout:

```
root@sysresccd /root % cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md2 : active raid1 cciss/c0d0p4[0] cciss/c0d1p4[1]

      142548032 blocks super 1.2 [2/2] [UU]

      bitmap: 0/2 pages [0KB], 65536KB chunk

md1 : active raid1 cciss/c0d0p2[0] cciss/c0d1p2[1]

      130880 blocks super 1.2 [2/2] [UU]

unused devices: <none>
```

The filesystem on /dev/md1 is ext2, and it is mounted as /boot, the filesystem on /dev/md2 is ext4, and it is mounted as /.

Here's the content of mdadm.conf

```
ARRAY /dev/md1 metadata=1.2 name=sysresccd:1 UUID=f6576e56:794636b0:8624fc3a:15b52f54

ARRAY /dev/md2 metadata=1.2 name=sysresccd:2 UUID=3fabb366:95954d85:bff48d7a:bfe6f604
```

Some of the issues I've come across during the installation process

When attempting to install grub2, I got the 

```
grub2-install: error: failed to get canonical path of `none'
```

which I solved by remounting rw the partitions involved, as indicated in https://forums.gentoo.org/viewtopic-t-1003982-highlight-canonical+path.html, with

```
mount -o rw,remount /dev/cciss/c0d0p1
```

 and

```
mount -o rw,remount /dev/cciss/c0d1p1
```

When making the initramfs, genkernel complained (and still complains, for that matter) about not being able to find the mount.zfs and btrfs binaries, solved by issuing

```

genkernel --mdadm --no-zfs --no-brtfs --install initramfs

```

and then warns about adding additional parameters such as 

```
domdadm
```

 or 

```
rootfstype=ext4
```

 in order to be able to boot. The initramfs gets created regularly in the /boot directory.

Then, when I run:

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

grub2 detects the kernel images in /boot, but does not detect the initramfs. 

I had to append manually the initramfs to the /boot/grub/grub.cfg, as the boot process ended in a kernel panic.

Now, for some reason it appears that the driver/module needed to boot properly does not get into the initramfs. Here's the .config http://pastebin.ca/3610351

Any ideas?

Thanks in advance

----------

## sinanqapudan

OK, guys,

some interesting (for me at least) news. 

As I was completely clueless, in the end I decided to give it a try with the latest gentoo install minimal cd, and some interesting differences appeared.

First of all, all the block devices I previously create under the systemrescue CD are now actually in /dev (under systemrescuecd they were in /dev/cciss):

```
livecd ~ # ls /dev

0:0:0:0          disk          loop7               ram10   tty0   tty32  tty56    vcs11

4-2              event0        mapper              ram11   tty1   tty33  tty57    vcs12

6-1              event1        mcelog              ram12   tty10  tty34  tty58    vcs2

6-2              event2        md                  ram13   tty11  tty35  tty59    vcs3

block            event3        md126               ram14   tty12  tty36  tty6     vcs4

bsg              fd            md127               ram15   tty13  tty37  tty60    vcs5

btrfs-control    full          mdev.seq            ram2    tty14  tty38  tty61    vcs6

bus              fuse          megadev0            ram3    tty15  tty39  tty62    vcs7

cciss            gpmctl        mem                 ram4    tty16  tty4   tty63    vcs8

cciss!c0d0       hidraw0       memory_bandwidth    ram5    tty17  tty40  tty7     vcs9

cciss!c0d0p1     hidraw1       mice                ram6    tty18  tty41  tty8     vcsa

cciss!c0d0p2     hidraw2       mouse               ram7    tty19  tty42  tty9     vcsa1

cciss!c0d0p3     hwrng         mouse0              ram8    tty2   tty43  ttyS0    vcsa10

cciss!c0d0p4     initctl       mouse1              ram9    tty20  tty44  ttyS1    vcsa11

cciss!c0d1       input         mouse2              random  tty21  tty45  ttyS2    vcsa12

cciss!c0d1p1     kmem          net                 rfkill  tty22  tty46  ttyS3    vcsa2

cciss!c0d1p2     kmsg          network_latency     rtc     tty23  tty47  urandom  vcsa3

cciss!c0d1p3     log           network_throughput  rtc0    tty24  tty48  usb1     vcsa4

cciss!c0d1p4     loop-control  null                sg0     tty25  tty49  usb2     vcsa5

cciss!c0d2       loop0         port                shm     tty26  tty5   usb3     vcsa6

cdrom            loop1         ppp                 snd     tty27  tty50  usb4     vcsa7

char             loop2         psaux               sr0     tty28  tty51  usb5     vcsa8

console          loop3         ptmx                stderr  tty29  tty52  usb6     vcsa9

cpu_dma_latency  loop4         pts                 stdin   tty3   tty53  vcs      vga_arbiter

dac960_gam       loop5         ram0                stdout  tty30  tty54  vcs1     vhci

device-mapper    loop6         ram1                tty     tty31  tty55  vcs10    zero

livecd ~ # 

```

They are the devices cciss!cxdxpx.

Second interesting feature:

```
livecd ~ # cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath] 

md126 : active (auto-read-only) raid1 cciss/c0d0p2[0] cciss/c0d1p2[1]

      130880 blocks super 1.2 [2/2] [UU]

      

md127 : active (auto-read-only) raid1 cciss/c0d0p4[0] cciss/c0d1p4[1]

      142548032 blocks super 1.2 [2/2] [UU]

      bitmap: 0/2 pages [0KB], 65536KB chunk

unused devices: <none>

livecd ~ # 

```

As you can see, they've been assembled with the customary md126 and md127.

The blok IDs appear to have remained the same (to be expected):

```
livecd ~ # blkid

/dev/loop0: TYPE="squashfs"

/dev/sr0: UUID="2016-05-19-07-12-33-45" LABEL="Gentoo Linux amd64 20160519" TYPE="iso9660" PTUUID="370116a8" PTTYPE="dos"

/dev/cciss/c0d0: PTUUID="71ccd450-97dd-43d9-b6ff-990682444d02" PTTYPE="gpt"

/dev/cciss/c0d0p1: PARTLABEL="grub" PARTUUID="80ca98b1-7eed-4e51-8ce2-746fe0f6a458"

/dev/cciss/c0d0p2: UUID="f6576e56-7946-36b0-8624-fc3a15b52f54" UUID_SUB="1572c996-b0f4-131e-75cc-8bcc73a82f54" LABEL="sysresccd:1" TYPE="linux_raid_member" PARTLABEL="boot" PARTUUID="f2f46bef-8b45-495d-afba-174d3abde845"

/dev/cciss/c0d0p3: UUID="62eaa526-037f-49f9-b9bc-2ed5c35d8aba" TYPE="swap" PARTLABEL="swap" PARTUUID="631541cc-1804-4853-b650-ed1ef35b446f"

/dev/cciss/c0d0p4: UUID="3fabb366-9595-4d85-bff4-8d7abfe6f604" UUID_SUB="68dd6951-19d6-55d1-02e2-c1a4f889ce5b" LABEL="sysresccd:2" TYPE="linux_raid_member" PARTLABEL="rootfs" PARTUUID="c60e561a-5770-4c7e-86e2-52ce07901089"

/dev/cciss/c0d1: PTUUID="bcc42ae1-854d-4e16-9395-e8df5fe31a1f" PTTYPE="gpt"

/dev/cciss/c0d1p1: PARTLABEL="grub" PARTUUID="d5c3d34b-7dcb-4d6c-b819-2e155c702ceb"

/dev/cciss/c0d1p2: UUID="f6576e56-7946-36b0-8624-fc3a15b52f54" UUID_SUB="985b0cc6-25ed-4fef-6741-3b0d6371166a" LABEL="sysresccd:1" TYPE="linux_raid_member" PARTLABEL="boot" PARTUUID="bd494741-e96a-465d-a73e-f223f63f4b19"

/dev/cciss/c0d1p3: UUID="35750584-6dd3-4cf0-a3b7-5211b66af8b2" TYPE="swap" PARTLABEL="swap" PARTUUID="a65ae323-11e6-4724-9443-d646771de341"

/dev/cciss/c0d1p4: UUID="3fabb366-9595-4d85-bff4-8d7abfe6f604" UUID_SUB="d4f8b54a-1312-3f93-e63d-cc019be77e1e" LABEL="sysresccd:2" TYPE="linux_raid_member" PARTLABEL="rootfs" PARTUUID="f9045da3-200a-4a42-bb13-163cd0d7de78"

/dev/cciss/c0d2: PTUUID="3774fac4-304c-4176-90b3-ab0f05fa2713" PTTYPE="gpt"

/dev/md127: UUID="b38bc6f4-2b72-4e65-a45e-6445ba2931c1" TYPE="ext4"

/dev/md126: UUID="fb28e276-ff5c-4433-b6b8-cd6c08e535d0" TYPE="ext2"

```

The really interesting thing is the new names assigned to the block devices in /dev.

Any ideas?

Thanks

----------

