Модификация установочного ISO образа

Материал из ALT Linux Wiki
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Модификация установочного ISO образа

На примере Альт Рабочая станция 9.0 и Альт Рабочая станция 10 https://getalt.org/ru/alt-workstation/

Установка пакетов

# apt-get install xorriso squashfs-tools cdrkit-utils genisoimage

Скачивание образа

Скачать Альт Рабочая станция 9.0

$ wget https://mirror.yandex.ru/altlinux/p9/images/workstation/x86_64/alt-workstation-9.0-x86_64.iso

Скачать Альт Рабочая станция 10.1

$ wget https://mirror.yandex.ru/altlinux/p10/images/workstation/x86_64/alt-workstation-10.1-x86_64.iso

Получение информации об образе

Данная информацию необходима для анализа исходного образа и указания соответствующих значений при обратной запаковке образа

$ isoinfo -d -i путь_к_файлу.iso
$ xorriso -indev путь_к_файлу.iso -toc -pvd_info

Примеры выводов для Альт Рабочая станция 9.0:

Вывод команды isoinfo:
CD-ROM is in ISO 9660 format
System id: LINUX
Volume id: ALT Workstation 9.0 x86_64
Volume set id: ALT
Publisher id: BASEALT LTD
Data preparer id: XORRISO-1.5.4 2021.01.30.150001, LIBISOBURN-1.5.4, LIBISOFS-1.5.4, LIBBURN-1.5.4
Application id: ALT WORKSTATION 9.0 X86_64 2023-01-26
Copyright File id: LICENSE_ALL_HTML
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: 3565951
El Torito VD version 1 found, boot catalog is in sector 1172
Joliet with UCS level 3 found
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 495 1173
Вывод команды xorriso:
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :    4149 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'alt-workstation-9.0-x86_64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Media summary: 1 session, 3565951 data blocks, 6965m data,  229g free
Volume id    : 'ALT Workstation 9.0 x86_64'
Drive current: -indev 'alt-workstation-9.0-x86_64.iso'
Drive access : exclusive:unrestricted
Drive type   : vendor 'YOYODYNE' product 'WARP DRIVE' revision 'FX01'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Media blocks : 3565951 readable , 120293428 writable , 123859380 overall
Boot record  : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Boot catalog : '/boot/grub/boot.cat'
Boot image   : '/boot/grub/bios.img' , boot_info_table=on , grub2_boot_info=on
Boot image   : '/EFI/.efiboot.img' , platform_id=0xEF 
ISO offers   : Rock_Ridge Joliet
ISO loaded   : Rock_Ridge
TOC layout   : Idx ,  sbsector ,       Size , Volume Id
ISO session  :   1 ,         0 ,   3565951s , ALT Workstation 9.0 x86_64
Media summary: 1 session, 3565951 data blocks, 6965m data,  229g free
Media nwa    : 3565952s
Drive current: -indev 'alt-workstation-9.0-x86_64.iso'
PVD address  : 16s
Volume Id    : ALT Workstation 9.0 x86_64
Volume Set Id: ALT
Publisher Id : BASEALT LTD
Preparer Id  : XORRISO-1.5.4 2021.01.30.150001, LIBISOBURN-1.5.4, LIBISOFS-1.5.4, LIBBURN-1.5.4
App Id       : ALT WORKSTATION 9.0 X86_64 2023-01-26
System Id    : LINUX
CopyrightFile: LICENSE_ALL_HTML
Abstract File: 
Biblio File  : 
Creation Time: 2023012610542500
Modif. Time  : 2023012610542500
Expir. Time  : 0000000000000000
Eff. Time    : 0000000000000000

Распаковка образа

Распаковка образа осуществляется в указанную нами директорию (в примере altcustom), где мы сможем править содержимое нашего будущего образа.

$ mkdir altcustom
$ xorriso -osirrox on -indev путь_к_файлу.iso -extract / altcustom

Разрешаем правку владельцу:

$ chmod 700 -R ~/altcustom

Содержимое образа

В каталоге altcustom/ можно увидеть содержимое распакованного образа:

altinst <-- Файл образа
ALTLinux
boot
docs
EFI
index.html
license.all.html
license.ru.html
live <-- Файл образа
Metadata
rescue <-- Файл образа
syslinux

Для перепаковки, в первую очередь, интерес представляют squash-образы:

altinst
live
rescue

и каталог:

ALTLinux/

altinst — базовый образ для установки системы
live — образ для запуска LiveCD
rescue — образ для запуска RescueCD
ALTLinux/ — содержит набор пакетов для установки системы

Изменение содержимого образа

Примечание: Распаковку и упаковку squash-образов следует проводить исключительно от пользователя root


Для примера, распакуем образ altinst:

$ su -
# cd /home/user <-- куда мы скопировали каталоги
# unsquashfs altcustom/altinst

При этом в текущем каталоге будет создан дополнительный каталог squashfs-root/ с содержимым этого образа.

Запаковать образ обратно можно так, предварительно удалив существующий образ:

# rm -f altcustom/altinst
# mksquashfs squashfs-root/ altcustom/altinst

Добавить свои пакеты в набор устанавливаемых пакетов можно по специальному разделу из статьи Autoinstall.

Создание ISO

Когда все манипуляции с образом будут выполнены, убедитесь, что в каталоге не осталось лишних файлов, и приступайте к сборке образа.

Чтобы новый ISO сохранил возможность запускаться с флешек, необходимо из исходного ISO получить гибридный MBR:

# dd if=путь_к_файлу.iso of=altcustom/syslinux/isohdpfx.bin bs=512 count=1

После этого можно создавать гибридный ISO образ:

Примечание: Замените значения параметров volid и appid на свои, полученные на этапе анализа исходного образа

Создание образа на основе Альт Рабочая станция 9.0

# cd altcustom/
# xorriso -as mkisofs -joliet -partition_cyl_align "off" -partition_offset 16 -iso-level 3 -full-iso9660-filenames -sysid "LINUX" -volid "ALT Workstation 9.0 x86_64" -volset "ALT" -publisher "BASEALT LTD" -appid "ALT WORKSTATION 9.0 X86_64 2019-10-22" -copyright "LICENSE_ALL_HTML" -eltorito-boot syslinux/isolinux.bin -eltorito-catalog syslinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -isohybrid-mbr syslinux/isohdpfx.bin -eltorito-alt-boot -efi-boot EFI/.efiboot.img -no-emul-boot -isohybrid-gpt-basdat -output ../alt-custom.iso .

Создание образа на основе Альт Рабочая станция 10.1

# cd altcustom/
# xorriso -as mkisofs -joliet -partition_cyl_align "off" -iso-level 4 -full-iso9660-filenames -sysid "LINUX" -volid "ALT Workstation 10.1 x86_64" -volset "ALT" -publisher "BASEALT LTD" -appid "ALT WORKSTATION 10.1 X86_64 2023-01-26" -copyright "LICENSE_ALL_HTML" -eltorito-boot boot/grub/bios.img -eltorito-catalog boot/grub/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info --protective-msdos-label --grub2-mbr syslinux/isohdpfx.bin -eltorito-alt-boot -efi-boot-part --efi-boot-image boot/grub/bios.img -e EFI/.efiboot.img  -no-emul-boot  -output ../my-alt-custom.iso .

Ссылки

  1. https://wiki.archlinux.org/index.php/Remastering_the_Install_ISO_(Русский)
  2. https://linuxconfig.org/legacy-bios-uefi-and-secureboot-ready-ubuntu-live-image-customization