ubuntuusers.de

Universal stand-alone grub für BIOS und EFI auf USB flashkey und internen HDD/SSD

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Universal_stand-alone_grub_für_BIOS_und_EFI_auf_USB_flashkey_und_internen_HDD_und_SSD.

black_tencate

(Themenstarter)
Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11412

UlfZibis schrieb:

... Im Kapitel "Verwendung im PC als stand-alone grub" steht:

  1. Die oben beschriebene Installation auf einem flashkey kann in gleicher Weise auch auf einer HDD/SSD zum internen Gebrauch auf einem EFI-System durchgeführt werden.

  2. Zunächst wird für ein wie oben beschrieben installierten stand-alone grub ein neuer Booteintrag im nvram angelegt

Hätte ich genau das gemacht, hätte ich mir die bestehende Windows-Installation ziemlich sicher zerschossen, bzw. mir kamen bzgl. dem Anlegen der "unformatierten Partition" und der "grub-lesbar Partition" erhebliche Zweifel, weshalb ich nachfragen musste.

deine ständigen Behauptungen (hätte ich mir ... ziemlich sicher zerschossen) sind einfach nur lästig; ich beweise dir das Gegenteil

  • [sudo] Passwort für ich: 
    Modell: ATA VBOX HARDDISK (scsi)
    Festplatte  /dev/sda:  53,7GB
    Sektorgröße (logisch/physisch): 512B/512B
    Partitionstabelle: gpt
    Disk-Flags: 
    
    Nummer  Anfang  Ende    Größe   Dateisystem  Name                          Flags
     5      1049kB  2097kB  1049kB                                             bios_grub
     1      2097kB  107MB   105MB   fat32        EFI system partition          msftdata
     2      107MB   124MB   16,8MB               Microsoft reserved partition  msftres
     3      124MB   42,6GB  42,4GB  ntfs         Basic data partition          msftdata
     7      42,6GB  53,0GB  10,5GB  ext4
     6      53,0GB  53,1GB  106MB   fat32                                      boot, esp
     4      53,1GB  53,7GB  540MB   ntfs                                       versteckt, diag
    
    
    ich@U-32-VB:~$ 

diese Partition #5 wurde als erstes nach einer Windowsinstallation angelegt, sie ist zwar klomplett nutzlos, ein Windows auf GPT kann nie und nimmer im CSM Modus booten, wozu um alles in der Welt sollte man also auf solch einer Platte (!mit windows/GPT!) eine grub installieren wollen, der dann im (und nur im) CSM Modus bootet. Ausschließlich zum Booten im CSM Modus wird die bios_grub Partition (auf GPT) gebraucht!

Ich meinte und schrieb ursprünglich "Vorzüge ggü. MultiSystem". Die kann ich im Artikel nicht finden ... vermutlich gibt's keine.

Es ist in diesem Artikel nicht das Thema, irgenwelche Vorzüge gegenüber anderen Methoden herauszustellen. (aber wenn du schon willst, grub ist in jeder *.iso vorhanden, läßt sich mit einem simplen Befehl auf einen Datenträger installieren, und das auf den unterschiedlichsten Dateisystemen fat 12/16/32, ntfs, ext2/3/4… mehr habe ich nicht ausprobiert)

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3425

Wohnort: Köln

black_tencate schrieb:

wozu um alles in der Welt sollte man also auf solch einer Platte (!mit windows/GPT!) eine grub installieren wollen, der dann im (und nur im) CSM Modus bootet.

Vielleicht, weil man ein nicht EFI-fähiges OS booten will. Dass dann das installierte Windows nicht starten kann ist schon klar.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3425

Wohnort: Köln

UlfZibis schrieb:

  1. die getrennten Partitionen für die grub Dateien von EFI und CSM halte ich für verständnisförderlich (das war zu Beginn auch für mich nützlich), später dann habe ich das eben auch in eine Partition "gequetscht"

Es sind aber immer noch 2 Partitionen drauf, <esp> und grub-lesbar bzw. grubcfg-file. Ich fragte, ob man die nicht auch zusammenfassen kann, da es ja offensichtlich möglich sein muss, wie man bei MultiSystem sieht.

Ich habe nun herausgefunden, wie es geht. Man legt in der <esp> ein Verzeichnis boot-menu an für die gemeinsame grub.cfg und in <esp>/boot/grub-xyz/grub.cfg ändert man den 2. Eintrag in:

menuentry "Boot-Menü" {
	set root=(hd0,1)
	configfile /boot-menu/grub.cfg
}

Damit wird die grub-lesbar- bzw. grubcfg-file-Partition überflüssig.

Auf GPT müsste der Eintrag gemäß der Tabelle im Artikel allerdings so lauten:

menuentry "Boot-Menü" {
	set root=(hd0,2)
	configfile /boot-menu/grub.cfg
}

Also auch hier gibt's eine Abweichung von "in gleicher Weise".

Evtl. ist set root=(...) aber auch komplett überflüssig, da wir ja schon auf der EFI-FAT16-Partition "zuhause" sind.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3425

Wohnort: Köln

black_tencate schrieb:

deine ständigen Behauptungen (hätte ich mir ... ziemlich sicher zerschossen) sind einfach nur lästig; ich beweise dir das Gegenteil

  • [sudo] Passwort für ich: 
    Modell: ATA VBOX HARDDISK (scsi)
    Festplatte  /dev/sda:  53,7GB
    Sektorgröße (logisch/physisch): 512B/512B
    Partitionstabelle: gpt
    Disk-Flags: 
    
    Nummer  Anfang  Ende    Größe   Dateisystem  Name                          Flags
     5      1049kB  2097kB  1049kB                                             bios_grub
     1      2097kB  107MB   105MB   fat32        EFI system partition          msftdata
     2      107MB   124MB   16,8MB               Microsoft reserved partition  msftres
     3      124MB   42,6GB  42,4GB  ntfs         Basic data partition          msftdata
     7      42,6GB  53,0GB  10,5GB  ext4
     6      53,0GB  53,1GB  106MB   fat32                                      boot, esp
     4      53,1GB  53,7GB  540MB   ntfs                                       versteckt, diag
    
    
    ich@U-32-VB:~$ 

diese Partition #5 wurde als erstes nach einer Windowsinstallation angelegt,

Interessant! Und da soll man von selbst drauf kommen, dass da zw. 0 und 2097kB noch Platz für eine bios_grub-Partition sein könnte und dass da nix anderes relevantes drin ist, was dann kaputt ginge. Und das ist wohl auch nicht immer so, dass da Platz ist, denn bei mir z.B. fängt sie EFI-Partition schon bei 1049kB an, auf anderen Systemen vielleicht schon bei 1kB. Und dann ist da noch die Nummerierung in Deiner Partitionstabelle völlig anders, als in der Tabelle im Artikel.

Kannst Du das nicht verstehen, dass das alles auch für nicht ganz unerfahrene Anwender nicht gerade selbsterklärend ist, wenn im Kapitel "Verwendung im PC als stand-alone grub" nur "in gleicher Weise" und "... wird für ein wie oben beschrieben installiertes stand-alone grub ..." steht?

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3425

Wohnort: Köln

Unter Hybrid-MBR steht:

Eine entsprechende Befehlsfolge kann man sich hier ▶

Ungültiges Makro

Dieses Makro ist nicht verfügbar

⮷ ansehen

Hm, das mit dem "Ansehen" funktioniert hier nicht so wirklich. Bei Klick auf den Link kommt nur ein Download-Angebot. Könntest Du die Datei vielleicht als Textdatei kennzeichnen, z.B. durch Endung .txt, damit ein sofortiges "Ansehen" möglich wird?

black_tencate

(Themenstarter)
Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11412

UlfZibis schrieb:

... Ich habe nun herausgefunden, wie es geht. Man ...

und black_tencate schrieb:

...später dann habe ich das eben auch in eine Partition "gequetscht"

(das war am 20. um 15:05) sähe dann so aus → EWMS-Pico.txt

UlfZibis schrieb:

... Interessant! Und da soll man von selbst drauf kommen, dass da zw. 0 und 2097kB noch Platz für eine bios_grub-Partition sein könnte und dass da nix anderes relevantes drin ist, was dann kaputt ginge.

tja, da hatte ich wohl zu viel Mitdenken erwartet, den Platz mußt du schon durch Verschieben der Windowspartition(en) herstellen, ist ganz einfach, aber nicht ohne Risiko.

EWMS-Pico.img.txt (2.3 KiB)
Download EWMS-Pico.img.txt

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9986

Wohnort: Münster

UlfZibis schrieb:

[…] Kannst Du das nicht verstehen, dass das alles auch für nicht ganz unerfahrene Anwender nicht gerade selbsterklärend ist, […]

Für Anfänger und auch für Leute mit geringen Vorkenntnissen ist dieser Artikel nicht geeignet. Er wendet sich gemäß Warnhinweis ausdrücklich an „fortgeschrittene Anwender“ und zählt auch Partitionierung von Datenträgern zu den erforderlichen Vorkenntnissen.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3425

Wohnort: Köln

Die letzte Version von Ubuntu-GRUB, mit der noch 32-Bit Linux gestartet werden kann (sie muss mittels einem 20.04-Live-Medium installiert werden): https://github.com/alkisg/liveusb/issues/3

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3425

Wohnort: Köln

Als Ergebnis dieser Überlegungen habe ich für die EWMS mal alles überflüssige rausgeschmissen, und das gewünschte ergänzt. Dabei ist noch anzumerken, dass das Anzeigen eines Hintergrundbilds abhängig von insmod gfxterm und terminal_output gfxterm ist, und deshalb background_image IMAGE mit in die if ... fi Bedingung muss.

/boot-bios/grub/grub.cfg :

# Verschönerungen (volle Unicode-Darstellung, deutsche Texte, Hintergrundbild):
if loadfont /boot-efi/grub/fonts/unicode.pf2 ; then
  set gfxmode=auto
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod vbe
    insmod vga
  fi
  insmod gfxterm
  terminal_output gfxterm
  set locale_dir=$prefix/locale
  set lang=de_DE
  insmod gettext

  insmod png
  background_image /boot-bios/grub/pict1.png
fi

set color_normal=light-gray/black
set menu_color_normal=yellow/black
set menu_color_highlight=red/black

timeout_style=menu
timeout=1

set default=1

menuentry "legacy-PC"{
	set root=(hd0,1)
}
menuentry "Boot-Menü" {
	search --no-floppy --fs-uuid --set=root 682A-DD73
	configfile /boot-menu/grub.cfg
}

/boot-efi/grub/grub.cfg :

# Verschönerungen (volle Unicode-Darstellung, deutsche Texte, Hintergrundbild):
if loadfont /boot-efi/grub/fonts/unicode.pf2 ; then
  set gfxmode=auto
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod vbe
    insmod vga
  fi
  insmod gfxterm
  terminal_output gfxterm
  set locale_dir=$prefix/locale
  set lang=de_DE
  insmod gettext

  insmod png
  background_image /boot-efi/grub/pict3.png
fi

set color_normal=light-gray/black
set menu_color_normal=yellow/black
set menu_color_highlight=red/black

timeout_style=menu
timeout=1

set default=1

menuentry "EFI-PC"{
	set root=(hd0,1)
}
menuentry "Boot-Menü" {
	search --no-floppy --fs-uuid --set=root 682A-DD73
	configfile /boot-menu/grub.cfg
}

/boot-menu/grub.cfg :

set color_normal=light-gray/black
set menu_color_normal=white/black
set menu_color_highlight=red/black

set default=1

menuentry "Stop"{
  halt
}
submenu ".iso-files"{
  menuentry "Beispiele, anpassen" {
    set root=(hd0,2)
  }
  menuentry "ubuntu-18.04.1-desktop-amd64" {
    set root=(hd0,3)
    loopback loop /ubuntu-18.04.1-desktop-amd64.iso
    linux (loop)/casper/vmlinuz boot=casper nomodeset ramdisk_size=2097152 root=/dev/ram rw locale=de_DE bootkbd=de console-setup/layoutcode=de iso-scan/filename=/ubuntu-18.04.1-desktop-amd64.iso
    initrd (loop)/casper/initrd.lz 
  }
  menuentry "ubuntu-budgie-18.10-desktop-amd64 live " {
    set root=(hd0,3)
    loopback loop /ubuntu-budgie-18.10-desktop-amd64.iso
    linux (loop)/casper/vmlinuz boot=casper nomodeset ramdisk_size=2097152 root=/dev/ram rw locale=de_DE bootkbd=de console-setup/layoutcode=de iso-scan/filename=/ubuntu-budgie-18.10-desktop-amd64.iso
    initrd (loop)/casper/initrd 
  }
}
submenu "zu entpackende" {
  menuentry "Beispiele, anpassen" {
    set root=(hd0,2)
  }
  menuentry "tails live" {
    set root=(hd0,4)
    linux /live/vmlinuz boot=live config live-media=removable nopersistence noprompt timezone=Etc/UTC block.events_dfl_poll_msecs=1000 splash noautologin module=Tails slab_nomerge slub_debug=FZP mce=0 vsyscall=none page_poison=1 union=aufs quiet       
    initrd /live/initrd.img 
  }

  menuentry "Windows 10 17763 (nur legacy)" {
    set root=(hd0,4)
    chainloader +1
}
  menuentry "AOMEI PartMan (nur legacy)" {
    set root=(hd0,4)
    chainloader +1
  }
}
submenu "Feste Installationen" {
  menuentry "Windows 8.1 auf Festplatte" {
    insmod part_gpt
    ## UUID von EFI-Partition /dev/sda1 :
    search --fs-uuid --set=root BC5C-B7DD
    chainloader /efi/microsoft/boot/bootmgfw.efi
  }
  menuentry "Menü von Ubuntu-32 16.04 auf USB-Stick" {
    insmod part_msdos
    insmod ext2
    ## Ubuntu_16.04 auf dem USB-Stick /dev/sdc5 :
    search --no-floppy --fs-uuid --set=root 12242877-0cc0-4f7b-afb0-ffadeca726a0
    configfile /boot/grub/grub.cfg
  }
}

Die Abfrage if [ x$feature_all_video_module = xy ]; habe ich aus einer normalen Ubuntu-Installation abgeschrieben. Wie weit sie nötig oder nützlich ist, habe ich nicht überprüft. Zumindest scheint sie nicht zu schaden und man kann sie evtl. auch folgenlos weglassen.

black_tencate

(Themenstarter)
Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11412

UlfZibis schrieb:

...habe ich für die EWMS mal alles überflüssige rausgeschmissen

nein, haste nicht! Auf 's notwendigste begrenzt sähe eine entsprechende grub.cfg (für das EWMS.img! ohne die für Auflösung, Farbe und Hintergrundbild obsoleten sonstigen Möglichkeiten von grub) so aus:

  loadfont /boot-efi/grub/fonts/unicode.pf2
  set gfxmode="1280x1024x32"
  insmod efi_gop
  terminal_output gfxterm
  insmod png
  background_image /boot-efi/grub/pict3.png

 set color_normal=light-gray/black
 set menu_color_normal=yellow/black
 set menu_color_highlight=red/black

}
menuentry "cfg-file" {
        set root=(hd0,2)
        configfile /grub.cfg
}

...Dabei ist noch anzumerken, dass das Anzeigen eines Hintergrundbilds abhängig von insmod gfxterm und [xxx] ist, und deshalb background_image IMAGE mit in die if ... fi Bedingung muss.

  1. kein einziger set… oder insmod… ist vom vorherigen loadfont abhängig, die ganze if...fi Schleife ist obsolet.

  2. weder ist insmod gfxterm nötig, noch müßte gar background_image in die (nicht erforderliche) Schleife einbezogen werden.

  3. (Anmerkung: ein set gfxmode=auto liefert nicht die möglich Auflösung von 1280x1024 als die – hier – für efi-gop.mod höchstmögliche)

/boot-bios/grub/grub.cfg :

...
	search --no-floppy --fs-uuid --set=root 682A-DD73  # falsch!
	configfile /boot-menu/grub.cfg                     # falsch! 
}

/boot-efi/grub/grub.cfg :

...
	search --no-floppy --fs-uuid --set=root 682A-DD73  # falsch!
	configfile /boot-menu/grub.cfg                     # falsch! 
}

/boot-menu/grub.cfg :

                          # falsch! 
[...]

...habe ich nicht überprüft.

da ist wohl eher auch sonst nichts selbst geprüft worden.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3425

Wohnort: Köln

black_tencate schrieb:

nein, haste nicht! Auf 's notwendigste begrenzt sähe eine entsprechende grub.cfg (für das EWMS.img! ohne die für Auflösung, Farbe und Hintergrundbild obsoleten sonstigen Möglichkeiten von grub) so aus:

Na prima, wenn es noch einfacher/sparsamer geht. Ich hab' ja selbst gesagt, dass im Artikel viel überflüssiges und verwirrendes drin steht. Allerdings halte ich das (Um-)Definieren von Farben per set color eher für optional, als ein deutsches Erscheinungsbild mittels set locale.

...Dabei ist noch anzumerken, dass das Anzeigen eines Hintergrundbilds abhängig von insmod gfxterm und [xxx] ist, und deshalb background_image IMAGE mit in die if ... fi Bedingung muss.

  1. kein einziger set… oder insmod… ist vom vorherigen loadfont abhängig, die ganze if...fi Schleife ist obsolet.

Genau. Wenn sie aber in der if-Schleife sind, sind sie es faktisch.

  1. weder ist insmod gfxterm nötig,

Ich meinte gfxmode, sorry.

noch müßte gar background_image in die (nicht erforderliche) Schleife einbezogen werden.

Ich hab's ja ausprobiert. Ohne erfolgreiches loadfond und damit ohne ausgeführtes gfxmode funktioniert background_image nicht.

  1. (Anmerkung: ein set gfxmode=auto liefert nicht die möglich Auflösung von 1280x1024 als die – hier – für efi-gop.mod höchstmögliche)

Das hängt sicher von der Hardware ab. auto funktioniert bei mir auf allen Rechnern gut, und es wird schon einen Grund haben, warum auch Ubuntu diesen Wert automatisch per grub-mkconfig generiert.

/boot-bios/grub/grub.cfg :

...
	search --no-floppy --fs-uuid --set=root 682A-DD73  # falsch!
	configfile /boot-menu/grub.cfg                     # falsch! 
}

/boot-efi/grub/grub.cfg :

...
	search --no-floppy --fs-uuid --set=root 682A-DD73  # falsch!
	configfile /boot-menu/grub.cfg                     # falsch! 
}

/boot-menu/grub.cfg :

                          # falsch! 
[...]

Und ansonsten hab' ich jetzt keine Lust mehr auf das konfrontative HickHack und schon gar nicht auf solche inhaltsfreie Kritik.

Und dann bleibt der Artikel hat so wie er ist. Ich hab' ja jetzt verstanden, was ich getrost überlesen und weglassen kann und was fehlt.

black_tencate

(Themenstarter)
Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11412

ich erkläre gerne mal, warum EWMS ist, wie es ist:

  1. die einzige "Aufgabe" der beiden grub.cfg (in boot-bios bzw. boot-efi) besteht darin, zu zeigen, in welchem Modus gerade gebootet wird und dem Laden desjenigen configfiles, welches für ein grub Menü steht mit Einträgen zum Booten von O/Sen oder iso-files etc.

    • daher timeout=0 und set default=1

  2. zum Sichtbarmachen des jeweilige Bootmodus habe ich je ein Hintergrundbild verwendet, welches bei Aufruf von configfile /… stehen bleibt.

  3. für ein Hintergrundbild wird terminal_output gfxterm benötigt, und das Modul png/jpeg

    • gfxterm wiederum setzt zur Darstellung der Menüumrandung unicode.pf2 voraus, also → loadfont …

    • für eine brauchbare Auflösung werden die Treiber vbe/efi_gop benötigt, zusätzlich muß man mit set gfxmode=… eine der verfügbaren Auflösungen setzen

  4. alle og. Anweisungen stehen einfach in der grub.cfg, ohne daß eine Abhängigkeitsschleife notwendig ist. (Daß esin der EWMS anders steht liegt schlicht und einfach an "c&p")

In all meinen grub.cfg habe ich noch nie eine Zeile mit speziellen DE Zeichen benötigt, folglich habe ich dafür auch nichts vorgesehen. (viel wichtiger wäre mir –leider aber nicht verfügbar – ein deutsches kblayout angesichts der Häufigkeit im Forum, erklären zu müssen, wie man denn nun auf der grub Konsole die dort für die Befehle notwendigen Zeichen "(,),=,/,-" erzeugt!)

Wenn hier von Änderungen an der EWMS die Rede ist, diese aber teilweise falsch sind (wie die markierten), dann ist klar, daß ich das nicht stehen lassen kann. In der EWMS gelten

...
	search --fs-uuid --set=root 063B94685E1DFBDF
	configfile /grub.cfg

...

Ja, man kann auch alles in eine einzige Partition packen, hat aber den Nachteil – solange die mit esp markiert ist – daß man zwecks Einfügen/Ändern eines Menüeintrags diese (Partiton) mounten muß und darin nur mit RootRechten arbeiten kann.

Und ja, vorrangig wenn es sich nicht um ein externes device handelt (auch sonst funktioniert das), kann die esp Markierung entfallen und dann mit einem passenden NVRAM Eintrag gebootet werden. In einer solchen FAT Partition kann man dann auch ohne RootRechte "arbeiten".

black_tencate

(Themenstarter)
Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11412

Hej,

mit einem Fossa (und neuer) zum Erzeugen eines stand-alone grub (ab (?) grub package 2.04-1ubuntu26) erscheint im EFI Modus kurz diese Meldung

error: file `/boot´ not found.
error: no such device: /.disk/info.
error: no such device: /.disk/mini-info.

dann aber läuft der Ladevorgang weiter, wie erwartet.

Irritieren
file → /boot

aber

device → /.disk…

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5149

black_tencate schrieb:

... (viel wichtiger wäre mir –leider aber nicht verfügbar – ein deutsches kblayout angesichts der Häufigkeit im Forum, erklären zu müssen, wie man denn nun auf der grub Konsole die dort für die Befehle notwendigen Zeichen "(,),=,/,-" erzeugt!)

Ich habe es selbst noch nicht getestet oder es ist zu lange her, dass ich mich erinnern kann, aber hast Du das schon mal probiert:

https://wiki.archlinux.org/title/GRUB/Tips_and_tricks#Manual_configuration_of_core_image_for_early_boot

bzw. auch

https://askubuntu.com/questions/751259/how-to-change-grub-command-line-grub-shell-keyboard-layout

Oder meintest Du mit "leider nicht verfügbar" im Sinne von per einfacher Option in der grub.cfg?

LG, Newubunti

black_tencate

(Themenstarter)
Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11412

hej Newubunti,

Newubunti schrieb:

... Oder meintest Du mit "leider nicht verfügbar" im Sinne von per einfacher Option in der grub.cfg?

genau, so ein insmod kbd_DE oder was auch immer.

Aber, laß gut sein, das war ja doch nur ein Konter auf die nervige "da muß aber unbedingt ein set lang=de_DE in die grub.cfg von EWMS, damit man auch deutsche Umlaute verwenden kann". (wer braucht die schon im Gegensatz zu Tastaturlayout auf der grub Konsole!)

Gruß black tencate