この記事では、独自のUbuntuディストリビューションのスピンオフを開始するために、起動可能なUbuntuLiveのカスタマイズされたisohybridイメージを作成する方法に関するコア情報を提供します。出力イメージは、amd64でカスタマイズされたUbuntuライブイメージであり、Legacy Bios、UEFI、SecureBootの3つのブートモードすべてでブートできます。
この記事では、実際のsquashfsシステムのカスタマイズを実行する方法についてはあまり詳しく説明しません。ただし、代わりに、公式のUbuntu Isoを解凍し、すべてのパーツを元に戻して、Legacy Bios、UEFI、およびSecureBootモードをサポートする起動可能なisohybridイメージを生成するためのすべての手順に集中します。
前提条件
いつものように、前提条件とオプションのパッケージのインストールから始めます:
$ sudo apt-get install dumpet xorriso squashfs-tools gddrescue
UbuntuISOイメージのダウンロード
Ubuntu Linuxに基づいて独自にカスタマイズされたLinuxディストリビューションを作成する最初の部分は、公式のUbuntuISOイメージをダウンロードすることです。新しいディレクトリを作成しますcustom-ubuntu
このプロジェクトに必要なすべてのファイルを保持します。 EFIとそのSecureBoot機能はi386アーキテクチャではサポートされていないため、Ubuntu ISOイメージのamd64バージョンをダウンロードして、custom-ubuntu
内に保存します。 ディレクトリ:
$ mkdir custom-ubuntu $ cd custom-ubuntu/ $ wget http://url/to/ubuntu/image.iso
ISOコンテンツを抽出する
この段階で、公式のUbuntuISOイメージからすべてのコンテンツをマウントして抽出する必要があります。このために、xorriso
を使用します 指図。以下のxorriso
コマンドは、元のISOイメージからすべてのファイルをcustom-iso
に抽出します ディレクトリ。例:
$ xorriso -osirrox on -indev ubuntu-16.04-desktop-amd64.iso -extract / custom-iso
カスタマイズプロセス
この段階で、custom-iso
内でカスタマイズを実行します ディレクトリ。前に述べたように、これはあなたがあなたのイメージをどのようにカスタマイズするかというプロセスはあなた次第です。以下に、始めるためのヒントをいくつか示します。
-
- EFIブートローダーメニュー:
custom-iso/boot/grub/grub.cfg
- 非EFIレガシーブートメニュー:
custom-iso/isolinux/txt.cfg
- squashfsファイルシステム:
custom-iso/casper/filesystem.squashfs
- EFIブートローダーメニュー:
squashfsファイルシステムをカスタマイズするには、最初に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
chroot
を使用してsquashfsを入力します コマンドを実行し、変更を加えて終了します:
$ sudo chroot squashfs-root/ # mount none -t proc /proc; mount none -t sysfs /sys; mount none -t devpts /dev/pts
これは、新しいシステムのchroot環境内にいることを示しています。パッケージのインストールやchrootの終了などの変更を行います:
# exit exit $ sudo umount -f squashfs-root/proc squashfs-root/sys squashfs-root/dev/pts
新しいsquashfsを圧縮する:
$ sudo mksquashfs squashfs-root/ custom-iso/casper/filesystem.squashfs
起動可能なアイソハイブリッドISOイメージの作成
isohybrid MBR isohdpfx.bin
を取得します dd
を使用して元のubuntuISOイメージから コマンド:
$ sudo dd if=ubuntu-16.04-desktop-amd64.iso bs=512 count=1 of=custom-iso/isolinux/isohdpfx.bin
custom-iso
内から新しいisohybridISOイメージを作成します xorriso
を使用したディレクトリ 指図。 「。」に注意してくださいxorriso
の最後に コマンド:
$ 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.
上記のコマンドは、新しい../custom-ubuntu.iso
になります。 アイソハイブリッド画像。
画像情報の取得
すべてがうまくいけば、custom-ubuntu
これで、ディレクトリに新しいisohybridイメージcustom-ubuntu.iso
が含まれるはずです。 :
$ ls custom-iso custom-ubuntu.iso orig-iso squashfs-root ubuntu-16.04-desktop-amd64.iso
パーティションテーブル:
$ 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)
ヘッダーとカタログ情報:
$ 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検証ヘッダー:
$ 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
ブートカタログと関連するイメージパス:
# 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
新しいカスタムUbuntuイメージの起動
新しく作成されたカスタムUbuntuイメージは、レガシーBIOS、UEFIのみ、およびSecureBootオプションが有効になっているUEFIの3つのモードすべてで起動することを目的としていることに注意してください。ただし、これは保証されておらず、ハードウェアファームウェアのバグなどが原因で問題が発生する可能性があります。
新しいカスタムubuntuイメージを起動するには、結果のISOをCDディスクに書き込むか、ddrescue
を使用します USBスティックにクローンを作成するコマンド:
$ sudo ddrescue custom-ubuntu.iso /dev/sdX --force -D
これで、USBスティックにカスタマイズされたUbuntuライブシステムが含まれます。これで、USBスティックからすべてを起動する準備が整いました。