Grub komplett neu schreiben

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Grub komplett neu schreiben

Beitrag von Richard » 14.09.2017 09:45:41

Hallo,

ich habe in den letzten 18 Monaten bei mir und im Familienkreis einige Rechner auf Linux- und Windows-Basis aufgesetzt, meist Dual- oder Triple-Boot-Systeme. Dabei habe ich der Einfachheit halber meist den Grub-Costumizer eingesetzt. Das war wohl eine blöde Idee, denn gerade habe ich Probleme wenn ich Aktualisierungen ziehen. Auf meinem Notebook arbeitet ein Debian Jessie und ein Linux Mint 18.2. Wenn ich das Debian Jessie update bootet danach nicht mehr, wenn ich Linux Mint update geht es noch, aber NUR Mint. Ich habe das mal auf einem anderen System getestet (mit Debian und Mint): Updates ziehen ohne GC, Ergebnis: alles OK, beide Systeme (hier Ubuntu und Mint) booten. Dann GC installiert und die die Reihenfolge im Bootmenü geändert. Danach Updates auf beiden Systemen gezogen, Ergebnis: Grub bootet nicht mehr. Die Einträge im Menü sind da, laufen aber ins Leere.

Was genau GC ändert weiß ich nicht, die Datei /etc/grub.d/10_linux z. B. ist weg. Es gibt aber eine 10_linux_proxy die auf einen anderen Ordner verweist. Vermutlich weiß nur der Entwickler was genau geändert wird.

Gibt es eine Möglichkeit mittels Live-CD Grub komplett neu zu schreiben, d.h. "einfach" alles "was zu Grub gehört" neu zu schreiben? Reicht da vielleicht schon ein
grub-install /dev/sdX
?

Benutzeravatar
smutbert
Moderator
Beiträge: 8318
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Grub komplett neu schreiben

Beitrag von smutbert » 14.09.2017 10:26:06

grub-install schreibt nur den eigentlichen Teil, der zum Booten von grub selbst benötigt wird neu, ändert aber nichts an dem Teil der für die Konfiguration, also das Menü verantwortlich ist.

Nachdem du offensichtlich noch eine andere GNU/Linux-Installation booten kannst, böte es sich an von dort aus nach jessie zu chrooten, ungefähr so
  • das /-Dateisystem von jessie irgendwo mounten, zB in einem eigens dafür angelegten »/mnt/tmp«

    Code: Alles auswählen

    # mkdir /mnt/tmp
    # mount /dev/sdXY /mnt/tmp
    
  • die verschiedenen virtuellen Dateisysteme ebenfalls dort zu mounten

    Code: Alles auswählen

    # mount -o bind /dev /mnt/tmp/dev
    # mount -o bind /dev/pts /mnt/tmp/dev/pts
    # mount -o bind /proc /mnt/tmp/proc
    # mount -o bind /sys /mnt/tmp/sys
    
  • für den Internetzugang die resolv.conf des laufenden Systems übernehmen - die wird bei einer normalen Installation mit network-manager oder resolvconf ohnehin wieder überschrieben

    Code: Alles auswählen

    # cat /etc/resolv.conf > /mnt/tmp/etc/resolv.conf
    
  • chroot ausführen und falls es ein eigenes Dateisystem ist »/boot« in der chroot-Umgebung mounten

    Code: Alles auswählen

    # chroot /mnt/tmp
    # mount /boot
    
Nun solltest du, ganz so als hättest du jessie gestartet, den grub-costumizer deinstallieren und eventuell auch gleich grub komplett entfernen und neu installeren können, also etwa (ich weiß nicht ob ich alle Paketnamen richtig geschrieben habe)

Code: Alles auswählen

# apt purge grub grub-common grub2-common grub-pc grub-costumizer
# apt -o Dpkg::Options::="--force-confmiss" install grub-pc
(alternativ auch nur grub-costumizer entfernen und den zweiten Befehl mit der Option »--reinstall« ausführen)
Danach kannst du, wenn es nicht sowieso mit debconf bei der Paketinstallation passiert, noch »update-grub« und »grub-install« aufrufen.

___


Ich würde bei mehreren Systemen auf einem PC empfehlen nur mehr ein System mit grub auszustatten. Also auf den anderen grub(-pc/-efi-amd64/...) einfach komplett deinstallieren und dafür (bei Debian-basierenden Systemen) mit einer erst anzulegenden »/etc/kernel-img.conf« mit

Code: Alles auswählen

do_symlinks = yes
link_in_boot = yes
dafür sorgen, dass es in »/boot« immer symbolische Links zu dem aktuellen Kernel und der aktuellen initrd gibt. Nachdem sich das aber bei einer Kernel-Installation oder einem Kernel-Update auswirkt, musst du (in den Systemen ohne grub) erst noch dafür sorgen, dass die Links für den momentan installierten Kernel+initrd angelegt werden. Entweder legst du sie selbst mit »ln« an oder du führst so etwas wie

Code: Alles auswählen

# dpkg-reconfigure linux-image-$(uname -r)
aus und überprüfst hinerher sicherheitshalber den Inhalt von »/boot« wo es dann zwei Links namens »vmlinuz« und »initrd.img« geben sollte.

In dem einen System mit grub kannst du dann manuell Booteinträge für die anderen Systeme anlegen, wofür sich die »/etc/grub.d/40_custom« anbietet. Die könnte dann ungefähr so aussehen

Code: Alles auswählen

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry 'Mint' {
        search --no-floppy --fs-uuid --set=root XYZ
        linux   /boot/vmlinuz root=UUID=XYZ ro quiet loglevel=2
        initrd  /boot/initrd.img
}
XYZ musst du antürlich durch die UUID des Dateisystems ersetzen, bzw. auch die Pfade anpassen, wenn /boot auf einem eigenen Dateisystem liegt (dann brauchst du auch zwei verschiedene UUIDs, die von /boot und die von /).

Wie Booteinträge für Windows aussehen müssen, weiß ich nicht, aber das kannst du bestimmt auch in deiner aktuellen »/boot/grub/grub.cfg« nachsehen.

Wenn alles geklappt hat, kannst du hinterher auch Debianos-prober deinstallieren, das automatisch Einträge für andere installierte Systeme erstellt, aber meiner Erfahrung nach nicht besonders zuverlässig arbeitet.
Zuletzt geändert von smutbert am 14.09.2017 10:42:03, insgesamt 1-mal geändert.

owl102

Re: Grub komplett neu schreiben

Beitrag von owl102 » 14.09.2017 10:35:11

smutbert hat geschrieben: ↑ zum Beitrag ↑
14.09.2017 10:26:06
Nachdem du offensichtlich noch eine andere GNU/Linux-Installation booten kannst, böte es sich an von dort aus nach jessie zu chrooten
Da er noch Mint booten kann, würde es sich nicht vielmehr anbieten, erst einmal dort aufzuräumen? Denn wenn das klappt, sollte ja auch wieder Debian im Grub-Menü auftauchen, und anschließend kann Debian gebootet werden und dort ebenfalls aufgeräumt werden. ohne Debian chrooten zu müssen.

Benutzeravatar
smutbert
Moderator
Beiträge: 8318
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Grub komplett neu schreiben

Beitrag von smutbert » 14.09.2017 10:42:41

Keine Ahnung mit Mint will ich nichts zu tun haben :mrgreen:

(wäre wahrscheinlich wirklich einfacher, aber meiner Meinung nach sind mehrere Installationen mit jeweils eigenem Bbootloader sowieso ein bisschen unpraktisch, weswegen ich meinen Beitrag auch um eine anderes mögliches Vorgehen ergänzt habe)

Hans-Martin
Beiträge: 141
Registriert: 06.12.2007 18:03:03
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Kehl

Re: Grub komplett neu schreiben

Beitrag von Hans-Martin » 15.09.2017 14:43:44

Ich weiß natürlich, dass die meisten hier im Forum grub für das Maß der Dinge halten (ich bin vor ein paar Jahren im Kontext damit hier angeschrieben worden, als ob ich ein längst überholtes Produkt einsetzen würde). Ich verwende nach wie vor als Bootloader lilo. Gegen Ende des letzten Jahrhunderts hatte ich parallel ein SuSE-Linux-Systejm, OS/2 und MSDOS (notwendig wegen einer Druckersteurungssoftware, die alternativ nur für Windows existierte) auf 2 Festplatten installiert, wobei MSDOS auf der 2 Platte lag: Es gab nicht das geringste Problem, obwohl damals MSDOS-Systeme alleine unbedingt auf der 1. Platte mit Bootflag zu liegen hatten.

Aktuell betreibe ich parallel jessie, stretch und buster. Es genügt an sich, lediglich für eines der Systeme den Bootloader zu installieren. Für mehr Flexibilität habe ich lilo dreifach installiert. Man benötigt je System für die Bootloaderkonfiguration nur eine Datei /etc/lilo.conf. Zu beachten ist, dass die zum jeweiligen Kernel gehörigen Module (/lib/modules) sowohl auf dem Startsystem als auch auf dem gebooteten System vorliegen. Um die Funktionsweise weiterer Kernel zu testen, braucht man sie lediglich in die Datei lilo.conf eintragen.

Warum also nicht einmal lilo versuchen?

KP97
Beiträge: 3403
Registriert: 01.02.2013 15:07:36

Re: Grub komplett neu schreiben

Beitrag von KP97 » 15.09.2017 15:47:29

Ich habe ebenfalls eine ganze Zeit Lilo verwendet, eben weil der Bootloader so flexibel ist. Sehr gut gefallen hat mir aber auch extlinux, da braucht es bei Änderungen weder ein update-grub noch ein lilo.
Nachdem ich nun einen Rechner mit UEFI habe, bin ich erstmal wieder beim Grub gelandet.
Wie verhält Lilo sich denn mit EFI? Hast Du eLilo installiert?

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Grub komplett neu schreiben

Beitrag von Richard » 15.09.2017 16:24:21

@ smutbert

Ja, die von dir genannte Lösung habe ich schon oft erfolgreich verwendet wenn ich Systeme von einer auf eine andere Platte verschoben habe. Das sollte ja auch von einem Live-System gehen. Da ich hier verschiedene Systeme habe die ich vermutlich mit Grub-Costumizer verhunst habe, hab ich etwas nach einer "Brachiallösung" gesucht und Grub einfach in alle System von Grund auf neu schreiben lassen.

Zu deinem Vorgehen: Wäre ist nicht günstige zunächst Grub und Co. zu deinstallieren (über LIve-CD mit chroot), dann erneut zu installieren und Grub neu schreiben zu lassen? Müsste dann Grub (wieder per Live-CD mit chroot) am besten in allen Systemen eines Dual-Boot-Systems deinstalliert und erneut installiert werden (dein Vorschlag mit nur einem Grub überfordert mich etwas, das seh ich mir später an :D )?

Code: Alles auswählen

apt -o Dpkg::Options::="--force-confmiss" install grub-pc
Was macht denn dieser Aufruf? Hab ich ja noch nie gesehen?
alternativ auch nur grub-costumizer entfernen und den zweiten Befehl mit der Option »--reinstall« ausführen
Mit zweiten Befehl meinst du

Code: Alles auswählen

apt -o Dpkg::Options::="--force-confmiss" install grub-pc
@ Hans-Martin

Na ja, Grub wird halt automatisch mit installiert. Ich hab dessen Funktionsweise auch erst ansatzweise verstanden. Da bleib ich erstmal dabei. Ich denke man findet auch zu Grub mehr Infos als zu Lilo.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Grub komplett neu schreiben

Beitrag von scientific » 15.09.2017 18:16:00

Ich verwende auf Uefi refind... Das lasst den Kernel sich selbst booten...
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

guennid

Re: Grub komplett neu schreiben

Beitrag von guennid » 15.09.2017 18:49:15

KP97 hat geschrieben:Wie verhält Lilo sich denn mit EFI?
Ich habe eine Maschine mit UEFI und lilo. Probleme gibt's keine. Es gibt aber nur ein Debian-Jessie auf der Maschine, die als TV, Videorecorder - und -schneidemaschine fungiert, weswegen ich da seltenst dran schraube.

Grüße, Günther

Benutzeravatar
smutbert
Moderator
Beiträge: 8318
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Grub komplett neu schreiben

Beitrag von smutbert » 16.09.2017 00:48:22

mit »-o Dpkg::Options::="--force-confmiss"« sagt man dpkg, dass es Konfigurationsdateien wieder schreiben soll, selbst wenn jemand oder etwas (zB grub-costumizer) sie gelöscht hat.
Ich hab mir grub-costumizer nur einmal kurz angesehen, weil jemand (anderes) hier im forum ihn verwendet hat und soweit ich ihn durchschaue, funktioniert er so, dass er statt zuzulassen, dass die Ausgabe der Skripte in »/etc/grub.d« direkt in der Konfigurationsdatei von grub landen noch einmal durch seine eigenen Skripte laufen lässt und so verändert. Eigentlich sollte damit alles wieder in den Ausgangszustand zurückversetzt werden, wenn man den grub-costumizer deinstalliert, aber so mutig ihn auszuprobieren war ich nicht.

Ich hab mich nicht nur wegen meiner Abneigung gegen Mint nur dem grub deines Debiansystems gewidmet, sondern auch weil ich nach deinem Eröffnungspost eigentlich den Eindruck hatte, dass unter Mint alles ordnungsgemäß funktioniert (dass Mints Grub Debian nicht starten kann, kann imho auch daran liegen, dass Debians Grub kaputt ist).

Ob du das nun aus dem laufenden Mint heraus oder von einem Livesystem aus reparierst, spielt keine Rolle.

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Grub komplett neu schreiben

Beitrag von Richard » 17.09.2017 09:27:19

Ich habe es jetzt so versucht und es hat funktioniert.

Zu der alternativen Vorgehensweise. Wozu braucht es in /boot symbolische Links zum Kernel, auch wenn auf dem System gar kein Grub installiert ist?

Zur Funktionsweise von Grub, die hab ich bisher nur ansatzweise verstanden: Ich bin bisher davon ausgegangen, dass zwischen Schritt 1 (Grub im MBR) und Schritt 3 (Grub auf der System-Partition) noch ein Schritt 2 liegt, da Module für das Laden aus einer Ext4-Partition notwendig sind. Diese zusätzlichen Module liegen dann entweder im (unformatierten, daher recht simple lesbaren) verborgenen Bereich zwischen dem MBR und der 1. Partition oder auf einer Bootpartition (die so formatiert ist, dass auch hier recht simple drauf zugegriffen werden kann). Liege ich hier falsch? Alles bezieht sich auf Grub auf einem Mainboard mit Bios und MBR-Partitionstabellen.

owl102

Re: Grub komplett neu schreiben

Beitrag von owl102 » 17.09.2017 09:44:43

Richard hat geschrieben: ↑ zum Beitrag ↑
17.09.2017 09:27:19
Ich bin bisher davon ausgegangen, dass zwischen Schritt 1 (Grub im MBR) und Schritt 3 (Grub auf der System-Partition) noch ein Schritt 2 liegt, da Module für das Laden aus einer Ext4-Partition notwendig sind.
Das ist richtig, was du da schreibst, aber Grub selber nennt die Schritte nicht 1, 2 und 3, sondern 1, 1.5 und 2. Vermutlich, da Schritt 1.5 erst später hinzugekommen ist (als der Platz im MBR nicht mehr ausreichte), und um Verwirrungen zu vermelden, haben sie "Stage 2" nicht in "Stage 3" umbenannt, sondern stattdessen "Stage 1.5" als Schritt zwischen "Stage 1" und "Stage 2" eingeführt, was natürlich (andere) Verwirrung stiftet.

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Grub komplett neu schreiben

Beitrag von Richard » 17.09.2017 10:20:12

Gerade das ganze erneut versucht unter einem Dual-Boot-System mit Debian und Mint. Zunächst habe ich mich per Live-CD und chroot mit dem Mint verbunden und dort Grub deinstalliert. Danach läuft aber dieses Kommando auf Fehler:

Code: Alles auswählen

apt -o Dpkg::Options::="--force-confmiss" install grub-pc
Es kommt aber keine echte Fehlermeldung, nur

Code: Alles auswählen

root@mint / # apt -o Dpkg::Options::="--force-confmiss" install grub-pc
apt
Usage: apt command [options]
       apt help command [options]

Commands:
  add-repository   - Add entries to apt sources.list
  ......

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Grub komplett neu schreiben

Beitrag von Richard » 17.09.2017 11:02:14

Scheint ein Mint-spezifisches Problem zu sein, unter Ubuntu lief - fast - alles gut. Meine Aussage oben war falsch, ist ein Dualboot aus Ubuntu und Mint, nicht Debian und Mint

Das jetzige System wurde "zusammengestückelt". Sowohl Mint als auch Ubuntu wurden als Single-Boot auf je einer kleinen HDD installiert und später auf sda1 und sda2 einer größeren Platte migriert. Dann Grub neu geschrieben. Die Grub-Konfig lag auf der Ubuntu-Partition. Jetzt bootet aber Mint auch dann noch, wenn dort Grub komplett fehlt. Die Neuinstallation schlug ja fehl, hab dennoch Bootversuch unternommen und es lief. Ich vermute, dass Grub auf der Ubuntu-Partition schon direkt auf den Kernel vmlinuz auf der Mint-Partition verweist. Daher verstehe ich nicht wieso ich diese symbolischen Links anlegen muss wie du oben beschrieben hast oder Mint manuell in Grub eintragen soll. Als ich danach Grub für Ubuntu gelöscht und erneut geschrieben hatte tauchte Mint wieder auf und startet wieder normal.

Ein "Fehler" besteht aber weiterhin: Das Boot-Menü enthält noch Reste der vorherigen Konfiguration. Es sieht so aus (Memtest hab ich weggelassen):
  • Ubuntu
  • Erweiterte Optionen für Ubuntu
  • Mint
  • Erweiterte Optionen für Mint
  • Xubuntu
  • Mint KDE
  • Windows
  • Erweiterte Optionen für Xubuntu
  • Erweiterte Optionen für Mint KDE
Der rot markierte Teil ist mein altes Grub-Menü. Es dürfte aber nach der kompletten Neuinstallation gar nicht mehr da sein. Es sieht so aus als ob das "neue" Grub.Menü einfach oben drangesetzt wurde.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Grub komplett neu schreiben

Beitrag von rendegast » 17.09.2017 13:33:53

Du könntest in einer custom.cfg, unter Deaktivierung des os-prober,
die grub.cfg der anderen Systeme per
'source'
oder
'configfile'
einblenden.

Beide haben jedoch ihre Haken und Ösen bei solcher Zielsetzung.
Einerseits muß auf gegebenenfalls nötige richtige Setzung von Umgebungsvariablen geachtet werden,
insbesondere $root und $prefix.
Zum anderen sollten die grub in gewisser Weise harmonieren, da teilweise grub-binarys des Zielsystems unter dem grub des Boot-grub ausgeführt werden.
Lustig wird es auch, wenn vom grub-Menü des Zielsystems wieder auf das Menü des Ausgangssystems zurückgegegangen werden soll.

Zu dem Zeitpunkt existiert leider auch kein unterstützendes Logging, bei einem Fehler gibt es also nur try+error.



Früher war das so einfach per 'chainload' den (embedded-)grub des Zielsystems einfach komplett zu laden.
Wenn 'grub-install /dev/sdXY' wenigstens wieder mit leeren Blockdevices funktionieren würde!
Mit dem Installieren des stage1_5 in das Dateisystem von /boot soll es wohl noch funktionieren.
Das plumpe chainload-Laden eines boot.img/core.img hat bei mir nicht funktioniert, Ideen?
Zuletzt geändert von rendegast am 17.09.2017 13:46:59, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
smutbert
Moderator
Beiträge: 8318
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Grub komplett neu schreiben

Beitrag von smutbert » 17.09.2017 13:44:36

Woher die Überbleibsel kommen, kann man auf die Entfernung schlecht sagen - möglicherweise hat os-prober sie tatsächlich aus einer der alten grub.cfg übernommen.

Mit deiner Problembeschreibung lieferst du aber selbst die Erklärung für das von mir bevorzugte Vorgehen mit den symbolischen Links.
Ein weiterer Grund ist, dass es mit den automatisch erstellten Booteinträgen zB typischerweise so abläuft:
Angenommen man hat zwei Systeme (A und B) mit jeweils eigenem grub und gebootet wird mit dem grub von A. Macht man in B ein Kernelupdate, wird nur dessen grub.cfg neu geschrieben, aber der grub von A erhält erst einen Booteintrag für den neueren Kernel, wenn man dort ebenfalls update-grub ausführt, etwa mit Rahmen eines Kernelupdates oder manuell. Richtig lästig wird das Verhalten, wenn man in B den alten Kernel deinstallieren, weil es dann in A keinen funktionierenden Booteintrag für B mehr gibt.


Nun könnte man einfach selbst einen Booteintrag in A erstellen, der nicht direkt den Kernel von B startet sondern nur auf die grub.cfg von B verweist, aber dann hat man immer noch das Problem, dass sich die Grubs von A und B bei Updates von grub selbst um die "Pole-Position" im MBR streiten. Dagegen kann man zwar mit

Code: Alles auswählen

# dpkg-reconfigure -p low grub-pc
etwas unternehmen, indem man auf allen Systemen bis auf eines verhindert, dass grub in den MBR geschrieben wird, aber mir gefällt trotzdem die Variante mit den symbolischen Links besser.


Die symbolischen Links haben den Vorteil, dass sie immer auf den aktuellen und die mit .old hintendran auf den vorigen Kernel (samt initrd) zeigen und man so Booteinträge schreiben kann, die nicht mit update-grub aktualisiert bzw. neu geschrieben werden müssen sondern immer aktuell sind.
Man erspart sich also nicht nur das fehlerträchtige Erkennen der anderen Installationen mit os-prober und damit eventuell fehlende oder überflüssige Einträge sondern startet die Systeme, die über keinen eigenen grub verfügen (weil man ihn dort deinstalliert hat) automatisch mit dem aktuellen Kernel.

Auf Hardware die beim Booten gerne Probleme verursacht, habe ich das auch schon auf die Spitze getrieben, indem ich auf keinem der installierten Systeme grub installiert habe, sondern nur, zB von einem Livesystem aus, einen von den Systemen unabhängigen Grub auf einer eigenen Partition installiert und dessen Konfigurationsdatei selbst die nötigen Booteinträge geschrieben habe, die nur auf die Symlinks zu aktuellen Kernel+initrd des jeweiligen Systems verweisen.
Damit erspart man sich nicht nur das update-grub und bei grub-efi-... das ständige Neuschreiben der Booteinträge im nvram sondern auch ganz grundsätzlich die (automatische) Neuinstallation von grub bei Updates von grub.


@stage1, stage1_5, stage2
Soweit ich weiß kann oder konnte man bei grub-pc auch unter gewissen Umständen auf einen stage1_5 verzichten und grub-efi-... und weitere grub-Varianten wie grub-ieee1275 kommen ohnehin ohne stage1_5 aus - eventuell ein weiterer Grund weshalb man diesem stage keine eigene ganze Zahl gegönnt hat.

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Grub komplett neu schreiben

Beitrag von Richard » 18.09.2017 19:30:14

smutbert hat geschrieben: ↑ zum Beitrag ↑
17.09.2017 13:44:36
Woher die Überbleibsel kommen, kann man auf die Entfernung schlecht sagen - möglicherweise hat os-prober sie tatsächlich aus einer der alten grub.cfg übernommen.
Ich hab hier https://ubuntuforums.org/showthread.php?t=1664134 was gefunden wie man die Konfiguration des GC rückgängig macht. Da die alten Einträge bei mir auch die Namen enthalten die ich einst mal im GC eingestellt habe, könnte das der Grund sein. Ich werde hier nochmal die ganzen GC-Dateien löschen. Vielleicht auch mal das Skript os_prober deaktivieren (also Ausführungsrechte entfernen)? Das sollte, wenn alle verfügbaren Systeme schon im Grub bekannt sind keine Probleme machen, oder?

smutbert hat geschrieben: ↑ zum Beitrag ↑
17.09.2017 13:44:36
@stage1, stage1_5, stage2
Soweit ich weiß kann oder konnte man bei grub-pc auch unter gewissen Umständen auf einen stage1_5 verzichten und grub-efi-... und weitere grub-Varianten wie grub-ieee1275 kommen ohnehin ohne stage1_5 aus - eventuell ein weiterer Grund weshalb man diesem stage keine eigene ganze Zahl gegönnt hat.
Meinst du mit grub-pc Grub Legacy?

Es klingt so als hätte Grub2 zu Beginn keine Stage 1.5 gehabt. Da stellt sich aber die Frage, wie auf den Stage 2 (der ja auf der Systempartition liegt, also meist einer ext2/3/4-Partition) zugreifen konnte. In den 446 Bytes des MBR in dem Stage 1 liegt wird ja wohl kaum genug Platz für die Module für die Ext-Partition(en) gewesen sein. Daher stellt sich die Frage wie das geht ohne Stage 1.5. In Foren habe ich auch gelesen, dass bei den Users nichts im verborgenen Bereich liegt und Stage 1 würde direkt auf Stage 2 zugreifen. Rückfragen nach dieser Unlogik blieben aber ohne (schlüssige) Antwort.
______

Ohne den GC fehlt mir natürlich eine brauchbare Möglichkeit die Reihenfolge im Menü zu ändern. Es geht wohl über die Reihenfolge der Skripte in /etc/grub.d. Das Linux in dem Grub liegt wird über die 10_linux gesteuert, andere OS vermutlich über die 30_os-prober. Das heißt aber, dass ich den Eintrag für das aktuelle OS inkl. dem Punkt Erweiterte Optionen nur "im Block" verschieben kann. Genauso alles was über 30_os-prober gefunden wurde. Wenn dort
  • Linux Mint
  • Erweiterte Optionen für Linux Mint
  • Windows
gefunden wurde, kann ich nur diesen ganzen Block vor das System mit Grub verschieben.

So märchenhaft schön wie die Ausgabe z. B. von 10_linux hier https://wiki.ubuntuusers.de/GRUB_2/Konf ... t-10-linux dargestellt wird ist das Skript nicht. Da steig ich absolut nicht durch.

Ich habe schon versucht einfach den Menueintrag aus der /boot/grub/grub.cfg in 09_custom zu kopieren, aber update-grub bringt eine Fehlermeldung von wegen Sytax Error.

Benutzeravatar
smutbert
Moderator
Beiträge: 8318
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Grub komplett neu schreiben

Beitrag von smutbert » 18.09.2017 21:38:36

Richard hat geschrieben: ↑ zum Beitrag ↑
18.09.2017 19:30:14
[…]Das sollte, wenn alle verfügbaren Systeme schon im Grub bekannt sind keine Probleme machen, oder?
Grundsätzlich nicht, aber ohne os-prober werden nach dem nächsten update-grub auch die die automatisch erstellten Booteinträge für andere Systeme fehlen.
Richard hat geschrieben: ↑ zum Beitrag ↑
18.09.2017 19:30:14
[…]
Meinst du mit grub-pc Grub Legacy?
Nein, grub-legacy ist grub Version 1.

grub Version 2 dagegen existiert für unterschiedliche Architekturen bzw. BIOSse und Firmware-Varianten - gemeint ist gleich das erste
- Debiangrub-pc für das althergebrachte Booten auf BIOS Systemen und im Legacy-Modus auf UEFI-Hardware
- Debiangrub-efi-amd64 und Debiangrub-efi-ia32 für das Booten auf Systemen mit 32 Bit und 64 Bit UEFI - unabhängig davon ob die CPU nun über die amd64-Erweiterung verfügt oder nicht und auch für ältere EFI-Systeme, zB die ersten Intel Macs
- Debiangrub-ieee1275 für Systeme mit Open Firmware (zB die späteren "New World" PowerPC-Macs)
- grub-uboot für arm-Rechner bei dem sich grub von uboot laden lässt
....
Richard hat geschrieben: ↑ zum Beitrag ↑
18.09.2017 19:30:14
[…]
Es klingt so als hätte Grub2 zu Beginn keine Stage 1.5 gehabt. Da stellt sich aber die Frage, wie auf den Stage 2 (der ja auf der Systempartition liegt, also meist einer ext2/3/4-Partition) zugreifen konnte. […] Daher stellt sich die Frage wie das geht ohne Stage 1.5.
[…]
Ich glaube (das heißt wissen tu ich gar nix), dass grub zumindest früher unter widrigen Umständen (kein Platz nach dem MBR frei, blödes Dateisystem,...) stage 2 auch mittels Blocklisten laden konnte - ähnlich wie lilo Linux geladen hat. Jetzt macht grub das aber glaube ich gar nicht mehr oder nur mehr unter Protest...
Es wäre trotzdem imho insofern unter normalen Umständen kein Problem als man bei einem Update grub ohnehin neu installieren muss und ohne Update ändert sich nichts an der Position von stage2.

Übrigens verwendet grub meines Wissens für ext2, ext3 und ext4 denselben ext2-Dateisystemtreiber - das journal kann ihm beim Lesen ja egal sein.
Richard hat geschrieben: ↑ zum Beitrag ↑
18.09.2017 19:30:14
[…]
Ohne den GC fehlt mir natürlich eine brauchbare Möglichkeit die Reihenfolge im Menü zu ändern.[…]
Ja, ich wüsste auch nicht wie man die Reihenfolge anders als blockweise ändern könnte ohne so invasiv einzugreifen wie der grub-costumizer es tut.

(Da könnte man sich aber mit meiner Methode behelfen grub unabhängig von allen installierten Distributionen zu pflegen. Man installiert also von irgendeinem System aus grub auf eine eigens dafür eingerichtete Partition - auf uefi-Systemen kann man die EFI System Partition dazu verwenden - und schreibt selbst die grub.cfg.
Auf allen installierten Distributionen deinstalliert man grub oder installiert ihn gleich von vornherein gar nicht und erhält so ein Bootmenü nach den eigenen Vorstellungen - wenn man will inklusive grub-theme oder ähnlichem. Das Vorgehen wäre im Grunde dasselbe wie in diesem Wiki-Artikel: https://wiki.debianforum.de/Ein_Notfall ... Bootloader nur dass man eben nur eine grub-Variante benötigt und ich bis jetzt noch daran gescheitert bin die gewünschten Sprach- und Tastatureinstellungen bereits in grub zu laden.
Das ganze hat aber natürlich Vor- und Nachteile.)
Richard hat geschrieben: ↑ zum Beitrag ↑
18.09.2017 19:30:14
[…]
Ich habe schon versucht einfach den Menueintrag aus der /boot/grub/grub.cfg in 09_custom zu kopieren, aber update-grub bringt eine Fehlermeldung von wegen Sytax Error.
Dass es nicht genügt nur den Booteintrag in eine Datei zu kopieren, hast du bedacht?
in grub.d werden ausführbare Skripte erwartet, die dann entsprechende ein Stückchen grub.cfg auf der Standardausgabe ausgeben. Wie man das machen kann sieht man zB in der dafür vorbereiteten »/etc/grub.d/40_custom« - wichtig ist es die ersten beiden Zeilen beizubehalten und die eigenen Menüeinträge hinten dranzuhängen:

Code: Alles auswählen

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

# hier folgen die eigenen Menüeinträge
#....

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Grub komplett neu schreiben

Beitrag von rendegast » 18.09.2017 23:57:14

Ich bevorzuge statt der 40_custom die Pflege einer /boot/grub/custom.cfg,
selber Syntax wie die grub.cfg.

Weiterhin referenziere ich per Link
/etc/grub.d/09_custom -> 41_custom,
dadurch tauchen meine Menüeinträge aus custom.cfg vor denen aus zBsp. 10_linux auf.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten