GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Personalizzazione dell'immagine Ubuntu Live predisposta per BIOS legacy, UEFI e SecureBoot

Questo articolo ti fornirà informazioni di base su come creare un'immagine isoibrida personalizzata Ubuntu Live avviabile per iniziare con il tuo spin-off di distribuzione Ubuntu. L'immagine di output sarà un'immagine live Ubuntu personalizzata amd64, in grado di avviarsi in tutte e tre le modalità di avvio:Legacy Bios, UEFI e SecureBoot.

L'articolo non entrerà nei dettagli su come eseguire l'effettiva personalizzazione del sistema squashfs. Tuttavia, si concentrerà invece su tutti i passaggi relativi alla decompressione dell'Iso ufficiale di Ubuntu e al rimontaggio di tutte le parti per produrre un'immagine isoibrida avviabile che supporti le modalità Legacy Bios, UEFI e SecureBoot.

Prerequisiti

Come sempre iniziamo dai prerequisiti e dall'installazione del pacchetto opzionale:

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

Download dell'immagine ISO di Ubuntu

La prima parte della creazione della tua distribuzione Linux personalizzata basata su Ubuntu Linux è scaricare l'immagine ISO ufficiale di Ubuntu. Crea una nuova directory custom-ubuntu per contenere tutti i file richiesti da questo progetto. EFI e la sua funzione SecureBoot non sono supportate sull'architettura i386, quindi scarica qualsiasi versione amd64 dell'immagine ISO di Ubuntu e salvala all'interno di custom-ubuntu directory:

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

Estrai contenuto ISO

A questo punto dobbiamo montare ed estrarre tutto il contenuto dall'immagine ISO ufficiale di Ubuntu. Per questo utilizziamo xorriso comando. Il seguente xorriso il comando estrarrà tutti i file dall'immagine ISO originale in custom-iso directory. Es.:

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

Processo di personalizzazione

A questo punto esegui una personalizzazione all'interno di custom-iso directory. Come accennato in precedenza, questo il processo di personalizzazione della tua immagine dipende da te. Di seguito puoi trovare alcuni suggerimenti per iniziare:

    • Menu del bootloader EFI:custom-iso/boot/grub/grub.cfg
    • menu di avvio legacy non EFI:custom-iso/isolinux/txt.cfg
    • filesystem squashfs:custom-iso/casper/filesystem.squashfs

Per personalizzare il filesystem squashfs prima decomprimi 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

Inserisci squashfs usando chroot comando, apportare modifiche ed uscire:

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

A questo punto sei all'interno dell'ambiente chroot del tuo nuovo sistema. Apporta modifiche come l'installazione del pacchetto ed esci da chroot:

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

Comprimi nuovi squashfs:

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

Creazione di un'immagine ISO isoibrida avviabile

Ottieni MBR isoibrido isohdpfx.bin dall'immagine ISO originale di Ubuntu usando dd comando :

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

Crea una nuova immagine ISO isoibrida da custom-iso directory usando xorriso comando. Notare la "." alla fine del xorriso comando:

$ 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.

Il comando precedente risulterà in un nuovo ../custom-ubuntu.iso immagine isoibrida.

Ottenere informazioni sull'immagine

Se tutto è andato bene il nostro custom-ubuntu la directory ora dovrebbe contenere una nuova immagine isoibrida custom-ubuntu.iso :

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

Tabella delle partizioni:

$ 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)

Intestazione e informazioni sul catalogo:

$ 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)

Intestazione di convalida Eltorito:

$ 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

Catalogo di avvio e percorsi delle immagini pertinenti:

# 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

Avvio di una nuova immagine Ubuntu personalizzata

Si noti che la nuova immagine Ubuntu personalizzata prodotta è pensata per l'avvio in tutte e tre le modalità, ovvero BIOS legacy, solo UEFI e UEFI con l'opzione SecureBoot abilitata. Tuttavia, ciò non è garantito e potrebbero verificarsi problemi a causa di bug del firmware hardware, ecc.

Per avviare la tua nuova immagine Ubuntu personalizzata, masterizza l'ISO del risultato su disco CD o usa ddrescue comando per clonarlo sulla tua chiavetta USB:

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

La tua chiavetta USB ora contiene il sistema live Ubuntu personalizzato. Ora tutto dovrebbe essere pronto per l'avvio dalla tua chiavetta USB.


Ubuntu
  1. Personalizzazione dell'immagine Ubuntu Live predisposta per BIOS legacy, UEFI e SecureBoot

  2. Ubuntu Xenial Xerus 16.04 Download di immagini ISO Linux con zsync

  3. Tesseract OCR:installazione e utilizzo su Ubuntu 16.04

  4. Installare Ubuntu su Usb e avviare da Destop con Uefi?

  5. "Errore di avvio" con live usb di Ubuntu 15.10 - Come risolverlo

Crea un file di backup dell'immagine ISO da una cartella in Ubuntu 17.10

Come creare un'immagine ISO live di Ubuntu personalizzata con Cubic

Come convertire PNG, JPEG in WebP in Ubuntu? (Anche WebP in PNG e JPEG)

Strumenti popolari per ritagliare e ridimensionare facilmente le immagini in Ubuntu

Come creare una chiavetta USB live di Ubuntu in Fedora?

DVD con Ubuntu sia a 32 bit che a 64 bit?