Grub2Win - ISO booten von NTFS, ExtFAT & FAT32

Angelchc

Cadet 3rd Year
Registriert
Okt. 2021
Beiträge
43
Hallo zusammen,

Ich möchte mit "Grub2Win" ISO Dateien starten.
Der "Grub2Win" ist installiert und startet mein Windows 10 und Android OS perfekt.

Mein Skript, das leider nicht funktioniert:
Code:
set isofile=/iso/test.iso
loopback loop (hd1,2)$isofile
kernel=/iso/kernel64
initrd=/iso/initrd64.img
set lang=de_CH

Die Kernel & Initrd Datei habe ich von der ISO "Remix OS".
(32Bit und 64Bit Version)

Die ISO Dateien sind im Ordner "iso", auf der 2. Festplatte auf Partition 2 im NTFS Format.
Ich habe es auch auf der ersten Festplatte mit Partition 4 ausprobiert als FAT32.
Nur kommt immer eine Fehlermeldung nach dem Anwählen zu den ISO Datei zum Starten im Grub2 Menü.
"Invalid sektors size 65535" oder "Unbekanntes Dateisystem", wenn ich es auf die 1. HD mache.

Was mache ich falsch ?

Und wo bekomme ich auch die richtigen Kernel & InitRD Dateien her für Linux und WinPE ISO Dateien zu booten?

Danke!

Gruss

Angel
 
Zuletzt bearbeitet:
Vielleicht übersehe ich was, aber hast du dir schon mal Ventoy als mögliche Alternative angeschaut?
 
  • Gefällt mir
Reaktionen: Kuristina, Snoop7676, 0x8100 und eine weitere Person
Angelchc schrieb:
Und wo bekomme ich auch die richtigen Kernel & InitRD Dateien her für Linux und WinPE ISO Dateien zu booten?
Aus dem jeweiligen ISO-Image.
Angelchc schrieb:
Da ist was falsch an meinem Skript.
In der Tat. Der Pfad zum ISO muss in Anführungszeichen: isofile="/Pfad/zum/Iso.img"
Außerdem muss in den Zeilen kernel bzw. linux, wenn du ein Linux booten willst das Loop-Device mittels (loop) vor den Pfad gesetzt werden.
 
  • Gefällt mir
Reaktionen: Angelchc
Ich danke Euch.

Jetzt sieht mein Skript so aus:
Code:
set isofile="/iso/test.iso"
set root=(loop)/iso
loopback loop (hd1,2)$isofile
kernel /iso/kernel64
initrd /iso/initrd64.img
set lang=de_CH

Nur kommen jetzt 3 Meldungen:
"Invalid sector size 65535"
"Sie müssen zuerst den Kernel laden"
"Befehl "Kernel" konnte nicht gefunden werden"

Ich habe nun gerade gesehen, dass es GPT ist.
Spielt das eine Rolle?

Macrium Reflect Home - v8.0.7175  [UEFI].png


Auch werden die Meldungen das erste Mal auf Englisch angezeigt und beim 2. Versuch auf Deutsch.
 
Das stimmt leider immer noch so einiges nicht.

Die Reihenfolge ist wichtig. Du kannst nicht zuerst den root auf (loop) setzen, wenn du (loop) noch nicht definiert hast. Zudem bezweifle ich, dass es in dem ISO-Image das Verzeichnis /iso überhaupt gibt. Zum Verständnis: Du musst die Pfade innerhalb des Images angeben, nicht wo das Image liegt. Das hast du bereits mit $isofile festgelegt. Dort, und nur dort wird auf deine ISO-Datei verwiesen.

Ungetestet:
Code:
set lang=de_CH
set isofile="(hd1,2)/iso/test.iso"
loopback loop $isofile
set root=(loop)
kernel /kernel64
initrd /initrd64.img

Sollte das immer noch nicht klappen, ist es eine gute Idee, die Befehle einzeln manuell in die Grub-Commandline einzugeben, um zu schauen, wo der Fehler auftritt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Angelchc
@Evil E-Lex

Es geht immer noch nicht.
Nur habe ich da eine Vermutung.
Zuerst musste ich das "Grub2Win" neu aufsetzen,
weil im Programm das Feld "Grub locale language" einfach immer leer war.
Wurde einfach nicht abgespeichert.
Jetzt habe ich mir die EFI Partition angeschaut.
Werde Dein Tipp befolgen, mit der Commandline einzeln zu versuchen.
Oder muss ich die EFI Partition mal löschen und neu erstellen mit einem Partition-Manager?
Mache morgen dann weiter.

@Kuristina
Nein, bis jetzt nervst Du noch nicht 😡😇
Das Thema ist nun mal Festplatte und nicht ein USB-Stick 😉
Sonst könnte ich ja auch sagen, dass es noch andere Tools wie "Ventoy" gibt.
So wie etwa das "Easy2Boot", das noch mehr kann und besser ist.
Da ist auch noch das "Ventoy" dabei.

Nur eben, das ist hier jetzt nicht das Thema.
 
Angelchc schrieb:
Nur habe ich da eine Vermutung.
Zuerst musste ich das "Grub2Win" neu aufsetzen,
weil im Programm das Feld "Grub locale language" einfach immer leer war.
Vollkommen irrelevant für das Problem hier. Ob die Anzeigesprache in Grub nun Englisch, Deutsch oder Spanisch ist, spielt für dein Problem schlicht keine Rolle.
Angelchc schrieb:
Oder muss ich die EFI Partition mal löschen und neu erstellen mit einem Partition-Manager?
Nein! Solange Grub beim Booten angezeigt wird und er die konfigurierten Betriebssysteme startet, ist der richtig installiert.

Du solltest mal einen Schritt zurück gehen und versuchen dein Problem zu verstehen, das hat sich seit deinem Startpost nicht geändert. Die Pfade zu deinem ISO-Image und/oder zu initrd und kernel sind falsch. Welches ISO willst du überhaupt starten?

Und nebenbei: Ich würde den sagenhaft schlecht dokumentierten Softwarehaufen grub2win entsorgen und mir das Original auf eine separate Bootpartition installieren.

Noch ein Edit:
grub2win hat ne Hilfe, dort wird genau erklärt, wie man einen Booteintrag für ISO-Images anlegt. Da ranzukommen ist ohne Installation schon eine Kunst für sich. Hab den Inhalt mal in einen Spoiler gepackt, weil recht lang.
Code:
Booting ISO Files

These are the steps required to set up a Grub2Win menu entry for booting an ISO file. The file can be on a hard disk, CD, DVD or USB flash drive.

First add a new menu entry by clicking "Add A New Entry" on the Managing the boot menu  screen.
When the orange Edit screen appears, select an OS Type of isoboot.

You will now see the Entering custom code screen. You can click either the Select ISO File or Load Sample Code button to get started.


#
#            This is sample code for booting from an iso file
#            via the Grub2Win g2wisoboot function
#
#
      set isopath='/** your iso file path **'               
      set kernelpath='/** kernel path **'               
      set initrdpath='/** initrd path **'                       
      set bootparms='** your linux bootparms **'       
#
      g2wisoboot                                                    # Run the g2wisoboot function
# 


If you click the Select ISO File button. Grub2Win will fill in the path to the ISO file you select and set the isopath variable for you. Grub will search all available drives at boot time to locate this file.

You will need to edit the code to set four variables: isopath, kernelpath, initrdpath and bootparms. Click the "Edit Custom Code" button to open notepad and edit the code.

Note: Variable values should be enclosed in single quotes. You will receive a warning if the quotes are missing.
See the example below.

Set the kernelpath and initrdpath variables to the location within the iso file where the kernel and initrd are located. You can open your iso file with 7-Zip to find the paths to these files.

The initrdpath variable can be set to contain multiple files separated by spaces, example:
set initrdpath='/casper/initrd1 /casper/initrd2 /casper/initrd3'

Set the bootparms parameter to the parms required for your Linux distribution. These parms can be complex and vary widely, so you will need to consult the documentation for your particular software.

Once you have set up the variables, save the file and continue with your menu entry. Grub2Win will include the necessary function in the C:\grub2\grub.cfg file for your new ISO Boot menu entry.


You can practice using isoboot to boot the Ubuntu 20.10 Mate 64 bit ISO file which can be downloaded here:


https://ubuntu-mate.org/download/amd64/impish/


Here is the working code used to boot the Ubuntu ISO. You will need to set the isopath variable to the location where you save the ISO file.

********************************************************************************************************************
                                          
set isopath='ubuntu-mate-20.10-desktop-amd64.iso'
set kernelpath='/casper/vmlinuz'
set initrdpath='/casper/initrd'
set bootparms='boot=casper iso-scan/filename='$isopath' noprompt noeject ---'

g2wisoboot

*******************************************************************************************************************

Note: If you get "error: read out of range" when loading the kernel, it may indicate that your .iso file is fragmented. This is a known bug in GNU Grub. Try moving your .iso file to another partition.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Angelchc
@Evil E-Lex

Ja, Du hast recht.

Danke !

Es liegt daran, dass Grub2Win andere Befehle verwendet.
Da wäre ich nie darauf gekommen.

Er findet die ISO Datei nicht, weil er die Zeile:
set isofile='(hd1,2)/iso/ubuntu.iso'
nicht versteht.

Mit:
set isopath='ubuntu.iso'
Weiss ja der Bootmanager gar nicht wo die ISO Datei ist.

Wenn ich den "Grub Cusomizer" von Ubuntu verwende, kommt eine Fehlermeldung,
da er die "Device.map" Datei nicht findet.
Habe sie abgeändert auf:
\EFI\GRUB2WIN\G2BOOTMGR\GNUGRUB.KERNEL64.EFI
Und auch die Partition von der EFI auf vfat geändert.

Nur will der "Grub Cusomizer" nicht weitergehen.

Was mache ich jetzt?
Das Boot-Menü vom "Grub2Win" gefällt mir sehr.

Nur fehlt die eine richtige Zeile, damit das "Grub2Win" die ISO Datei findet.

Mein jetziges Skript, wo die ISO Datei nicht gefunden wird:
Code:
set lang=de_CH
set isofile='(hd1,2)/iso/ubuntu.iso'
set isopath='ubuntu.iso'
set kernelpath='/vmlinuz'
set initrdpath='/initrd.gz'
set bootparms='boot=iso iso-scan/filename='$isopath' noprompt noeject ---'
g2wisoboot
 
Vorab: Das ist aus Zeitmangel mein letzter Beitrag zum Thema.
Angelchc schrieb:
@Evil E-Lex
Es liegt daran, dass Grub2Win andere Befehle verwendet.
Da wäre ich nie darauf gekommen.
Dabei hast du grub2win installiert und nicht ich. Ich musste mir die Hilfedateien mühsam aus dem Quellcode zusammensuchen, bei dir ist das ein Klick in der GUI.
Angelchc schrieb:
Er findet die ISO Datei nicht, weil er die Zeile:
set isofile='(hd1,2)/iso/ubuntu.iso'
nicht versteht.
Es ist völlig wurscht, ob da nun isopath oder isofile steht. Das ist ist nur eine Variable. Da könnte auch stattdessen bratwurst stehen. Wichtig ist nur, dass man diese Variable konsequent weiterverwendet. grub2win hat allerdings für genau diesen Zweck vordefinierte Funktionen, die natürlich auf diese passenden Variablennamen angewiesen sind.
Angelchc schrieb:
Was mache ich jetzt?
Das Boot-Menü vom "Grub2Win" gefällt mir sehr.
Keine Ahnung. Ich nutze grub2win nicht. Nach Sichtung des Quellcodes ist das ein hemdsärmelig in AutoIt 3 gebauter Wrapper, um die eigentliche grub2-Konfiguration herum.

Angelchc schrieb:
Mein jetziges Skript, wo die ISO Datei nicht gefunden wird:
Code:
set lang=de_CH
set isofile='(hd1,2)/iso/ubuntu.iso'
set isopath='ubuntu.iso'
set kernelpath='/vmlinuz'
set initrdpath='/initrd.gz'
set bootparms='boot=iso iso-scan/filename='$isopath' noprompt noeject ---'
g2wisoboot
Das kann nicht klappen. Bei isopath muss stehen, was bei dir in isofile
steht. Die Zeile mit isofile kann dann weg. Zuvor solltest du allerding prüfen, ob der Pfad auch wirklich korrekt ist.
 
@Evil E-Lex

Danke Dir, dass Du Dir die Zeit dafür nimmst.
Ich möchte auch nicht noch ewig daran hocken.

Ja, logisch, das habe ich selbst installiert.
Wer den sonst.
Das war sicher keine Anspielung an Dich.
Wenn das aber so rübergekommen ist, dann tut mir das leid.
Wollte nur ausdrücken, dass ich selbst nicht darauf gekommen wäre, wenn auch logisch möglich. 😀

Werde das Ubuntu mal auf die Festplatte installieren und den "Grub Customizer" benutzen.
Dann sollte das gehen.
Das mit dem Bootmenü wird ja auch so ähnlich gehen wie mit dem "Grub2Win".
 
Zurück
Oben