Du bist nicht angemeldet.

Eine Antwort schreiben

Schreibe deinen Beitrag und versende ihn
Beitragsoptionen
Deine Antwort

Zurück

Themen-Übersicht (Neuester Beitrag zuerst)

quiptime
06.07.2005 01:30:02

Hallo,

hier moechte ich ein Problem mit grub beim Installieren von ArchLinux 7 und auch meine Loesung beschreiben.

Arch 7 installiert. Dabei die Platte neu partitioniert, Mountpoints gesetzt und auch den Bootmanager grub installiert. Beim Neustart bleibt grub stehen.

Arch war nun nicht gerade meine erste Linuxinstallation. Bis zum Moment des Neustarts war ich mir ziehmlich sicher ob der Richtigkeit all der Dinge, die ich bei der Installation durchgefuehrt habe. Ist bei Arch ja auch nicht weiter schwierig oder verworren oder komplex.
Also ich die Installation nochmal und diesmal mit Argusaugen auf das was ich waehrend der Installation mache. Ergebnis.

Beim Neustart bleibt grub wieder stehen.

Nun war mir bei der Installation doch etwas aufgefallen, dem ich aber zunaechst keine weitere Beachtung schenkte. Dachte, der Installer arbeitet schon korrekt. Aber genau das ist nicht der Fall.

Folgendes viel mir auf:

Beim partitionieren der Platte wurde mir die Platte nicht mit /dev/hdd1 usw. sondern mit /dev/discs/disc0/part1 usw. angezeigt.

Also ich starte eine erneute Installation. Da meine fuer die Installation ausgewaehlte Platte am sekundaeren Slave klemmt muss sie sich also im System mit hdd melden. Der 4. Buchstabe a, b, c, d.

1. Platte: Primaer Master - hda
2. Platte: Primaer Slave - hdb
3. Platte: Sekundaer Master - hdc
4. Platte: Sekundaer Slave - hdd

Also pruefe ich mit

ls -l /mnt/dev/hdd

ob hdd dem System bekannt ist. Ergebnis: der Installer kennt kein /dev/hdd

Meine Platte (3 Partitionen) war unter

/mnt/dev/discs/disc0/disc - hdd
/mnt/dev/discs/disc0/part1 - hdd1
/mnt/dev/discs/disc0/part2 - hdd2
/mnt/dev/discs/disc0/part3 - hdd3

zu finden.

Andere Distris setzen an dieser Stelle schon symbolische Links. Arch 7 aber Nicht. <- DAS IST DER BUG, Teil 1

Nun ist es aber so, dass grub mit der Syntax hdx arbeitet und der Arch-Installer grub auch so konfiguriert.

Beim Start des Rechners kann von grub also keine Partition gefunden werden.

Um das /dev - Problem waehrend der Installation zu loesen habe ich einfach die Links selbst erzeugt.

ln -s /mnt/dev/discs/disc0/disc /mnt/dev/hdd
ln -s /mnt/dev/discs/disc0/part1 /mnt/dev/hdd1
ln -s /mnt/dev/discs/disc0/part2 /mnt/dev/hdd2
ln -s /mnt/dev/discs/disc0/part3 /mnt/dev/hdd3

Wichtig ist, dass man waehrend der Installation die Links mit /mnt erzeugt!

Damit bestehen im System die von grub benoetigten Verzeichnisse in der /dev/hdx - Syntax.

Es geht aber noch weiter mit dem Bug. Damit grub funktioniert benoetigt er sogenannte stage - Dateien. Diese Dateien sollten sich in /boot/grub befinden. Das ist aber nicht der Fall. <- DAS IST DER BUG, Teil 2

Also sucht man diese stage - Dateien mit

find /mnt/ -name "*stage*"

Als Suchergebnis habe ich folgendes erhalten:

/mnt/usr/lib/grub/i386-pc/e2fs_stage1_5
/mnt/usr/lib/grub/i386-pc/stage2_eltorito
/mnt/usr/lib/grub/i386-pc/ufs2_stage1_5
/mnt/usr/lib/grub/i386-pc/iso9660_stage1_5
/mnt/usr/lib/grub/i386-pc/jfs_stage1_5
/mnt/usr/lib/grub/i386-pc/xfs_stage1_5
/mnt/usr/lib/grub/i386-pc/minix_stage1_5
/mnt/usr/lib/grub/i386-pc/fat_stage1_5
/mnt/usr/lib/grub/i386-pc/vstafs_stage1_5
/mnt/usr/lib/grub/i386-pc/stage1
/mnt/usr/lib/grub/i386-pc/stage2
/mnt/usr/lib/grub/i386-pc/reiserfs_stage1_5
/mnt/usr/lib/grub/i386-pc/ffs_stage1_5

Na Klasse, wieso liegen diese Datei nicht in /mnt/boot/grub ?
Also habe ich die wichtigsten dahin kopiert.

cp /mnt/usr/lib/grub/i386-pc/e2fs_stage1_5 /mnt/boot/grub
cp /mnt/usr/lib/grub/i386-pc/stage2_eltorito /mnt/boot/grub
. . .
usw.

Habe irgendwo bei google mal gelesen, dass man eigentlich nur die stage1 und stage2 braucht. Naja, habe sie alle kopiert.

Nun sehe ich mir die Konfigdatei von grub an und entdecke eine Ungereimtheit.

title  Arch Linux  [/boot/vmlinuz26]
root   (hd0,0)
kernel /vmlinuz26 root=/dev/discs/disc0/part3 ro

Die Ungereimtheit ist die Zeile mit dem Eintrag root (hd0,0)

Das wird so nicht funktionieren (kann aber) und ist etwas unflexibel, will mann eventuell noch weitere Systeme auf anderen Platten zum booten konfigurieren.

Um es also besser zu machen verwende ich die Zeile mit dem Eintrag root (hd0,0) NICHT.

Damit es aber funktiniert muss ich nun eine Datei erstellen, die von grub verwendet wird, um die Devices zu identifizieren. Es ist eine Datei mit dem Namen "device.map". Diese Datei muss sich in /boot/grub befinden und enthaelt als Eintrag die Zuordnungen der Devices. Die Datei "device.map" ist neben "menu.lst" eine Konfigurationsdatei von grub. Also die Datei erzeugen:

touch /mnt/boot/grub/device.map

Nun habe ich in dieser Datei mein /dev/hdd eingetragen. Da ich nur ein System von einer Platte zum booten verwenden will enthaelt meine device.map auch nur eine Zeile.

(hd0) /dev/hdd

Ich habe also /dev/hdd hd0 zugeordnet. Nun kann ich hd0 bei der Konfiguration von grub verwenden. Beispiel meiner menu.lst

title  Arch Linux  [/boot/vmlinuz26]
#root   (hd0,0)
#kernel /vmlinuz26 root=/dev/discs/disc0/part3 ro
kernel (hd0,0)/vmlinuz26 root=/dev/hdd3

Wichtig: grub faengt bei 0 an zu zaehlen. Also ist hd0,0 meine hdd1

Und hdd1, also hd0,0 ist /boot

Da sich der Kernel in /boot befindet muss die Zeile mit dem Kernel

kernel (hd0,0)/vmlinuz26 root=/dev/hdd3

heissen !

Der Eintrag mit einer initrd muss sich auch auf hd0 beziehen und koennte so aussehen:

initrd (hd0,0)/meine-initrd.img

Ich fasse noch mal kurz zusammen. Den Eintrag root (hd0,0) verwende ich nicht. Dafuer habe ich die Datei device.map angelegt und konfiguriert.

Jetzt kommt noch etwas Ganz Wichtiges.

Das habe ich zunaechst nicht beachtet und hatte Probleme beim booten. Die /boot - Partition sollte einen Fehler im Dateisystem oder dem Superblock haben. Ist aber Quatsch.

Ursache war, ich hatte vergessen die "fstab" entsprechend zu konfigurieren.
So wurden meine 3 Partitionen vom Installer eingetragen:

/dev/discs/disc0/part1 /boot reiserfs noatime 0 0
/dev/discs/disc0/part2 swap swap defaults 0 0
/dev/discs/disc0/part3 / reiserfs noatime 0 0

Ich dachte erst, das das so ok ist und es ausreicht, grub auf die /dev -Syntax zu konfigurieren. War aber ein Irrtum.

Linux kommt offensichtlich beim booten mit der Bezeichnung der Devices in "gemischter Form" nicht klar. Meine /boot - Partition wurde zwar gelesen aber nicht gemountet. Bei /root gab es keine Probleme.

Ich habe meine /etc/fstab wie folgt geaendert:

#/dev/discs/disc0/part1 /boot reiserfs defaults 0 0
#/dev/discs/disc0/part2 swap swap defaults 0 0
#/dev/discs/disc0/part3 / reiserfs defaults 0 0

/dev/hdd1 /boot reiserfs noatime 0 0
/dev/hdd2 swap swap defaults 0 0
/dev/hdd3 / reiserfs noatime 0 0

Damit gibt es keine Probleme mehr beim booten.

Die beiden Aenderungen mit noatime habe ich in eigener Entscheidung gemacht. Ein defaults ist auch ok.

Wer sich mal die Muehe macht, die Datei /var/log/messages.log zu lesen wird folgendes feststellen:

Auch Devices, bei denen man bei der Installation keine Links erzeugt hat melden sich beim booten mit der /dev - Syntax. Z. Bsp. bei mir /dev/hda und /dev/hdb als Brenner und CDROM sowie noch zwei weitere Platten mit /dev/hde und /dev/hdg (ein onbord-Raid).

Wurde man auf /dev/hde ein Windows liegen hat bekommt die device.map noch eine weitere Zuordnung als Eintrag. z. Bsp.:

(hd1) /dev/hde

Und die menu.lst haette dann einen Eintrag in dieser Form:

title Windoof
root (hd1,1)
chainloader +1

In diesem Beispiel befindet sich C von Windows auf /dev/hde2. (grub faengt bei 0 an zu zaehlen)

Ein

fdisk /dev/hde

ergibt mit p z. Bsp.:

    Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/hde1               1          13      104391   83   Dell Utility
/dev/hde2   *          14        1288    10241437+   7   HPFS/NTFS

Soweit meine Erfahrung mit Arch und grub.

Gruss quiptime

Fußzeile des Forums

Powered by FluxBB