Veröffentlicht: Fr 10 Februar 2017
Aktualisiert: Fr 28 Oktober 2022
Von Hermann Höhne
In Ubuntu Linux .
Schlagworte: partitionieren grub2
Motivation
Ich habe einen USB-Stick, von welchem ich direkt Ubuntu Linux starten kann. Ich habe einen weiteren USB-Stick mit dem Ubuntu Installer darauf. Gelegentlich muss ich leider auch mal Windows installieren, weshalb ich einen zusätzlichen USB-Stick habe, auf welchem das Windows Setup liegt. Standardmäßig habe ich nie den USB-Stick bei mir, welchen ich gerade brauche. Deswegen kombiniere ich alle Funktionen in einem.
Partitionen
Auch Windows liest von USB-Sticks unter Umständen nur die erste Partition. Da das Windows 11 Setup Dateien jenseits der 4 GB Grenze beinhaltet, muss das eine Partition mit NTFS Dateisystem sein. Manche UEFI-Systeme können nur FAT32 Dateisysteme lesen. Von dort aus ist jedoch das installieren eines NTFS-Treibers möglich. Daraus ergibt sich dieses Partitionslayout:
NTFS für Windows 11 Setup und Ubuntu ISO
500 MB FAT32 für EFI Bootloader
10 MB BIOS Boot Partition (optional)
ext4 für Ubuntu (optional)
Die Inhalte des Windows 10 ISO werden auf Dateiebene auf die NTFS Partition kopiert. Außerdem wird das Ubuntu CD Abbild als ubuntu.iso dort abgelegt. In die zweite Partition wird Ubuntu installiert. Dieser Prozess wird hier nicht beschrieben. Der GRUB2 Bootloader wird manuell konfiguriert.
GRUB2 Installieren und Konfigurieren
Diese Schritte können aus dem von dem USB-Stick gestarteten Ubuntu heraus geschehen. Es kann aber auch von einem anderen Linux heraus gemacht werden.
GRUB2 installieren
Als erstes wird GRUB2 zweimal installiert: In den MBR des USB-Sticks und als EFI Bootloader in das Dateisystem. So kann der Stick in Systemen mit UEFI ohne CSM und in Systemen mit BIOS ohne UEFI genutzt werden.
Zuerst ist die erste Partition zu mounten (/dev/sda sei der USB-Stick)::
GRUB2 als Bootloader für EFI in die erste Partition installieren::
grub-install --target=x86_64-efi --removable --root=/mnt /dev/sda
Die Option --removable ist für den Start von USB-Sticks wirklich notwendig. GRUB2 wird in das Standardverzeichnis efi\boot\bootx64.efi geschrieben und wird ohne Konfiguration.
Optional kann GRUB2 auch für den MBR-Bootstil installiert werden (obwohl der Stick GPT formatiert ist)::
grub-install --target=i386-pc --root=/mnt /dev/sda
GRUB2 konfigurieren
In /mnt/boot/grub kann custom.cfg angelegt werden mit diesen Einträgen::
menuentry "Ubuntu ISO" {
set isofile = "/ubuntu.iso"
search -- file -- set = root -- no - floppy $ isofile
loopback loop ( $ root ) $ isofile
linux ( loop ) / casper / vmlinuz boot = casper noprompt noeject setkmap = de iso - scan / filename =$ isofile
initrd ( loop ) / casper / initrd
}
menuentry "Windows 10 EDU Setup EFI" {
search -- file -- set = root -- no - floppy / efi / microsoft / boot / bcd
chainloader / efi / boot / bootx64 . efi
}
Auch das Windows-Setup benötigt zum Lesen von NTFS ironischerweise Unterstützung seitens der EFI Firmware. Dies ist durch uefi-ntfs mit ntfs-3g möglich (der Ordnername "rufus" ist hartcodiert vorgegeben)::
menuentry "UEFI:NTFS" {
search -- file -- set = root -- no - floppy / efi / rufus / bootx64 . efi
chainloader / efi / rufus / bootx64 . efi
}
Damit Windows-Setup durch die ESP des Sticks nicht verwirrt ist, muss der Partitionstyp 0700 sein, nicht EF00. Die meisten UEFI-Firmwares scheinen das mitzumachen.