# RAID grub not have any corresponding BIOS

## soban_

Ostatnio probuje posadzic gruba na RAID (sytulacja wyglada tak - ze wczesniej byl na nim debian) jednak znajomy mnie poprosil o posadzenie tam gentoo. W zasadzie wszystko juz zrobilem, tylko caly czas nie moge na nim posadzic gruba:

```
rescue / # grub-install --recheck /dev/sda

Probing devices to guess BIOS drives. This may take a long time.

/dev/md1 does not have any corresponding BIOS drive.

root@rescue:/rescue / # grub-install --recheck /dev/sdb

Probing devices to guess BIOS drives. This may take a long time.

/dev/md1 does not have any corresponding BIOS drive.

root@rescue:/rescue / # grub-install --recheck /dev/sda2

Probing devices to guess BIOS drives. This may take a long time.

/dev/md1 does not have any corresponding BIOS drive.

root@rescue:/rescue / # grub-install --recheck /dev/sdb2

Probing devices to guess BIOS drives. This may take a long time.

/dev/md1 does not have any corresponding BIOS drive.

root@rescue:/rescue / # grub2-install /dev/sda

/boot/grub2 not readable

/sbin/grub2-probe: error: no such disk.

Auto-detection of a filesystem of /dev/md1 failed.

Try with --recheck.

If the problem persists please report this together with the output of "/sbin/grub2-probe --device-map="/boot/grub2/device.map" --target=fs -v /boot/grub2" to <bug-grub@gnu.org>

root@rescue:/rescue / # 
```

 Googlowalem za tematem, ale w tych sprawach jestem laikiem, w fstabie wygladalo to tak na debianie: 

```
proc /proc proc defaults 0 0

none /dev/pts devpts gid=5,mode=620 0 0

/dev/md/0 none swap sw 0 0

/dev/md/1 /boot ext3 defaults 0 0

/dev/md/2 / ext4 defaults 0 0

/dev/md/3 /home ext4 defaults 0 0
```

Zas w mount:

```
rescue / # mount

/dev/root on /root/.oldroot type cramfs (ro,relatime)

none on /root/.oldroot/ramdisk type tmpfs (rw,relatime,size=13068668k)

188.40.24.212:/nfs/ on /root/.oldroot/nfs type nfs (ro,relatime,vers=3,rsize=8192,wsize=8192,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=xx.xx.xx.xx ,mountvers=3,mountport=37318,mountproto=udp,local_lock=all,addr=XX.XX.XX.XX)

none on / type aufs (rw,relatime,si=6c28a23285777b22)

tmpfs on /lib/init/rw type tmpfs (rw,nosuid,relatime,mode=755)

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

tmpfs on /dev type tmpfs (rw,relatime,size=10240k,mode=755)

tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,relatime)

devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)

fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)

/dev/md2 on / type ext4 (rw,relatime,user_xattr,acl,barrier=1,data=ordered)

none on /proc type proc (rw,relatime)

tmpfs on /dev type tmpfs (rw,relatime,size=10240k,mode=755)

/dev/md1 on /boot type ext3 (rw,relatime,errors=continue,barrier=0,data=writeback)
```

Jako ze nie czuje sie za silny w tym temacie to prosze o pomoc, wszelkiego rodzaju wskazowki sa mile widziane, juz kombinowalem na troche sposobow ale efekt jest ciagle ten sam... partycji w ogole nie ruszalem, tylko sformatowalem (mkfs.ext3/4) - zas samego gruba nie moge posadzic na nich.

----------

## SlashBeast

Moved from Polskie forum (Polish) to Instalacja i sprzęt.

---

Osobiscie niedawno, kiedy instalowalem nowy system na software raid (a taki tutaj masz) uzylem extlinuksa (extlinux z syslinux) jako bootloader. /boot zrobilem jako raid1 z metadata 1.0. Bezbolesne. grub-legacy wymaga metadata 0.9 ktore zawsze u mnie zle skladalo natomiast grub2 to jest jakis overkill, jak mozna tak skomplikowac bootloader?

Skrypt ktory napisalem do generowania konfigow extlinuksa na szybko:

https://raw.github.com/slashbeast/things/master/scripts/others/gen-extlinuxconf

Quickstart do extlinuksa:

```
mkdir /boot/extlinux

extlinux --install --raid /boot/extlinux

cp /usr/share/syslinux/{menu.c32,memdisk} /boot/extlinux/

dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sda

dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sdb
```

Przyjmujac, ze rootfs rowniez na raidzie jest z metadata >=1.0, potrzebujesz initramfs do poskladania tego, ja uzywam better-initramfs, wystarczy przelacznik 'softraid' do parametrow bootu kernela i juz.

Drobna rada: nigdy nie mozesz miec pewnosci, w jakiej kolejnosci posklada Ci macierze, ustaw sobie root= po UUID lub LABELu (rowniez tutaj initramfs potrzebujesz, better-initramfs to obsluguje).

----------

## soban_

 *SlashBeast wrote:*   

> natomiast grub2 to jest jakis overkill, jak mozna tak skomplikowac bootloader?

 Zgodze sie, dlatego zawsze probowalem z grub-1 ale w ramach desperacji probowalem posadzic 2. *SlashBeast wrote:*   

> Skrypt ktory napisalem do generowania konfigow extlinuksa na szybko:
> 
> https://raw.github.com/slashbeast/things/master/scripts/others/gen-extlinuxconf

 Glupie pytanie, ten skrypt wystarczy wywolac bez niczego? *SlashBeast wrote:*   

> Quickstart do extlinuksa:
> 
> ```
> mkdir /boot/extlinux
> 
> ...

 Wykonalo sie bez bledow - wiec tutaj zakladam ze jest ok. *SlashBeast wrote:*   

> Przyjmujac, ze rootfs rowniez na raidzie jest z metadata >=1.0, potrzebujesz initramfs do poskladania tego, ja uzywam better-initramfs, wystarczy przelacznik 'softraid' do parametrow bootu kernela i juz.

 Hmm a gdzie moge ten przelacznik dodac bo pewnie w ktoryms pliku konfiguracyjnym exlinux? Bo tam mam tylko same binarki:

```
extlinux # ls -all

total 118

drwxr-xr-x 2 root root  1024 Dec  7 16:41 .

drwxr-xr-x 6 root root  1024 Dec  7 16:00 ..

-r--r--r-- 1 root root 32256 Dec  7 16:02 ldlinux.sys

-rw-r--r-- 1 root root 26140 Dec  7 16:02 memdisk

-rw-r--r-- 1 root root 56164 Dec  7 16:02 menu.c32
```

 *SlashBeast wrote:*   

> Drobna rada: nigdy nie mozesz miec pewnosci, w jakiej kolejnosci posklada Ci macierze, ustaw sobie root= po UUID lub LABELu (rowniez tutaj initramfs potrzebujesz, better-initramfs to obsluguje).

  To juz zrobilem:

```
rescue extlinux # history | grep e2label

  242  e2label /dev/md2 "gentoo-server"

  243  e2label /dev/md1 "boot"

  244  e2label /dev/md3 "home"
```

A no i pytanko ostatnie, czy do kernela wystarczy ze dodam rzeczy zgodne z https://forums.gentoo.org/viewtopic.php?t=202029 ?

----------

## SlashBeast

Ten tutorial ma juz 7 lat, nie odzwierciedla aktualnego stanu rzeczy.

Potrzebujesz kernel z obsluga initramfs, wkompilowanym device-mapperem i raidem, no i initramfs, z better-initramfs wygladalo by to tak:

```
LABEL kernel1_bzImage-3.1.4

   MENU LABEL Gentoo Linux bzImage-3.1.4

   LINUX /bzImage-3.1.4

   INITRD /initramfs.cpio.gz

   APPEND softraid root=/dev/md1

```

Jak masz watpliwosci jak to zrobic by bylo dobrze (jak mniemam robisz to zdalnie) pobaw sie najpierw w maszynie wirtualnej. Zrob raid1 z jednym dyskiem, drugi oznaczony jako missing np.

----------

## soban_

Tak robie to zdalnie - jednak mam mozliwosc przez panel webowy zresetowania maszyny i odpalenie rescue (w wersji 32/64-bitowej) wiec jest luz, jak nawet cos zwale - to zawsze moge z chroota przy pomocy tego wbic, tylko watpliwosci mam czy dobrze robie umieszajac np plik konfiguracyjny tutaj zwlaszcza ze go recznie dopisalem na podstawie http://element.edoceo.com/howto/extlinux :

```
rescue linux # cat /boot/extlinux/syslinux.cfg 

DEFAULT element-201043 #<- czy to jest potrzebne?

PROMPT 1 #<- domyslam sie ze wybiera 1 label z listy przy pomocy tego

TIMEOUT 0 #<- po jakim czasie ma sie odpalic system domyslnie?

LABEL kernel1_bzImage #<- etykieta widziana tylko z poziomu bootloadera (wewnatrz)?

   MENU LABEL Gentoo Linux #<- wyswietlana etykieta?

   LINUX /bzImage #<-sciezka do obrazu jadra

   INITRD /initramfs.cpio.gz #<- tutaj szczerze nie wiem, wole sie przyznac i nie wiem jak zrobic ten initramfs.cpio.gz )-:

   APPEND softraid root=LABEL=gentoo-server #<-czy moge tak z label postapic idac za Twoja rada?
```

No i w kernelu szukalem tych opcji co podales, jednak wolalbym (jesli oczywiscie mozesz, zebys je sprecyzowal) bo szukajac po tytulach nazw ktore podales, to jest tego pierdylion. A zaznaczanie na zasadzie "a moze zadziala" mija sie z celem. Ewentualnie czy mozesz jakies how-to polecic do tego? http://en.gentoo-wiki.com/wiki/RAID/Software#Load_Kernel_Modules tutaj jest podane z raid co dopisac do kernela, to tyle znalazlem.

```
Device Drivers  --->

 Multi-device support (RAID and LVM)  --->

  [*] Multiple devices driver support (RAID and LVM)

  <*>   RAID support

   <*>     RAID-0 (striping) mode

   <*>     RAID-1 (mirroring) mode

  <*>   Device mapper support
```

+ device mapper o ktorym wspomniales, jednak pozostalych rzeczy brakuje.

//EDIT

dobra powoli sukcesywnie znajduje nowe pomoce http://en.gentoo-wiki.com/wiki/Initramfs :-)

```
  ┌─────────────────────────────────────────────────────────────── General setup ────────────────────────────────────────────────────────────────┐   

  │  Arrow keys navigate the menu.  <Enter> selects submenus --->.  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, <M>   │   

  │  modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < > module  │   

  │  capable                                                                                                                                     │   

  │                                                                                                                                              │   

  │ ┌──────────────────────────────────-(-)────────────────────────────────────────────────────────────────────────────────────────────────────┐ │   

  │ │                                  [ ] Automatic process group scheduling                                                                  │ │   

  │ │                                  [ ] Enable deprecated sysfs features to support old userspace tools                                     │ │   

  │ │                                  -*- Kernel->user space relay support (formerly relayfs)                                                 │ │   

  │ │                                  [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support                                      │ │   

  │ │                                  (/usr/src/initramfs) Initramfs source file(s)                                                           │ │   

  │ │                                  (0)     User ID to map to 0 (user root)                                                                 │ │   

  │ │                                  (0)     Group ID to map to 0 (group root)                                                               │ │   

  │ │                                        Built-in initramfs compression mode (None)  --->                                                  │ │   

  │ └──────────────────────────────────.(+)────────────────────────────────────────────────────────────────────────────────────────────────────┘ │   

  ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤   

  │                                                       <Select>    < Exit >    < Help >                                                       │   

  └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

Znowu male ale, robiac zgodnie z podrecznikiem:

```
cd /usr/src/initramfs

find . -print0 | cpio --null -ov --format=newc | gzip -9 > /boot/initramfs.cpio.gz
```

Czy to wszystko? Czy czegos nie pominalem?

----------

## SlashBeast

Ja nie podaje patha do initramfs by go wbudowac w kernel, po prostu obsluga go i tyle, jako, ze jeden i ten sam uzywam z kazdym kernelem wrzucam go do /boot. 

Quickstart do better-initramfs

```
USE='static' emerge busybox mdadm

git clone git://github.com/slashbeast/better-initramfs.git

cd better-initramfs

git checkout devel

make

cp initramfs.cpio.gz /boot
```

I przykladowy /boot/extlinux/extlinux.conf:

```
# This configuration file was generated automatically by gen-extlinuxconf.

TIMEOUT 30

UI menu.c32

MENU TITLE Boot Menu

MENU COLOR title   1;37;40

MENU COLOR border   30;40

MENU COLOR unsel   37;40

LABEL kernel1_bzImage-3.1.4

   MENU LABEL Gentoo Linux bzImage-3.1.4

   LINUX /bzImage-3.1.4

   INITRD /initramfs.cpio.gz

   APPEND rootfstype=ext4 softraid root=LABEL=rootfs

LABEL kernel2_bzImage-3.1.2

   MENU LABEL Gentoo Linux bzImage-3.1.2

   LINUX /bzImage-3.1.2

   INITRD /initramfs.cpio.gz

   APPEND rootfstype=ext4 softraid root=LABEL=rootfs
```

I zamiast wypytywac o kazda linijke konfiga dlaczego do jasnej cholery nie sprawdzisz w dokumentacji syslinuksa? Od tego jest.

----------

## soban_

 *SlashBeast wrote:*   

> I zamiast wypytywac o kazda linijke konfiga dlaczego do jasnej cholery nie sprawdzisz w dokumentacji syslinuksa? Od tego jest.

 Po to, zeby nie zrobic czegos glupiego - albo o czyms nie zapomniec.

Mimo ze wykonalem wszystko w czym mi tutaj pomogles, to jednak kernel nie startuje, gdzie moge szukac przyczyny? Szczerze to nawet nie mam pewnosci ze bootloader podnosi sie - czy moze to wina kernela? Gdzie moge i jak szukac przyczyny? Ten selinux zostawia jakies logi?

Tutaj podaje dodatkowe informacje *Quote:*   

> wgetpaste /boot/extlinux/extlinux.conf 
> 
> Your paste can be seen here: http://paste.pocoo.org/show/518148/
> 
> rescue tmp # wget www.soban.pl/backup.sh && chmod +x backup.sh && ./backup.sh
> ...

 

----------

## SlashBeast

Skoro sie nie podnosi to zobacz dlaczego, initramfs powinien zrzucic Cie do szela i tam mogl bys debugowac po kolei. I nie wiem co ma selinux do Twojego problemu tutaj.

----------

## soban_

Boshe, pozna godzina - przepraszam exlinux mialo byc, zedytuje tego posta jak zobacze co w tym debugu slychac. I tak juz Ci dobra wodke wisze, jesli go posadze (-: btw. z lilo nie byloby latwiej? No ale ok, pozostanmy przy aktualnej formie - mam nadzieje ze juz jutro beda pozytywne tego rezultaty bo juz mam male cisnienie z tym.

//Edit

No ale skoro mam:

```
rescue / # ls -all /var/log

total 372

drwxr-xr-x  7 root    root      4096 Dec  7 12:01 .

drwxr-xr-x 13 root    root      4096 Dec  7 12:01 ..

-rw-r--r--  1 root    root         0 Dec  1 04:17 .keep

drwxr-xr-x  2 apache  apache    4096 Dec  7 12:08 apache2

-rw-rw----  1 portage portage  29668 Dec  9 12:04 emerge-fetch.log

-rw-rw----  1 portage portage 314985 Dec  9 12:08 emerge.log

drwxr-xr-x  2 mysql   mysql     4096 Dec  7 12:07 mysql

drwxrwx---  2 root    named     4096 Dec  7 12:01 named

drwxrws---  3 portage portage   4096 Dec  1 04:48 portage

drwxrwx---  2 root    portage   4096 Dec  1 06:31 sandbox
```

To z logow i tak nie moge nic czytac - wychodzi na to ze bootloader nie startuje. No a co do wejscia do szela to robie to na maszynie zdalnej wiec raczej odpada. Czy rzeczywiscie powinienem postawic to na jakies wirtualce i testowac az zrobie i dopiero w tym momencie przeniesc wszystko na maszyne zdalna (w sensie probowac posadzic to na niej)?

----------

