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

Grub hat nur noch Windows [gelöst]

Ich habe einen Laptop (i586) von 12.2 nach 13.1 upgraden wollen. Alle Paketabhängigkeiten waren OK. Der Prozess stand allerdings nach installing console-kit und ich musste hart abbrechen. Jetzt startet zwar Grub (nicht Grub2), hat aber nur noch Windows auf der Liste.

Zuerst habe ich es mit Supergrub probiert, aber das stürzt beim Laden der installierten Version - welche Zeile auch immer - hart ab.

Ich komme an alles mit der Rescue-Version von USB-Stick ran, habe die root-Partition nach /mnt eingebunden. In der Menu.lst steht auch wirklich nur noch Windows drin. In der menu.lst.old war die ursprüngliche Version - wie vermutet. Dann menu.lst -> menu.lst.new und menu.lst.old -> menu.lst und neu gestartet. Allerdings gabs immer nur noch Windows und die menu.lst enthielt auch nur Windows - merkwürdig ...

In /boot ist schon der neue Kernel drin, das kann ich an der Versionsnummer sehen.

Ich habe danach noch versucht, mit Yast einen neuen Bootloader hinzubekommen (von Rescue), aber aufgrund der Partitionierung kann der Bootloader nicht installiert werden.

Was kann ich jetzt tun?

Spielwurm
 
Sehr interessant. Wie sieht die wiederhergestellte menu.lst aus? Siehst Du im Menü den neuen Text des Windows-Aufrufs, wenn Du ihn in der menu.lst geändert hast?

Ansonsten: Im textbasierten GRUB-Menü mit c auf die Befehlszeile wechseln und dort
Code:
root (hd0,1)
kernel /boot/vmlinuz
initrd /boot/initrd
boot
(für (hd0,1) mußt Du die Boot- bzw. Systempartition verwenden, die kannst Du mit
Code:
find /boot/vmlinuz
finden) eingeben (die Klammern sind über 9 und 0, der Schrägstrich ist die Bindestrich-Taste, y und z sind vertauscht).

P. S. Kommt bei
Code:
find /boot/grub/menu.lst
mehr als eine Zeile heraus?
 
Ich habe den Windows-Eintrag in der menu.lst nicht geändert. Dort steht:
Code:
###YaST update: removed default
default 0
timeout 8
##YaST - generic mbr
gfxmenu (hd0,4)/boot/message
##YaST - activate

###Dont't change usw.
title Windows
    rootnoverify (hd0,0)
    chainloader +1
Nach chroot in das System auf der Platte:
Code:
linux:/find /boot/vmlinuz
/boot/vmlinuz
Code:
linuz:/find /boot/grub/menu.lst
/boot/grub/menu.lst
menu.lst um die Zeilen von Dir ergänzt: nur Windows als Eintrag
danach den gfxmenu-Eintrag auskommentiert: dito
Konnte jetzt aber den Grub editieren und habe von Hand den Windows-Eintrag geändert: initrd existiert nicht.
Edit: "existiert nicht" ist falsch. Sie ist vorhanden, hat aber nur wenige 100 Byte Größe, das habe ich auf den ersten Blick nicht gesehen.

Ich gehe jetzt erst mal einkaufen. Vielleicht fällt mir dabei was ein. Ob ich in der chroot-Umgebung eine initrd erstellen kann?

Spielwurm
 
mkinitrd geht nicht, da fehlen /sys und wahrscheinlich auch /proc. Muss mal googlen, da war doch was mit mount und bind ...
Edit:
Mit mount -o bind /sys /mnt/sys geht es auch nicht:
Code:
linux:/ # mkinitrd
Kernel image:   /boot/vmlinuz-3.11.10-7-desktop
Initrd image:   /boot/initrd-3.11.10-7-desktop
KMS drivers:     radeon
plymouth: symbol lookup error: plymouth: undefined symbol: ply_logger_is_tracing_enabled
plymouth: symbol lookup error: plymouth: undefined symbol: ply_logger_is_tracing_enabled
grep: /usr/share/plymouth/themes//.plymouth: Datei oder Verzeichnis nicht gefunden
There was an error generating the initrd (1)
Jetzt brauch im mal Hilfe.

Spielwurm
 
Ich habe gemeint, daß Du in der menu.lst bei Windows die Zeile "title" ändern sollst; damit soll festgestellt werden, ob Du überhaupt die richtige Datei geändert hast. Alle von mir um 12.40 Uhr genannten Befehle sind ausschließlich für die GRUB-Befehlszeile gedacht (der Linux-Befehl find hilft in diesem Fall nicht).
_______

Falls alles auf einer Partition ist:
Code:
mount /dev/sdXY /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
mkinitrd
 
Danke, ich habs jetzt. Das schwierigere war: wie kriege ich die Installation dazu, diese Installation an Grub zu übergeben. Es ist mir nicht gelungen. Dann fiel mir ein, dass es ja auch Grub2 gibt. Also gewechselt und: da stehen doch glatt keine Optionen in den Kernel-Zeilen! Die habe ich dann von meinem Laptop abgeschrieben und jetzt funktioniert alles wieder. Update ist auch vollständig. Auf Grub und Grub2 bin ich im Moment nicht gut zu sprechen!

Spielwurm
 
Für die Erstellung der initrd sowie für den Inhalt der menu.lst ist GRUB nicht verantwortlich, GRUB hat ja korrekt funktioniert und Dir sogar ein Menü angezeigt. Was im Zuge Deiner menu.lst-Änderungsversuche nicht so gelaufen ist, wie Du es wolltest, wirst Du wohl jetzt nicht mehr herausfinden. Zur initrd findest Du sicher etwas in /var/log/zypp/history.

Unter einer Lösung stelle ich mir etwas anderes vor.
 
Um es klarer zu sagen:
die initrd zu erstellen, war nach dem Hinweis mit mount --bind nicht schwierig. Der erste Start danach auch nicht besonders, ich musste nur den vorhandenen Windows-Start von Hand durch den Linux-Start ersetzen. Aber wie bekomme ich die Grub-Konfiguration geschrieben? Ich wünsche mir ein Tool, das mir bei der Konfiguration hilft - wie in Yast - und das Ergebnis auf jeden Fall ! schreibt, wohin ich sage. Yast macht das nicht.

Auf meinem eigenen Laptop habe ich der 13.1 ein Update verpasst mit neuem Kernel. Der Grub2 ist allerdings von der anderen Installation (12.3) und hat fest einen bestimmten Kernel für die 13.1 eingetragen. Ein allgemeiner Eintrag wäre weniger Arbeit für mich. Wodurch auch immer das kommt, das Wort Grub steht immer da und deswegen kann ich es jetzt erstmal nicht mehr sehen.

Spielwurm
 
YaST erzeugt die Datei /etc/grub.conf und beauftragt GRUB, deren Inhalt auszuführen. Wenn YaST dabei nicht das schreibt, was Du Dir vorstellst, kann das natürlich zu einem Problem werden.

An Stelle der tatsächlichen Dateien kannst Du auch die Verknüpfungen /boot/vmlinuz und /boot/initrd verwenden, aber sobald YaST wieder aktiv wird, wird er vermutlich das tun, was seine Entwickler für richtig halten (und im Hinblick darauf, daß mittlerweile standardmäßig mehrere Kernel installiert sind und die Verknüpfung nur auf ein Ziel zeigen kann, ist das auch verständlich).

Und mit GRUB2 ist alles noch viel komplizierter.
 
Oben