Este artículo le proporcionará información básica sobre cómo crear una imagen isohíbrida personalizada de Ubuntu Live con capacidad de arranque para que pueda comenzar con su propia distribución derivada de Ubuntu. La imagen de salida será una imagen en vivo de Ubuntu personalizada amd64, capaz de arrancar en los tres modos de arranque:Legacy Bios, UEFI y SecureBoot.
El artículo no entrará en muchos detalles sobre cómo realizar la personalización real del sistema squashfs. Sin embargo, en su lugar, se concentrará en todos los pasos relacionados con el desempaquetado de Ubuntu Iso oficial y la recomposición de todas las partes para producir una imagen isohíbrida de arranque compatible con los modos Legacy Bios, UEFI y SecureBoot.
Requisitos
Como siempre, comenzamos por los requisitos previos y la instalación del paquete opcional:
$ sudo apt-get install dumpet xorriso squashfs-tools gddrescue
Descargando la imagen ISO de Ubuntu
La primera parte de la creación de su propia distribución de Linux personalizada basada en Ubuntu Linux es descargar la imagen ISO oficial de Ubuntu. Crear un nuevo directorio custom-ubuntu
para contener todos los archivos requeridos por este proyecto. EFI y su función SecureBoot no son compatibles con la arquitectura i386, así que descargue cualquier versión amd64 de la imagen ISO de Ubuntu y guárdela en custom-ubuntu
directorio:
$ mkdir custom-ubuntu $ cd custom-ubuntu/ $ wget http://url/to/ubuntu/image.iso
Extraer contenido ISO
En esta etapa necesitamos montar y extraer todo el contenido de la imagen ISO oficial de Ubuntu. Para esto usamos xorriso
dominio. El siguiente xorriso
El comando extraerá todos los archivos de la imagen ISO original en custom-iso
directorio. Ej.:
$ xorriso -osirrox on -indev ubuntu-16.04-desktop-amd64.iso -extract / custom-iso
Proceso de personalización
En esta etapa, realice una personalización dentro de custom-iso
directorio. Como se mencionó anteriormente, el proceso de cómo personalizar su imagen depende de usted. A continuación puede encontrar algunos consejos para comenzar:
- Menú del cargador de arranque EFI:
custom-iso/boot/grub/grub.cfg
- menú de arranque heredado no EFI:
custom-iso/isolinux/txt.cfg
- sistema de archivos squashfs:
custom-iso/casper/filesystem.squashfs
- Menú del cargador de arranque EFI:
Para personalizar el sistema de archivos squashfs, primero descomprima 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
Ingrese squashfs usando chroot
comando, hacer cambios y salir:
$ sudo chroot squashfs-root/ # mount none -t proc /proc; mount none -t sysfs /sys; mount none -t devpts /dev/pts
Este punto lo ubica dentro del entorno chroot de su nuevo sistema. Realice cambios como la instalación del paquete y salga de chroot:
# exit exit $ sudo umount -f squashfs-root/proc squashfs-root/sys squashfs-root/dev/pts
Comprimir nuevos squashfs:
$ sudo mksquashfs squashfs-root/ custom-iso/casper/filesystem.squashfs
Crear una imagen ISO isohíbrida de arranque
Obtener MBR isohíbrido isohdpfx.bin
de la imagen ISO original de ubuntu usando dd
comando:
$ sudo dd if=ubuntu-16.04-desktop-amd64.iso bs=512 count=1 of=custom-iso/isolinux/isohdpfx.bin
Cree una nueva imagen ISO isohíbrida desde dentro de custom-iso
directorio usando xorriso
dominio. Nota la "." al final 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.
El comando anterior dará como resultado un nuevo ../custom-ubuntu.iso
imagen isohíbrida.
Obtención de información de la imagen
Si todo salió bien nuestro custom-ubuntu
El directorio ahora debería contener una nueva imagen isohíbrida custom-ubuntu.iso
:
$ ls custom-iso custom-ubuntu.iso orig-iso squashfs-root ubuntu-16.04-desktop-amd64.iso
Tabla de particiones:
$ 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)
Información de encabezado y catálogo:
$ 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)
Encabezado de validación de 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
Catálogo de arranque y rutas de imágenes relevantes:
# 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
Arrancar una nueva imagen personalizada de Ubuntu
Tenga en cuenta que la nueva imagen personalizada de Ubuntu está diseñada para arrancar en los tres modos, es decir, Legacy BIOS, UEFI solo y UEFI con la opción SecureBoot habilitada. Sin embargo, esto no está garantizado y pueden ocurrir problemas debido a errores de firmware de hardware, etc.
Para iniciar su nueva imagen personalizada de ubuntu, grabe el resultado ISO en un disco CD o use ddrescue
comando para clonarlo en su memoria USB:
$ sudo ddrescue custom-ubuntu.iso /dev/sdX --force -D
Su memoria USB ahora contiene un sistema en vivo Ubuntu personalizado. Todo debería estar listo para arrancar desde su memoria USB.