GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Legacy-Bios, UEFI und SecureBoot-fähige Ubuntu Live-Image-Anpassung

In diesem Artikel erhalten Sie grundlegende Informationen zum Erstellen eines bootfähigen Ubuntu Live-benutzerdefinierten Isohybrid-Images, damit Sie mit Ihrem eigenen Ubuntu-Distro-Spin-off beginnen können. Das Ausgabe-Image ist ein amd64-angepasstes Ubuntu-Live-Image, das in allen drei Boot-Modi booten kann:Legacy Bios, UEFI und SecureBoot.

Der Artikel wird nicht sehr detailliert darauf eingehen, wie die eigentliche Anpassung des squashfs-Systems durchgeführt wird. Stattdessen konzentriert es sich jedoch auf alle Schritte zum Entpacken des offiziellen Ubuntu Iso und zum Zusammensetzen aller Teile, um ein bootfähiges Isohybrid-Image zu erstellen, das die Modi Legacy Bios, UEFI und SecureBoot unterstützt.

Voraussetzungen

Wie immer beginnen wir mit den Voraussetzungen und der optionalen Paketinstallation:

$ sudo apt-get install dumpet xorriso squashfs-tools gddrescue

Ubuntu-ISO-Image herunterladen

Der erste Teil der Erstellung Ihrer eigenen angepassten Linux-Distribution basierend auf Ubuntu Linux besteht darin, das offizielle Ubuntu-ISO-Image herunterzuladen. Erstellen Sie ein neues Verzeichnis custom-ubuntu um alle für dieses Projekt erforderlichen Dateien zu speichern. EFI und seine SecureBoot-Funktion werden auf der i386-Architektur nicht unterstützt, laden Sie also eine beliebige amd64-Version des Ubuntu-ISO-Images herunter und speichern Sie sie in custom-ubuntu Verzeichnis:

$ mkdir custom-ubuntu
$ cd custom-ubuntu/
$ wget http://url/to/ubuntu/image.iso

ISO-Inhalt extrahieren

In diesem Stadium müssen wir alle Inhalte aus dem offiziellen Ubuntu-ISO-Image mounten und extrahieren. Dafür verwenden wir xorriso Befehl. Das folgende xorriso Der Befehl extrahiert alle Dateien aus dem ursprünglichen ISO-Image in custom-iso Verzeichnis. Bsp.:

$ xorriso -osirrox on -indev ubuntu-16.04-desktop-amd64.iso -extract / custom-iso

Anpassungsprozess

Führen Sie in diesem Stadium eine Anpassung innerhalb von custom-iso durch Verzeichnis. Wie bereits erwähnt, liegt es an Ihnen, wie Sie Ihr Bild anpassen. Nachfolgend finden Sie einige Tipps für den Einstieg:

    • EFI-Bootloader-Menü:custom-iso/boot/grub/grub.cfg
    • Legacy-Startmenü ohne EFI:custom-iso/isolinux/txt.cfg
    • squashfs-Dateisystem:custom-iso/casper/filesystem.squashfs

Um das squashfs-Dateisystem anzupassen, dekomprimieren Sie zuerst filesystem.squashfs:

$ sudo  unsquashfs custom-iso/casper/filesystem.squashfs
Parallel unsquashfs: Using 8 processors
180141 inodes (192876 blocks) to write

[======================/] 192876/192876 100%
created 138452 files
created 18797 directories
created 41566 symlinks
created 81 devices
created 0 fifos

Geben Sie squashfs mit chroot ein Befehl, Änderungen vornehmen und beenden:

$ sudo chroot squashfs-root/
# mount none -t proc /proc; mount none -t sysfs /sys; mount none -t devpts /dev/pts

Dieser Punkt Sie innerhalb der Chroot-Umgebung Ihres neuen Systems. Nehmen Sie Änderungen wie die Paketinstallation vor und beenden Sie Chroot:

# exit
exit
$ sudo umount -f squashfs-root/proc squashfs-root/sys squashfs-root/dev/pts

Neue squashfs komprimieren:

$ sudo mksquashfs squashfs-root/ custom-iso/casper/filesystem.squashfs

Erstellen eines bootfähigen Isohybrid-ISO-Images

Besorgen Sie sich den Isohybrid-MBR isohdpfx.bin aus dem ursprünglichen Ubuntu-ISO-Image mit dd Befehl :

$ sudo dd if=ubuntu-16.04-desktop-amd64.iso bs=512 count=1 of=custom-iso/isolinux/isohdpfx.bin

Erstellen Sie ein neues Isohybrid-ISO-Image innerhalb von custom-iso Verzeichnis mit xorriso Befehl. Beachten Sie das "." am Ende des xorriso Befehl:

$ cd custom-iso/
$ sudo xorriso -as mkisofs -isohybrid-mbr isolinux/isohdpfx.bin \ 
-c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 \
-boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \
-isohybrid-gpt-basdat -o ../custom-ubuntu.iso .

xorriso 1.3.2 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:../custom-ubuntu.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 1444g free
Added to ISO image: directory '/'='/home/lubos/custom-ubuntu/custom-iso'
xorriso : UPDATE : 549 files added in 1 seconds
xorriso : UPDATE : 549 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 512 bytes from file '/home/lubos/custom-ubuntu/custom-iso/isolinux/isohdpfx.bin'
libisofs: NOTE : Automatically adjusted MBR geometry to 1017/89/32
libisofs: NOTE : Aligned image size to cylinder size by 367 blocks
xorriso : UPDATE :  100.00% done
ISO image produced: 724104 sectors
Written to medium : 724104 sectors at LBA 0
Writing to 'stdio:../custom-ubuntu.iso' completed successfully.

Der obige Befehl führt zu einer neuen ../custom-ubuntu.iso isohybrides Bild.

Beziehen von Bildinformationen

Wenn alles gut gegangen ist unser custom-ubuntu Verzeichnis sollte nun ein neues Isohybrid-Image custom-ubuntu.iso enthalten :

$ ls
custom-iso  custom-ubuntu.iso  orig-iso  squashfs-root  ubuntu-16.04-desktop-amd64.iso

Partitionstabelle:

$ sudo fdisk -lu custom-ubuntu.iso

Disk custom-ubuntu.iso: 1.4 GiB, 1482964992 bytes, 2896416 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
Disklabel type: dos
Disk identifier: 0x751e87f5

Device             Boot Start     End Sectors  Size Id Type
custom-ubuntu.iso1 *        0 2896415 2896416  1.4G  0 Empty
custom-ubuntu.iso2        540    5083    4544  2.2M ef EFI (FAT-12/16/32)

Kopf- und Kataloginformationen:

$ sudo dumpet -i custom-ubuntu.iso 
Validation Entry:
        Header Indicator: 0x01 (Validation Entry)
        PlatformId: 0x00 (80x86)
        ID: ""
        Checksum: 0x55aa
        Key bytes: 0x55aa
Boot Catalog Default Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load segment: 0x0 (0000:7c00)
        System type: 0 (0x00)
        Load Sectors: 4 (0x0004)
        Load LBA: 701876 (0x000ab5b4)
Section Header Entry:
        Header Indicator: 0x91 (Final Section Header Entry)
        PlatformId: 0xef (EFI)
        Section Entries: 1
        ID: ""
Boot Catalog Section Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load address: 0 (0x0000)
        System type: 0 (0x00)
        Load Sectors: 4544 (0x11c0)
        Load LBA: 135 (0x00000087)

Eltorito-Validierungsheader:

$ isoinfo -d -i custom-ubuntu.iso 
CD-ROM is in ISO 9660 format
System id: 
Volume id: ISOIMAGE
Volume set id: 
Publisher id: 
Data preparer id: XORRISO-1.3.2 2013.08.07.110001, LIBISOBURN-1.3.2, LIBISOFS-1.3.2, LIBBURN-1.3.2
Application id: 
Copyright File id: 
Abstract File id: 
Bibliographic File id: 
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 724104
El Torito VD version 1 found, boot catalog is in sector 117
NO Joliet present
Rock Ridge signatures version 1 found
Eltorito validation header:
    Hid 1
    Arch 0 (x86)
    ID ''
    Key 55 AA
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 4
        Bootoff AB5B4 701876

Boot-Katalog und relevante Bildpfade:

# xorriso -indev custom-ubuntu.iso -toc -pvd_info 
xorriso 1.3.2 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 549 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'custom-ubuntu.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , ISOLINUX isohybrid MBR pointing to boot image
Media summary: 1 session, 724104 data blocks, 1414m data, 1442g free
Volume id    : 'ISOIMAGE'
Drive current: -indev 'custom-ubuntu.iso'
Drive type   : vendor 'YOYODYNE' product 'WARP DRIVE' revision 'FX01'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Media blocks : 724104 readable , 755967444 writable , 756691572 overall
Boot record  : El Torito , ISOLINUX isohybrid MBR pointing to boot image
Boot catalog : '/isolinux/boot.cat'
Boot image   : '/isolinux/isolinux.bin' , boot_info_table=on
Boot image   : '/boot/grub/efi.img' , platform_id=0xEF 
TOC layout   : Idx ,  sbsector ,       Size , Volume Id
ISO session  :   1 ,         0 ,    724104s , ISOIMAGE
Media summary: 1 session, 724104 data blocks, 1414m data, 1442g free
Media nwa    : 724128s
Drive current: -indev 'custom-ubuntu.iso'
PVD address  : 16s
Volume Id    : ISOIMAGE
Volume Set Id: 
Publisher Id : 
Preparer Id  : XORRISO-1.3.2 2013.08.07.110001, LIBISOBURN-1.3.2, LIBISOFS-1.3.2, LIBBURN-1.3.2
App Id       : 
System Id    : 
CopyrightFile: 
Abstract File: 
Biblio File  : 
Creation Time: 2016020823095700
Modif. Time  : 2016020823095700
Expir. Time  : 0000000000000000
Eff. Time    : 0000000000000000

Booten eines neuen benutzerdefinierten Ubuntu-Images

Bitte beachten Sie, dass das neu erstellte benutzerdefinierte Ubuntu-Image in allen drei Modi booten soll, d. h. Legacy-BIOS, nur UEFI sowie UEFI mit aktivierter SecureBoot-Option. Dies ist jedoch nicht garantiert und es können Probleme aufgrund von Hardware-Firmware-Fehlern usw. auftreten.

Um Ihr neues benutzerdefiniertes Ubuntu-Image zu booten, brennen Sie entweder die resultierende ISO auf CD oder verwenden Sie ddrescue Befehl zum Klonen auf Ihren USB-Stick:

$ sudo ddrescue custom-ubuntu.iso /dev/sdX --force -D

Ihr USB-Stick enthält jetzt ein angepasstes Ubuntu-Live-System. Alles sollte jetzt bereit sein, von Ihrem USB-Stick zu booten.


Ubuntu
  1. Legacy-Bios, UEFI und SecureBoot-fähige Ubuntu Live-Image-Anpassung

  2. Ubuntu Xenial Xerus 16.04 Linux ISO-Image-Download mit zsync

  3. Ubuntu auf USB installieren und von Destop mit Uefi booten?

  4. Ubuntu von einer Iso-Datei unter Windows installieren?

  5. „Boot Error“ mit Live-USB von Ubuntu 15.10 – So beheben Sie es

Erstellen Sie eine ISO-Image-Sicherungsdatei aus einem Ordner in Ubuntu 17.10

So erstellen Sie mit Cubic ein benutzerdefiniertes Live-ISO-Image für Ubuntu

Wie konvertiere ich PNG, JPEG in WebP in Ubuntu? (Auch WebP zu PNG und JPEG)

Beliebte Tools zum einfachen Zuschneiden und Ändern der Größe von Bildern in Ubuntu

Wie erstelle ich einen Ubuntu Live-USB-Stick in Fedora?

DVD mit 32-Bit- und 64-Bit-Ubuntu?