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
- Menu del bootloader EFI:
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.