# Windows XP & Linux auf RAID 0



## Simon1983 (2. Oktober 2007)

Hallo zusammen,

ich habe Windows XP auf einem RAID 0 mit 3 Platten installiert. Habe ein ASUS P5B Deluxe Mainboard mit Intel ICH8R Raid Controller. Also ein "Fake Raid".

Ich habe damals 80 GB unpartitioniert gelassen um noch Linux parallel zu Win XP zu installieren, nur geht das so überhaupt? Ich will nicht meine Windows Installation zerschiessen.

Bin absoluter Linux neuling, aber habe schon damals auf meiner alten Kisten erfolgreich Gentoo installiert (ohne RAID). Also Gentoo ist die Distri meiner Wahl.

Ich habe schon Gegoogelt aber nichts richtiges gefunden. Nur wie man Linux als einziges Betriebssystem auf RAID 0 installiert. Kennt jemand Anleitungen bzw. hat das schon mal jemand hier gemacht?

Wäre für jeden Tipp dankbar!


----------



## Dennis Wronka (4. Oktober 2007)

Also: Fuer ein Fake-RAID benoetigst Du dmraid, und natuerlich den Device-Mapper, denn darauf baut dmraid auf.
Um das System booten zu koennen benoetigst Du eine Partition ausserhalb des RAID, und zwar muss darauf der Kernel liegen, also eine Partition fuer /boot. Diese muss nicht gross sein, erfahrungsgemaess sind 30MB schon weit mehr als ausreichend.
Zusaetzlich muss das RAID vom Kernel aktiviert werden, was, wenn ich mich nicht irre, ueber diesen Aufruf geschieht:

```
dmraid -ay
```
Dies muss natuerlich passieren bevor der Kernel das Root-Dateisystem (welches sich ja im RAID befindet) mountet. Um das zu erreichen brauchst Du eine Initial RamDisk (InitRD) oder besser (da der Nachfolger von InitRD) ein InitRamFs.

Gentoo sollte eigentlich all dies bieten koennen, denn selbst mein EasyLFS kann dies, in der kommenden Version 0.4, und Gentoo sollte doch etwas ausgereifter sein. 

Alternativ kannst Du das InitRamFs auch selbst bauen, all zu schwer ist das nicht. Du brauchst ein paar Tools und ein Init-Script welches die Root-Partition nutzbar macht und startet.
Als Beispiel mal das Init-Script welches ich zur Zeit in der Dev-Version von EasyLFS im InitRamFs einsetze.

```
#!/bin/sh
/bin/mount proc -t proc /proc
/bin/mount sysfs -t sysfs /sys
/bin/udevstart
if [ -x /sbin/mdadm ] && [ -r /etc/mdadm.conf ]; then
	/sbin/mdadm --assemble --scan
fi
if [ -x /sbin/dmraid ]; then
	/sbin/dmraid -ay
fi
if [ -x /sbin/lvm ]; then
	if [ "$(/sbin/lvm lvscan | /bin/grep root)" != "" ]; then
		/sbin/lvm vgchange -ay
	fi
fi
if [ -x /sbin/cryptsetup ] && [ -r /etc/cryptroot ]; then
	CRYPTROOT=$(/bin/cat /etc/cryptroot)
	/sbin/cryptsetup luksOpen ${CRYPTROOT} cryptroot
fi
ROOTDEV=$(/sbin/findfs LABEL=elfsroot)
if [ "${ROOTDEV}" != "" ]; then
	ROOTFS=$(/bin/fstype ${ROOTDEV} | /bin/grep FSTYPE | /bin/awk -F '=' '{ print $2 }')
	echo "Found root-device ${ROOTDEV} with file-system ${ROOTFS}"
	/bin/mount -t ${ROOTFS} ${ROOTDEV} /easylfs
	cd /easylfs
	RUNLEVEL=$(/bin/cat /easylfs/etc/inittab | /bin/grep id | /bin/awk -F ':' '{ print $2 }')
	exec /bin/run-init /easylfs /sbin/init ${RUNLEVEL}
else
	echo "No root-device found!"
fi
```
Hier ist im Grunde alles drin, Software-RAID, Fake-RAID, LVM und verschluesselte Root-Dateisysteme koennen hier aktiviert werden.
Ein paar der Tools kommen aus KLibC (wie z.B. run-init), die meisten aber (wie z.B. cat oder awk) sind GNU-Tools.

Mit dem folgenden Script kopiere ich Programme in das InitRamFs.

```
#!/bin/sh
if [ ! -r ${1} ] || [ "${2}" = "" ] || [ ! -w ${2} ]; then
	exit 0
fi
if [ "$(echo ${1} | grep lib)" != "" ]; then
	echo "Copying library: ${1}"
	cp ${1} ${2}/lib
else
	if [ "$(echo ${1} | grep bin)" != "" ]; then
		if [ "$(echo ${1} | grep sbin)" != "" ]; then
			echo "Copying superuser binary: ${1}"
			cp ${1} ${2}/sbin
		else
			echo "Copying binary: ${1}"
			cp ${1} ${2}/bin
		fi
	else
		echo "Not copying unknown file: ${1}"
	fi
fi
for ENTRY in $(ldd ${1}); do
	if [ "$(echo ${ENTRY} | grep /)" != "" ]; then
		FILENAME=$(echo ${ENTRY} | sed 's@^.*/@@')
		if [ ! -r ${2}/lib/${FILENAME} ]; then
			${0} ${ENTRY} ${2}
		fi
	fi
done
```
Hierbei wird eben nicht nur das Programm selbst kopiert, sondern eben auch von diesem benoetigte Libraries, natuerlich rekursiv, da die Libraries moeglicherweise auch wieder andere Libraries voraussetzen.

Schlussendlich, wenn das InitRamFs fertig ist (testen kannst Du es z.B. mit chroot), muss dieses in den Kernel gebacken werden. Anders als eine InitRD wird das InitRamFs fest in den Kernel integriert, und liegt nicht in einer externen Datei.

Aber wie zuvor erwaehnt sollte Gentoo eigentlich in der Lage sein Dir all dies abzunehmen. Wie Du das aber veranlasst weiss ich nicht da ich mit Gentoo bislang nichts gemacht habe.


----------



## Simon1983 (5. Oktober 2007)

Hallo Dennis,

vielen Dank für deine ausführliche Antwort! Das hat mich schon mal weiter gebracht. Bei meiner weiteren Recherche bin ich, ich glaub es kaum, auf eine Anleitung gestossen die genau beschreibt, wie man Windows und Linux auf ein "Fake RAID" installiert. Komisch das ich das nicht früher entdeckt habe ....

HOWTO Gentoo Install on Bios Onboard RAID


Edit: Hmm wieso empfehlen die eigentlich Partition Magic zu benutze, wenn Windows bereits installiert ist und man Platz für eine kleine Boot Partition schaffen soll? Nach meinen Recherchen kann Norton Partition Magic 8.05 nicht mit Stripe Sets umgehen



> - PartitionMagic does not support volume sets, stripe sets, stripe
> sets with parity, or partitions located on disk mirror/duplex
> sets configured using Windows NT Disk Administrator. Under
> Windows 2000/XP, PartitionMagic supports standard partitions
> located on basic disk sets only.



Wie mache ich denn jetzt am besten Platz für eine Boot Partition.... bin leicht verwirrt


----------



## Dennis Wronka (6. Oktober 2007)

Mit RAID hab ich bislang viel zu wenig gemacht, daher weiss ich nicht ob es ueberhaupt moeglich ist die Groesse dessen zu veraendern. Aber wenn, dann duerfte das Stripe-Set wohl die Variante sein bei der das am einfachsten sein duerfte.

Am besten schaust Du erstmal im Setup des RAID ob es dort eine Option dafuer gibt. Wenn nicht sieht es wahrscheinlich schon schlecht aus.
Falls es eine Option gibt solltest Du anschliessend das Dateisystem verkleinern, am besten auf einen sicheren Wert unterhalb von dem was Du am Ende haben willst. Anschliessend verkleinerst Du das RAID, und vergroesserst dann das Dateisystem wieder auf volle Partitionsgroesse.

Aber wie gesagt, ich hab keine Ahnung ob es ueberhaupt moeglich ist ein RAID im Nachhinein noch zu vergroessern oder zu verkleinern.


----------

