Start von ISO-Image auf der Festplatte (GRUB2)
Dieser Artikel oder Teile davon wurden mit 'Review' markiert. Das bedeutet, dass größere Arbeiten am Inhalt des Artikels abgeschlossen sind und der Autor eine Korrekturlesung durch andere User zur Qualitätssicherung für angebracht hält.
Zu sichtende Teile: Kompletter Artikel Bitte hilf LinuxClubWiki, indem du den zu sichtenden Teil überprüfst und den Artikel gegebenenfalls überarbeitest! |
--Gehrke (Diskussion) 18:40, 27. Dez. 2013 (CET)
An dieser Stelle wird beschrieben, wie ein System mit GRUB 2 (nicht zu verwechseln mit GRUB Legacy) direkt von einem ISO-Image gebootet wird, welches auf der lokalen Festplatte gespeichert ist. Als Beispiel wird eine Live-CD von OpenSUSE verwendet.
Es werden zwei mögliche Konfigurationen vorgestellt, die sich in der Art der Partitionierung unterscheiden. Insbesondere geht es um die Frage, wo sich das Dateisystem mit dem ISO-Image befindet bzw. wie es eingebunden werden muss:
- Primäre Partition (sda1)
- LVM (system/root)
Hinweis: An dieser Stelle ist es nicht möglich, die Zieldatei in einem gecrypteten Container (dm-crypt) abzulegen. Näheres hierzu siehe: Partitionierung eines komplett verschlüsselten Linux-Systems.
Das folgende Partitionierungslayout verdeutlicht die Konfiguration des Testsystems:
localhost:~ # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 19G 0 disk ├─sda1 8:1 0 4G 0 part /boot └─sda2 8:2 0 15G 0 part ├─system-root 253:0 0 14.4G 0 lvm / └─system-swap 253:1 0 512M 0 lvm [SWAP]
Hinweis: Das System wurde speziell für diesen Anwendungsfall aufgebaut und erfüllt ansonsten keinen sinnvollen Einsatzzweck. Das Partitionierungslayout ist daher nicht als Beispiel für produktive Systeme zu verstehen.
Inhaltsverzeichnis
Das ISO-Image
Um während der Bootphase darauf zugreifen zu können, müssen die entsprechenden Module eingebunden werden.
Hilfreich ist es, sich über Struktur und Inhalt des Dateisystems innerhalb des ISO-Files zu informieren.
localhost:~ # fdisk -l /boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso Disk /boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso: 987 MB, 987758592 bytes, 1929216 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xa893698d Device Boot Start End Blocks Id System /boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso1 4084 12275 4096 ef EFI (FAT-12/16/32) /boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso2 * 12276 1929215 958470 83 Linux
Das Image kann lokal per Loop-Device gemountet werden:
localhost:~ # mount -o loop /boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso /mnt mount: /dev/loop0 is write-protected, mounting read-only
Der relevante Eintrag in der internen GRUB-Konfiguration des ISO-Files:
localhost:~ # cat /mnt/boot/grub2-efi/grub.cfg ... menuentry "openSUSE_13.1_KDE_Live" --class opensuse --class os { echo Loading linux... set gfxpayload=keep linuxefi /boot/x86_64/loader/linux ramdisk_size=512000 ramdisk_blocksize=4096 splash=silent echo Loading initrd... initrdefi /boot/x86_64/loader/initrd }
Das ISO von OpenSUSE erfordert eine spezielle Parametrisierung.
Zieldatei auf primärer Partition
Das Beispiel wurde getestet mit einer primären Partition. Es steht zu erwarten, dass eine Konfiguration mit einer erweiterten Partiton vergleichbar funktioniert.
In diesem Beispiel wird das Image der Live-CD an einer Stelle gespeichert, welche auf der primären Partition liegt:
localhost:~ # ls -l /boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso -rw-r--r-- 1 user users 987758592 Dec 27 12:26 /boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso
Um einen passenden Eintrag zu generieren, können diese Zeilen in der Konfigurationsdatei '/etc/grub.d/40_custom' angelegt werden:
menuentry 'openSUSE 13.1 KDE Live (ISO-Image@sda1)' { load_video insmod gzio insmod part_msdos insmod ext2 set root='(hd0,msdos1)' set isofrom_device='/dev/sda1' set isofrom_system='/boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso' set loader='/boot/x86_64/loader' loopback loop $isofrom_system echo Loading linux... linux (loop)/$loader/linux isofrom_device=$isofrom_device isofrom_system=$isofrom_system ramdisk_size=512000 ramdisk_blocksize=4096 ro quiet splash $vt_handoff preloadlog=/dev/null showopts echo Loading initrd... initrd (loop)/$loader/initrd }
Nächster Schritt: GRUB-Konfiguration neu bauen
Zieldatei innerhalb eines Logival Volumes (LVM)
Das Image der Live-CD wird an dieser Stelle gespeichert:
localhost:~ # ls -ltar /iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso -rw-r--r-- 1 root root 987758592 Dec 27 14:17 /iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso
Um einen passenden Eintrag zu generieren, können diese Zeilen in der Konfigurationsdatei '/etc/grub.d/40_custom' angelegt werden:
menuentry 'openSUSE 13.1 KDE Live (ISO-Image@lvm)' { load_video insmod gzio insmod part_msdos insmod ext2 insmod lvm set root='(lvm/system-root)' set isofrom_device='/dev/sda1' set isofrom_system='/iso/openSUSE-13.1-KDE-Live-x86_64.iso/openSUSE-13.1-KDE-Live-x86_64.iso' set loader='/boot/x86_64/loader' loopback loop $isofrom_system echo Loading linux... linux (loop)/$loader/linux isofrom_device=$isofrom_device isofrom_system=$isofrom_system ramdisk_size=512000 ramdisk_blocksize=4096 ro quiet splash $vt_handoff preloadlog=/dev/null showopts echo Loading initrd... initrd (loop)/$loader/initrd }
Relevant ist das Laden (insmod) des LVM-Modules und die Adressierung des LVs. Zur Erinnerung: Die Volume Group heißt 'system' und das Logical Volume 'root'.
Nächster Schritt: GRUB-Konfiguration neu bauen
GRUB-Konfiguration neu bauen
Abschließend muss die GRUB-Konfiguration neu gebaut werden:
localhost:~ # grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub.cfg ... Found theme: /boot/grub2/themes/openSUSE/theme.txt Found linux image: /boot/vmlinuz-3.11.6-4-desktop Found initrd image: /boot/initrd-3.11.6-4-desktop done
Kontrolle der generierten Konfigurationsdatei:
localhost:~ # cat /boot/grub2/grub.cfg
Wenn alles fehlerfrei durchgeführt wurde, sollte die Live-Version nun direkt von der Festplatte gebootet werden können.
Links
- LVM
- Grub2/ISOBoot (Ubuntu Documentation)
- How to Boot from 13.1 ISO image direct from hard drive using Grub2 (OpenSUSE Forum)
- How to boot a openSUSE DVD from hard disk with Grub2 (OpenSUSE Forum)
- Boot OpenSUSE from ISO file using grub2 (GitHub)
- How to boot Fedora Install ISO file located in LVM partition with GRUB2?