• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Gelöst: GRUB läuft hier nur von Diskette, nicht von Platte

boyherre

Member
Hallo,

leider muß ich feststellen, daß ich viel zu wenig weiß. Daher komme ich mit GRUB auch nicht weiter.

Ich möchte auf meinem Rechner per GRUB-Bootmanager bei jedem Start entscheiden dürfen, ob ich mit OpenSuSE 10.3 oder Windows XP booten möchte - ganz "normal".

Leider gelingt mir das Booten von Linux nur mithilfe einer Boot-Diskette (seit SuSE 10.0), auf der sich STAGE1 befindet. Versuche ich, mithilfe von YAST, den Bootmanager auf die Platte zu bringen, bekomme ich in der Folge lediglich die (Fehler)-Meldung "GRUB" auf den Bildschirm, egal, was ich unter YAST einstelle.

Meine Idee ist, daß es eigentlich ganz einfach sein müßte, dasselbe, was von der Diskette (/dev/fd0) startet, auch von der Festplatte starten zu lassen. Aber was ist schon einfach? Das offenbar nicht.

Möglicherweise liegt das Ganze daran, daß ich mehrere Festplatten mit diversen Partitionen im Rechner habe, die so mit der Zeit organisch gewachsen sind. . .

Die Platten werden von Linux so gesehen:

sda 5 - 10 (WIN P - U) 80 GB IDE

sdb5 = Linux SWAP 80 GB IDE (eine ganze Platte nur für Linux)
sdb6 = /
sdb7 = /home

sdc5 = Win W 300 GB SATA

sdd 1 = Win C 4 GB SCSI
sdd 5 - 12 = Win E - L

sde 5 - 7 = Win D, M - O 4 GB SCSI

Mein Windows XP befindet sich auf (und bootet von) WIN-U (sda10).
Der Windows-Boot-Manager (boot.ini) befindet sich auf Win C = sdd 1.
Nebenbei: Von dort aus gelingt mir das Booten von Linux auch nicht (!).

SuSE-Linux befindet sich auf (und bootet von) sdb6

In der Abschnittsverwaltung des Bootloaders lese ich:

openSUSE 10.3 - 2.6.22.13-0.3 /boot/vmlinuz-2.6.22.13-0.3-default /boot/initrd-2.6.22.13-0.3-default /dev/sdb6

Chainloader für Windows in sdd1:
Other blockoffset=1, chainloader=/dev/sdd1, noverifyroot=true, root=0

/etc/grub.conf sieht derzeit so aus:
setup --stage2=/boot/grub/stage2 (hd3,5) (hd3,5)

Versuche ich aber, den Bootloader in den MBR zu schreiben, kann ich kein System mehr booten, bekomme nur die Meldung "GRUB" und muß fixmbr auführen, um wieder Windows XP booten zu können. Linux booten kann ich nach wie vor nur mithilfe der Boot-Diskette. Das ist zwar sehr sicher, aber daß ich den anderen Weg nicht hinbekomme, nervt auch.
Ich hoffe, daß mir jemand dabei behilflich sein kann?

Weiter frohe Festtage,
herzlichst,
Boy
 

admine

Ultimate Guru
Poste doch bitte mal folgendes:


Code:
fdisk -l
cat /etc/fstab
cat /boot/grub/menu.lst
cat /boot/grub/device.map
 

Justix

Member
jo, ich hab hier das gleiche problem :oops:

EtBadenBox-Tower:/home/ajust # fdisk -l

Platte /dev/sda: 164.6 GByte, 164696555520 Byte
255 heads, 63 sectors/track, 20023 cylinders
Units = Zylinder of 16065 * 512 = 8225280 bytes
Disk identifier: 0x444c544e

Gerät boot. Anfang Ende Blöcke Id System
/dev/sda1 110102 110577 3815730+ 7 HPFS/NTFS
/dev/sda2 113965 200777 697317940+ 75 PC/IX
/dev/sda3 1 1 7537+ df BootIt
Partition 3 endet nicht an einer Zylindergrenze.

Partitionstabelleneinträge sind nicht in Platten-Reihenfolge

Platte /dev/sdb: 80.0 GByte, 80026361856 Byte
255 heads, 63 sectors/track, 9729 cylinders
Units = Zylinder of 16065 * 512 = 8225280 bytes
Disk identifier: 0x07950c12

Gerät boot. Anfang Ende Blöcke Id System
/dev/sdb1 1 8747 70260246 7 HPFS/NTFS
/dev/sdb2 8748 9729 7887915 f W95 Erw. (LBA)
/dev/sdb5 8748 9729 7887883+ 7 HPFS/NTFS

Platte /dev/sdc: 203.9 GByte, 203928109056 Byte
255 heads, 63 sectors/track, 24792 cylinders
Units = Zylinder of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0ad93ec0

Gerät boot. Anfang Ende Blöcke Id System
/dev/sdc1 * 1 12748 102398278+ 7 HPFS/NTFS
/dev/sdc2 12749 24791 96735397+ f W95 Erw. (LBA)
/dev/sdc5 12749 24791 96735366 7 HPFS/NTFS

Platte /dev/sdd: 80.0 GByte, 80026361856 Byte
255 heads, 63 sectors/track, 9729 cylinders
Units = Zylinder of 16065 * 512 = 8225280 bytes
Disk identifier: 0xbe54ef40

Gerät boot. Anfang Ende Blöcke Id System
/dev/sdd1 1 262 2104483+ 82 Linux Swap / Solaris
/dev/sdd2 * 263 2873 20972857+ 83 Linux
/dev/sdd3 2874 9729 55070820 83 Linux

Code:
EtBadenBox-Tower:/home/ajust # cat /etc/fstab
/dev/disk/by-id/scsi-SATA_ST380013AS_3JV331GB-part2 /                    	ext3       acl,user_xattr	1 1
/dev/disk/by-id/scsi-SATA_ST380013AS_3JV331GB-part3 /home                	ext3       acl,user_xattr	1 2

/dev/disk/by-id/scsi-SATA_WDC_WD800BB-00DWD-WMAHL3780948-part1 /windows/C	ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=de_DE.UTF-8 								0 0
/dev/disk/by-id/scsi-SATA_Maxtor_6B200M0_B40N6Q4H-part1 /windows/D		ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=de_DE.UTF-8 								0 0
/dev/disk/by-id/scsi-SATA_WDC_WD800BB-00DWD-WMAHL3780948-part5 /windows/E	ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=de_DE.UTF-8 								0 0
/dev/disk/by-id/scsi-SATA_Maxtor_6B200M0_B40N6Q4H-part5 /windows/F		ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=de_DE.UTF-8 								0 0
/dev/disk/by-id/scsi-SATA_ST380013AS_3JV331GB-part1 swap                 	swap       defaults		0 0

proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
/dev/fd0             /media/floppy        auto       noauto,user,sync      0 0


EtBadenBox-Tower:/home/ajust # cat /boot/grub/device.map
(hd2) /dev/sdd
(fd0) /dev/fd0
(hd0) /dev/sda
(hd3) /dev/sdc
(hd1) /dev/sdb

Wär echt cool wenn du das lösen könntest.

Danke schon mal im Voraus
 

Justix

Member
grub.lst:
Code:
# Modified by YaST2. Last modification on Sa Okt  6 11:57:29 CEST 2007
default 0
timeout 8
gfxmenu (hd2,1)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 10.3
    root (hd2,1)
    kernel /boot/vmlinuz-2.6.22.5-31-default root=/dev/disk/by-id/scsi-SATA_ST380013AS_3JV331GB-part2 vga=0x31a resume=/dev/sdd1 splash=silent showopts
    initrd /boot/initrd-2.6.22.5-31-default

###Don't change this comment - YaST2 identifier: Original name: windows 1###
title windows 1
    rootnoverify (hd2,1)
    chainloader (hd1,0)+1

###Don't change this comment - YaST2 identifier: Original name: windows 2###
title windows 2
    rootnoverify (hd2,1)
    chainloader (hd3,0)+1

###Don't change this comment - YaST2 identifier: Original name: floppy###
title Diskette
    rootnoverify (hd2,1)
    chainloader (fd0)+1

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 10.3
    root (hd2,1)
    kernel /boot/vmlinuz-2.6.22.5-31-default root=/dev/disk/by-id/scsi-SATA_ST380013AS_3JV331GB-part2 vga=normal showopts ide=nodma apm=off acpi=off noresume edd=off 3
    initrd /boot/initrd-2.6.22.5-31-default
 

admine

Ultimate Guru
Was liegt auf /dev/sda und /dev/sdb?

Und welche Platte ist laut BIOS die Boot-Platte?

Wohin genau hast du versucht den Bootloader zu schreiben?

Ich würde es in die /-Partition versuchen:

Code:
grub-install /dev/sdd2
als root ausführen.
 

Justix

Member
Der Befehl df zeigt folgendes an:
Code:
EtBadenBox-Tower:/home/ajust # df
Dateisystem          1K-Blöcke   Benutzt Verfügbar Ben% Eingehängt auf
/dev/sdd2             20641788   3420684  16172464  18% /
udev                   1030980       144   1030836   1% /dev
/dev/sdd3             54206668    187152  51265976   1% /home
/dev/sdb1             70260244  38776572  31483672  56% /windows/C
/dev/sdc1            102398276  55460984  46937292  55% /windows/D
/dev/sdb5              7887880   2242752   5645128  29% /windows/E
/dev/sdc5             96735364  75881508  20853856  79% /windows/F
/dev/sr0                 74330     74330         0 100% /media/SU1030.001

also sda ist anscheinend gar nicht eingebunden.

Beim booten bekomme ich jedoch x-mal:

<6>attempt to access beyond end of device
<6>sda: rw=0, want=1776409331, limit=321672960
<3>Buffer I/O error on device sda1, logical block 7631232

das wäre das nächste gewesen, was ich lösen wollte

Bootplatte vom BIOS müsste
Platte /dev/sdc: 203.9 GByte, 203928109056 Byte
255 heads, 63 sectors/track, 24792 cylinders
Units = Zylinder of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0ad93ec0

Gerät boot. Anfang Ende Blöcke Id System

/dev/sdc1 * 1 12748 102398278+ 7 HPFS/NTFS
/dev/sdc2 12749 24791 96735397+ f W95 Erw. (LBA)
/dev/sdc5 12749 24791 96735366 7 HPFS/NTFS
sein
 

Justix

Member
dann müsste es aber eher ins sdc1 installiert werden nicht?

edit: Achso wenn ichs in sdb installieren würde, dann müsste ich einfach von der Segate SATA 80er booten
 

admine

Ultimate Guru
Justix schrieb:
dann müsste es aber eher ins sdc1 installiert werden nicht?
Dahin auf keinen Fall.
Wenn, dann in /dev/sdc ... also in den MBR von /dev/sdc und nicht in den PBR von /dev/sdc1.

Justix schrieb:
edit: Achso wenn ichs in sdb installieren würde, dann müsste ich einfach von der Segate SATA 80er booten
Was ist denn überhaupt auf /dev/sdb?
 

Justix

Member
oops :oops: ja mein fehler sdb* sind windowspartitionen, software und so n zeug.

also grub install auf sdd2 also "/" und dann die bootreihenfolge auf diese platte einstellen.
 

admine

Ultimate Guru
Installiere Grub mal in den MBR von /dev/sda
Code:
grub-install /dev/sda
und lass von dieser Platte booten.

Das ist laut der device.map (hd0) und alle weiteren Angaben in der menu.lst müssten/sollten passen.
(bis auf den Windows-Eintrag, aber das machen wir danach)
 

admine

Ultimate Guru
Windows sollte mit diesem Eintrag booten:

Code:
title windows 
    map (hd0) (hd3)
    map (hd3) (hd0)
    rootnoverify (hd3,0)
    makeactive
    chainloader +1



Editiere die /boot/grub/menu.lst aber bitte nicht mit YaSt sondern mit einem Editor deiner Wahl als root.
Nimm den VI in einer Shell oder so als Beispiel:
Alt + F2 => kdesu kate /boot/grub/menu.lst => root-PW eingeben => File editieren
 

Justix

Member
Also ich denk jetzt nur mal laut:

Nach "fdisk -l" ist mein windows (dualboot) auf sdc1, sdc2, sdc3 usw. Das würde dann heissen, dass es nach device.map auf hd3 ist. Nicht wie in grub.lst steht hd2,1 hd1,0

Code:
title windows 1
    rootnoverify (hd2,1)
    chainloader (hd1,0)+1

Oder müsste die grub.lst jetzt irgendwo anderst geändert werden?

Edit:
Sorry du warst etwas schneller: Für was ist denn das map?
 

Justix

Member
Achso, dann wäre der Fall für mich gelöst, es läuft.

Ich nehme an das rootnoverify (hd3) ist zum auswählen der Platte für was das ,0 ist weiss ich nicht aber steht einfach so da.

Make active und chainloader begreif ich auch noch nicht so ganz. Aber es funktioniert.

Viiiieeelen dank admin und sorry boyherre, dass ich mich in deinen treat eingemischt habe. Vielleicht kann ich dir ja bald helfen :D

Gruss Justix
 

admine

Ultimate Guru
Justix schrieb:
Ich nehme an das rootnoverify (hd3) ist zum auswählen der Platte für was das ,0 ist weiss ich nicht aber steht einfach so da.
Die 0 ist in Grub-Sprache die erste Partition ;)

Justix schrieb:
Make active und chainloader begreif ich auch noch nicht so ganz. Aber es funktioniert.
chainloader = Linux kann das Windows nicht direkt ansprechen und booten.
Daher wird mittels "chainloader" der Win-Bootloader angesprochen.
Mit dem +1 wird der erste Sektor der angegebenen Partition ausgelesen und ausgeführt.

makeactive = die Windows-Partition wird sichtbar und aktiv gesetzt.
 
Oben