Skript zum Generieren des ISO-Images
Es handelt sich hier um ein "dummes" Skript, das schlicht die benötigten Befehle in Reihenfolge abarbeitet. Meine Empfehlung ist daher, das Skript nicht direkt, sondern die einzelnen Befehle manuell auszuführen. Natürlich ist hier reichlich Platz für eine vernünftige Strukturierung durch Parameter, Abfragen und Kontrollstrukturen (Freiwillige bitte vor!).
Bislang gab es ein eigenes Paket "Ubuntu Customization Kit" (uck), das genau diese Aufgabe sehr effizient und gut ausgeführt hat, da dieses aber nicht mehr gepflegt wird und mittlerweile nicht mehr ohne manuelle Korrekturen funktioniert, habe ich die manuelle Vorgehensweise in dem vorliegenden Skript zusammen gestellt.
Voraussetzungen:
- Als Umgebung wird hier ein Ubuntu 16.04 64-Bit vorausgesetzt, also dasselbe, das auch auf der Live-DVD installiert wird. Besteht hier ein Unterschied, muss der debootstrap-Befehl wie auch die die sources.list Datei manuell an das zukünftige Live-System angepasst werden.
- Diese Befehle setzen root-Berechtigung voraus, nicht nur damit alle Mounts durchgeführt werden können, sondern auch das erzeugte Squash-Filesystem intern die korrekten Berechtigungen erhält.
- Des weiteren sollte ein leeres Verzeichnis für die Erzeugung der Daten verwendet werden, in dessen Filesystem noch mindestens 5GB Platz ist. Je nach Software-Auswahl kann das natürlich variieren.
- In dieses Verzeichnis muss vorher die ISO-Datei des Original-Ubuntu-Images (hier: ubuntu-16.04.1-desktop-amd64.iso) abgelegt werden, damit die notwendigen Daten für UEFI, grub, .disk und isolinux abgekupfert werden können. Für mehr wird dieses Image aber nicht benötigt.
- Die Korrekturen für die Dateien grub.cfg und isolinux.cfg müssen manuell durchgeführt werden, weil dieses Abhängig von der Benennung der Kernel- und initrd- Dateien ist. Im Skript ist dieses an der Stelle vorgesehen, in der diese Dateien im vi Editor aufgerufen werden. Ein Beispiel für jede dieser Dateien habe ich unten angehängt.
- Die entstandene ISO-Datei kann je nach Größe auf eine CD oder DVD-Datei gebrannt werden und sollte anschließend direkt bootfähig sein.
- Soll ein USB-Stick als Installationsmedium verwendet werden, reicht es für ein EFI-Boot, den kompletten Verzeichnisbaum, wie er sich letztendlich im Verzeichnis "iso" befindet, auf den USB-Stick zu kopieren. Der USB-Stick muss allerdings als FAT32 formatiert, und das Verzeichnis "EFI" muss wirklich groß geschrieben werden. Soll im Legacy modus gebootet werden kann das Image auch per dd geschrieben werden, doch dann ist der Stick nicht mehr beschreibbar.
Als zusätzlicher Tipp kann noch erwähnt werden, dass die Paketauswahl nach belieben angepasst werden kann ("chroot apt install ..."), das Paket ubiquity-frontend-gtk wird nur benötigt, wenn die DVD oder der Stick auch für die Installation benötigt wird. Für ein reines Live-System ist es nicht notwendig. Das Squash-FS kann auch per "unsquashfs" aus der Original-Installations-DVD als Basis übernommen werden, das erspart die nachträgliche Experimemtier-Aktion um festzustellen, ob die Software-Auswahl ausreicht.
#! /bin/bash # # Original iso per loop mounten mkdir cd-mount mount -t iso9660 ./ubuntu-16.04.1-desktop-amd64.iso cd-mount/ -o ro,loop # # Verzeichnis fuer Live-System-Daten anlegen mkdir iso mkdir iso/casper cp -rp cd-mount/EFI cd-mount/.disk cd-mount/boot cd-mount/isolinux cd-mount/pool cd-mount/dists iso/ # # Basis-System anlegen debootstrap --arch amd64 xenial squashfs # ... oder wahlweise aus dem ISO extrahieren |
Beispiel: grub.cfg
if loadfont /boot/grub/font.pf2 ; then set gfxmode=auto insmod efi_gop insmod efi_uga insmod gfxterm terminal_output gfxterm fi set menu_color_normal=white/black set menu_color_highlight=black/light-gray menuentry "Try Ubuntu german without installing" { set gfxpayload=keep linux /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper locale=de_DE bootkbd=de console-setup/layoutcode=de quiet splash --- initrd /casper/initrd.lz } |
Beispiel: isolinux.cfg
# Bootmenu from Burkhard Obergoeker, December 2016 default vesamenu.c32 #menu background swxwings_formation.tga menu title VHS Linux 2016-12 Ubuntu 16.04 by Burkhard Obergoeker label linux menu label Live Ubuntu starten kernel /casper/vmlinuz # append BOOT_IMAGE=/casper/vmlinuz boot=casper initrd=/casper/initrd.lz quiet splash -- debian-installer/language=de console-setup/layoutcode?=de append BOOT_IMAGE=/casper/vmlinuz boot=casper initrd=/casper/initrd.lz quiet splash -- locale=de bootkbd=de console-setup/layoutcode=de label hd menu label Von lokaler Festplatte starten localboot 0x80 |
Nachtrag:
Mitterweile existiert auch eine Umfangreiche Anleitung auf der Ubuntu-Help Seite: https://help.ubuntu.com/community/LiveCDCustomization