Installieren von Gentoo mit NVRAID unter Nutzung von dmraid

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
Installationsmethoden LiveCDs Kernel & Hardware Laptops & Notebooks Portage System Netzwerke & Services X Software Anderes alphabetischer HOWTO Index


Inhaltsverzeichnis

[Bearbeiten] Über die Installation

Das NVRAID BIOS ist nichts anderes als ein Software Raid. Die Methode, welche hier zur Installation verwendet wird, funktioniert problemlos zusammen mit anderen Betriebssystemen wie Windows ohne die Notwendigkeit, an der Windows Konfiguration etwas zu ändern.
Dieses Howto deckt nicht alles vom Installationsprozess ab. Es erklärt lediglich, wie man eine Gentoo Installation mit der LiveCD startet und springt dann wieder am Ende ein, um zu erklären, wie man GRUB installiert bekommt und Linux nach dem ersten Neustart bootet. Dieses Howto wurde getestet mit einer Stage1, Stage3, und einer Stage 1/3 Installation, also ich habe keine Erfahrung, ob dieses Howto nicht evtl. Inkompatiblitäten mit anderen Installationsmethoden aufweist.
In diesem Howto wird davon ausgegangen, dass Sie mit einer RAID-0 (Stripe) Konfiguration arbeiten. Ich habe diese Installationsmethode nicht mit anderen RAID Typen getestet.

[Bearbeiten] Booten

[Bearbeiten] Laden von dmraid mit der LiveCD

Die erste Voraussetzung um Gentoo installieren zu können ist, dass Sie Zugang zum RAID haben. Wenn Sie beim Gentoo LiveCD Autorun sind, fügen Sie die "dodmraid" Option hinzu.

gentoo dodmraid

Dies stellt sicher, dass die dmraid Treiber geladen werden, was standardmäßig nicht der Fall ist beim heutigen Stand der Dinge (2005.1). Achtung: die aktuelle LiveCD 2006.1 hat einen Fehler und dmraid wird nicht geladen, daher auf die 2006.0 zurückgreifen. (2007.1 scheint zu funktionieren.)

[Bearbeiten] Testen von dmraid

Um sicherzustellen, dass dmraid während Ihrer Konfiguration läuft, überprüfen Sie den Inhalt vom Verzeichnis /dev/mapper.

ls /dev/mapper

Wenn es nur eine Datei namens "control" enthält, wurde dmraid entweder nicht geladen oder dmraid wird mit Ihrer Konfiguration nicht funktionieren. Sollte einer von beiden Fällen zutreffen, können Sie hier stoppen, da im Rest dieser Anleitung vorausgesetzt wird, dass dmraid funktioniert.

[Bearbeiten] Partitionieren

[Bearbeiten] Vorgeschlagenes Schema

In diesem Howto wird vorausgesetzt dass Ihre Boot-Partition die erste Partition im RAID ist. GRUB würde sonst nicht die anderen Partitionen erkennen, also ist es das Beste, /boot als die erste Partition zu konfigurieren. Dies wird nicht Windows durcheinanderbringen solange Sie Windows auf Ihrer zweiten Partition installieren (oder wo auch immer Sie mögen). Meine Partitionierung sah wie folgt aus:

Partition 1: /boot
Partition 2: NTFS
Partition 3: /swap
Partition 4: /

[Bearbeiten] Benutzen von fdisk zum Partitionieren

Wenn Sie Ihre Laufwerke partitionieren, benutzen Sie auf keinen Fall /dev/sda1 usw. Obwohl Gentoo weiss, dass ein RAID existiert, weiss es auch, dass da zwei Festplatten sind, und es hat keine Probleme damit, sie als solche zu behandeln. Stellen Sie sicher, dass Sie mit fdisk Ihr RAID als ein ganzes behandeln, und verweisen Sie zu seiner abgebildeten Position (/dev/mapper/)

fdisk /dev/mapper/nvidia_abiccada

(Beachten Sie dass Ihr RAID Name anders lauten könnte)

[Bearbeiten] Mounten und Installieren

Nach der Partitionierung Ihres RAID, mounten Sie die Partitionen dementsprechend und verwenden Sie Ihre bevorzugte Methode Gentoo zu installieren. Wenn Sie an den Punkt angelangt sind GRUB zu installieren kehren Sie zu dieser Anleitung zurück.

mount /dev/mapper/nvidia_abiccada4 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/mapper/nvidia_abiccada1 /mnt/gentoo/boot

[Bearbeiten] GRUB Vorbereitung und Konfiguration

[Bearbeiten] Erstellen der RAM Disk

Dieses Howto setzt vorraus dass Sie den GRUB bootloader verwenden. Stellen Sie sicher dass er installiert ist bevor Sie fortfahren.

emerge grub

Grub als solches funktioniert nicht mit einer RAID0 Konfiguration. Sie gelangen unter Umständen zu Ihrem Kernel beim Start, aber dieser wird fehlschlagen bevor Sie in der Lage sind in eine Kommandozeile zu gelangen was Sie auf jeden Fall daran hindern wird Gentoo zu verwenden. Die Lösung besteht darin eine RAM Disk zu erstellen welche die dmraid Treiber lädt und Ihnen somit ermöglicht Ihr System zu starten. Um dies zu erreichen, emergen Sie dmraid (dies könnte maskiert sein, also stellen Sie sicher es zu demaskieren).

echo "sys-fs/dmraid ~x86" >> /etc/portage/package.keywords
emerge dmraid

[Bearbeiten] Die einfache Lösung

emerge genkernel
genkernel --dmraid all

[Bearbeiten] Derzeitige Probleme mit genkernel-3.4*

genkernel-3.4* nutzt busybox-1.1.3 welches nicht mehr natives udev sondern mdev nutzt

bei einem Neustart kann es zu folgendem Problem kommen

>> Activating mdev...
>> Activating Device-Mapper raid(s)...
>> Determining root device...
>> The root block device is unspecified or not detected
Please specify a device to boot, or "shell" for a shell...
boot() ::

nachdem man die shell aktiviert hat, gibt es nur ein /dev/device-mapper jedoch kein /dev/mapper/nvidia_....

derzeitige Lösung genkernel-3.4* maskieren und genkernel-3.3.11d installieren

# echo "=sys-kernel/genkernel-3.4*" >> /etc/portage/package.mask
# emerge -av genkernel
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild  UD   ] sys-kernel/genkernel-3.3.11d

Genkernel verwendet auch noch eine veraltete dmraid version, welche nicht mehr Kompatibel ist mit Kernel 2.6.16 deshalb lohnt sich die Aufwendige Methode.

[Bearbeiten] Die aufwendigere Lösung

Gerte Hoogewerf erstellte ein Skript um ein Image zu erstellen welches Ihnen einen korrekten Start ermöglicht. Um den Prozess der Erstellung des Images durchzuführen, laden Sie folgende Dateien herunter und markieren Sie das dmraidinitrd Skript als ausführbar.

#wget http://tienstra4.flatnet.tudelft.nl/~gerte/gen2dmraid/dmraidinitrd
#wget http://tienstra4.flatnet.tudelft.nl/~gerte/gen2dmraid/linuxrc
#chmod +x dmraidinitrd

Bevor Sie das Skript starten müssen Sie daran ein paar kleine Veränderungen vornehmen. Es scheint als wären einige der Download Links in dem Skript nicht lauffähig. Die Veränderungen welche wir hier machen werden die Gentoo Spiegel nutzen um die benötigten Dateien herunterzuladen.
Im Abschnitt

#changing this values might involve editing make_devicemapper()
DEVICEMAPPER_URI_PREFIX="ftp://sources.redhat.com/pub/dm/"
DEVICEMAPPER_TARBALL="device-mapper.1.01.01.tgz"
DEVICEMAPPER_DIR="device-mapper.1.01.01"

verändern Sie die Werte zu den folgenden:

DEVICEMAPPER_URI_PREFIX="http://gentoo.osuosl.org/distfiles/"
DEVICEMAPPER_TARBALL="device-mapper.1.02.18.tgz"
DEVICEMAPPER_DIR="device-mapper.1.02.18"

Im Abschnitt

#changing this values might involve editing make_dmraid()
#please, don't use older versions of dmraid with this version of dmraidinitrd
DMRAID_URI_PREFIX="http://people.redhat.com/~heinzm/sw/dmraid/src/"
DMRAID_TARBALL="dmraid-1.0.0.rc13.tar.bz2"
DMRAID_DIR="dmraid/1.0.0.rc13"

verändern Sie die Werte zu den folgenden:

DMRAID_URI_PREFIX="http://gentoo.osuosl.org/distfiles/"
DMRAID_TARBALL="dmraid-1.0.0.rc13.tar.bz2"
DMRAID_DIR="dmraid/1.0.0.rc13"

Sobald Sie damit fertig sind fahren Sie fort und starten Sie das Skript. (Stellen Sie sicher dass es Ausführungsrechte besitzt.)

#./dmraidinitrd linuxrc initrd

Das Skript wird ein neues RAM Image erstellen (initrd). Kopieren Sie die initrd und die linuxrc Datei in Ihr /boot Verzeichnis (oder wo auch immer sich die Kernelabbilder und Grub befinden).

#cp linuxrc /boot
#cp initrd /boot


Alles was Sie brauchen für die initrd

Downloaden sie dieses Paket [1]

wget http://www.bergforum.ch/dmraid/dmraidinitrd.tar.gz

Entpacken sie es an eine geignete stelle.

tar -xf dmraidinitrd.tar.gz
chmod +x linuxrc
chmod +x dmraidinitrd

Nun wie oben beschrieben das Skript anwenden, wichtig ist einfach, dass der Symlink '/usr/src/linux' auf die gewünschte Kernel Version zeigt.

Der Vorteil dieses Skriptpaketes ist, dass sie mit den neuesten Kernel Versionen getestet wurden, und sollten also damit laufen. Z.B. laufen alle Versionen vor dmraid-1.0.0.rc11-pre1-1 nicht mit Kernel 2.6.16.

Die momentan in diesem Skript verwendete Version kann man mittels

cat dmraidinitrd | grep DMRAID_TARBALL=
cat dmraidinitrd | grep DEVICEMAPPER_TARBALL=
cat dmraidinitrd | grep BUSYBOX_TARBALL=

ermitteln.

Update: 26.09.2006: Habe auf dmraid-1.0.0.rc11 geupdated.

[Bearbeiten] Editieren Ihrer grub.conf

Das das RAM Image erstellt wurde müssen Sie nun GRUB mitteilen wie er damit arbeiten soll. Benutzen Sie folgenden Abschnitt meiner grub.conf und stellen Sie es Ihrer Gegebenheiten entsprechend ein. (Diese grub.conf setzt vorraus, dass Ihre /boot Partition die erste und Ihre Root Ihre letzte Partition ist.)

title Gentoo Linux
root (hd0,0)
kernel /vmlinuz-2.6.12-gentoo-r10 root=/dev/ram0 init=/linuxrc real_root=/dev/mapper/nvidia_abiccada4 dodmraid video=vesafb:ywrap,pmipal,1280x1024-16@60
initrd (hd0,0)/initrd

Beachten Sie, dass die wesentlichen Änderungen aus root=/dev/ram0, aus init=/linuxrc und dem real_root Verweis zu Ihrer Root Partition bestehen. Beachten Sie auch die initrd Zeile am Ende.

[Bearbeiten] Installieren von GRUB

Starten Sie nicht grub-install! Es wird nicht richtig laufen und wahrscheinlich sda1 usw. anstelle Ihres RAID erkennen. Stellen Sie ebenfalls sicher grub nicht aus einer chroot Umgebung heraus auszuführen in welcher Sie sich wahrscheinlich befinden wenn Sie von der Gentoo LiveCD aus Installieren und den Anweisungen von Gentoo.org bzw. Gentoo.de folgen. Es kennt /dev/mapper nicht und würde zu Fehlern mit grub führen. Springen Sie in diesem Fall zu einer anderen Konsole indem Sie ALT+2 drücken. Starten Sie grub stellen Sie sicher dass es auf /dev/null als Gerät verweist.

#grub --device-map=/dev/null

Nun befinden Sie sich in der grub Umgebung. Stellen Sie Ihre RAID Geräte ein und installieren Sie grub!

grub> device (hd0,0) /dev/mapper/nvidia_abiccada1
grub> device (hd0) /dev/mapper/nvidia_abiccada
grub> root (hd0,0)
Filesystem is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"...succeeded
Done.
grub> quit

Sie sollten nun in der Lage sein Ihren Computer neu zu starten (oder Installation zu beenden und neu zu starten) und GRUB erscheint in seiner vollen Pracht. Ferner sollten Sie jetzt in der Lage sein Ihr Linux zu starten und in die Konsole zu gelangen.

Hinweis für Highpoint-Controller (hpt37x_) : Stage1_5 Dateien von Grub überschreiben die Array-Metadaten des Controllers. Da Stage1_5 optional ist, hilft es, die Dateien *stage1_5 zu verschieben. Dann wird gleich stage2 gestartet.

[Bearbeiten] Danksagungen

Gerte Hoogewerf, für das erstellen des initrd Skripts
aus9 von den Linux Questions Foren, für seine allgegenwärtige und wertvolle Hilfe welche dies erst ermöglicht hat
NeddySeagoon von den Gentoo Foren, dafür mich in die richtige Richtung zu leiten
Jakertberry von der englischen Gentoo Wiki Seite für das Schreiben des englischen Originals für dieses Howto.

'Persönliche Werkzeuge