Artikel ini akan memberi Anda informasi inti tentang cara membuat image isohybrid kustom Ubuntu Live yang dapat di-boot untuk membantu Anda memulai spin-off distro Ubuntu Anda sendiri. Gambar keluaran akan menjadi gambar langsung Ubuntu yang disesuaikan dengan AMD64, yang dapat melakukan booting dalam ketiga mode boot:Bios Legacy, UEFI, dan SecureBoot.
Artikel ini tidak akan membahas banyak detail tentang cara melakukan kustomisasi sistem squashfs yang sebenarnya. Namun, alih-alih itu akan berkonsentrasi pada semua langkah mengenai membongkar Iso Ubuntu resmi dan menyatukan semua bagian kembali untuk menghasilkan gambar isohybrid yang dapat di-boot yang mendukung mode Legacy Bios, UEFI, dan SecureBoot.
Prasyarat
Seperti biasa kita mulai dengan prasyarat dan instalasi paket opsional:
$ sudo apt-get install dumpet xorriso squashfs-tools gddrescue
Mengunduh citra ISO Ubuntu
Bagian pertama dari membuat distro Linux Anda sendiri yang disesuaikan berdasarkan Ubuntu Linux adalah mengunduh image ISO resmi Ubuntu. Buat direktori baru custom-ubuntu
untuk menampung semua file yang dibutuhkan oleh proyek ini. EFI dan fitur SecureBoot-nya tidak didukung pada arsitektur i386 jadi unduh versi amd64 dari image ISO Ubuntu dan simpan di dalam custom-ubuntu
direktori:
$ mkdir custom-ubuntu $ cd custom-ubuntu/ $ wget http://url/to/ubuntu/image.iso
Ekstrak konten ISO
Pada tahap ini kita perlu memasang dan mengekstrak semua konten dari image ISO resmi Ubuntu. Untuk ini kami menggunakan xorriso
memerintah. Di bawah xorriso
perintah akan mengekstrak semua file dari gambar ISO asli ke custom-iso
direktori. Mis.:
$ xorriso -osirrox on -indev ubuntu-16.04-desktop-amd64.iso -extract / custom-iso
Proses Kustomisasi
Pada tahap ini lakukan kustomisasi dalam custom-iso
direktori. Seperti yang disebutkan sebelumnya, ini proses bagaimana Anda menyesuaikan gambar Anda terserah Anda. Di bawah ini Anda dapat menemukan beberapa petunjuk untuk memulai:
- Menu bootloader EFI:
custom-iso/boot/grub/grub.cfg
- menu boot lama non-EFI:
custom-iso/isolinux/txt.cfg
- sistem file squashfs:
custom-iso/casper/filesystem.squashfs
- Menu bootloader EFI:
Untuk menyesuaikan sistem file squashfs, dekompresi filesystem.squashfs terlebih dahulu:
$ 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
Masukkan squashfs menggunakan chroot
perintah, buat perubahan dan keluar:
$ sudo chroot squashfs-root/ # mount none -t proc /proc; mount none -t sysfs /sys; mount none -t devpts /dev/pts
Ini menunjukkan Anda dalam lingkungan chroot dari sistem baru Anda. Buat perubahan seperti instalasi paket dan keluar dari chroot:
# exit exit $ sudo umount -f squashfs-root/proc squashfs-root/sys squashfs-root/dev/pts
Kompres squashf baru:
$ sudo mksquashfs squashfs-root/ custom-iso/casper/filesystem.squashfs
Membuat image ISO isohybrid yang dapat di-boot
Dapatkan isohybrid MBR isohdpfx.bin
dari gambar ISO ubuntu asli menggunakan dd
perintah :
$ sudo dd if=ubuntu-16.04-desktop-amd64.iso bs=512 count=1 of=custom-iso/isolinux/isohdpfx.bin
Buat image ISO isohybrid baru dari dalam custom-iso
direktori menggunakan xorriso
memerintah. Perhatikan "." di akhir xorriso
perintah:
$ 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.
Perintah di atas akan menghasilkan ../custom-ubuntu.iso
baru gambar isohibrid.
Mendapatkan informasi Gambar
Jika semuanya berjalan dengan baik custom-ubuntu
kami direktori sekarang harus berisi gambar isohybrid baru custom-ubuntu.iso
:
$ ls custom-iso custom-ubuntu.iso orig-iso squashfs-root ubuntu-16.04-desktop-amd64.iso
Tabel partisi:
$ 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)
Informasi tajuk dan katalog:
$ 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)
Header validasi 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
Katalog boot dan jalur gambar yang relevan:
# 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
Mem-boot image Ubuntu kustom baru
Harap dicatat bahwa image Ubuntu kustom yang baru diproduksi dimaksudkan untuk boot dalam ketiga mode, yaitu Legacy BIOS, UEFI saja, serta UEFI dengan opsi SecureBoot diaktifkan. Namun, ini tidak dijamin dan masalah dapat terjadi karena bug firmware perangkat keras, dll.
Untuk mem-boot image ubuntu kustom baru Anda, bakar ISO hasil pada disk CD atau gunakan ddrescue
perintah untuk mengkloningnya ke stik USB Anda:
$ sudo ddrescue custom-ubuntu.iso /dev/sdX --force -D
Stik USB Anda sekarang berisi sistem live Ubuntu yang disesuaikan. Semua seharusnya sudah siap untuk boot dari stik USB Anda.