Usermode-fs-tools/iso2stick
iso2stick -- достаточно мощный конвертер, у которого много разных возможностей. Он перепаковывает официальные образы дистрибутивов ALT (в формате ISO-9660) в загрузочные образы USB-стиков (HDD-дисков). Для использования данной утилиты не требуется полномочий root, необходим только один пакет: usermode-fs-tools (в первую очередь пакет создавался ради этого скрипта-конвертера на POSIX shell размером более 1200 строк).
Формальное описание
$ iso2stick -h Usage: iso2stick [<options>...] [--] <iso9660> <image> [<size>] Options: -b, --bios-only Make BIOS-only boottable system on x86. -D, --datadir=<PATH> Add specified files to the boot disk. -d, --dual-boot Add both 32-bit and 64-bit UEFI firmware boot loaders for 64-bit target system, such as x86_64 or aarch64. -e, --excludes=<FILE> Set list for exclude files from ISO-9660. -f, --files=<FILE> Set list for include files from ISO-9660. -g, --guid-gpt Use GUID/GPT disk label instead BIOS/MBR. -m, --mode=<MODE> One of the followed repack modes: rescue, deploy, install, live, install+rescue, install+live or install+live+rescue. -L, --lang=<LIST> List of the languages, for example: '"ru_RU=Russian" "en_US=English"'. -l, --initlang=<CODE> Initial/default language code ('ru_RU' used by default). -n, --no-clean Keep temporary files on exit. -P, --pad-space Fill free space on EFI-part by zero's. -q, --quiet Suppress additional diagnostic. -r, --reserved=<SIZE> Reserved space on the boot disk, in MiB. -S, --swap=<SIZE> Specify SWAP partition size, in MiB. -s, --secure-boot Use ALT shim's for UEFI Secure Boot. -T, --timeout=<SECS> Specify boot menu timeout, in seconds. -t, --target=<ARCH> Use specified target architecture: i586, x86_64, aarch64, armh, ppc64le or e2k/v4. -U, --uuid=<UUID> Specify UUID of the ROOT filesystem. -u, --uefi-only Make UEFI-only boottable system on x86. -v, --version Show this program version and exit. -h, --help Show this help message and exit. Please, report bugs to https://bugzilla.altlinux.org/
Ключевые возможности
- Для запуска не требуется полномочий root, операция выполняется обычным пользователем.
- По умолчанию размер создаваемого образа стремится к минимуму, т.е. на нём не останется свободного места.
- Но можно указать явно, сколько мегабайт необходимо зарезервировать либо задать требуемый размер образа.
- Замена конгломерата загрузчиков с графикой только одним без графики: в ряде случаев это увеличивает надёжность.
- Единое меню при любых вариантах загрузки: генерируется само либо создаётся на основе пользовательского шаблона.
- Можно "оторвать" неподходящий режим загрузки, препятствующий решению некоторой задачи на "железе".
- Можно убрать не нужные файлы второй стадии загрузки, сократив размер диска и число пунктов загрузочного меню.
- Можно добавить указанные файлы на создаваемый образ диска.
- Можно заменить некоторые файлы в создаваемом образе диска.
- Можно передать набор своих скриптов-хуков, выполняемых непосредственно перед созданием образа.
- Можно конвертировать диски, предназначенные для другой аппаратной платформы.
Пока не реализованы
- Возможность углубляться в образы initrd (первая стадия загрузки) и squashfs (вторая стадия загрузки).
- Возможность замены устаревшего и ненадёжного propagator новыми скриптами make-initrd.
- Возможность перепаковки initrd другими инструментами в тех случаях, когда make-initrd не подходит.
- Возможность исправления "на лету" уже известных багов в определённых установочных образах.
РОДНОЙ режим ('native')
Режим работы программы "родной"/"чужой" определяется автоматически в процессе работы. В родном режиме (например, когда мы сидим на ppc64le и конвертируем ISO-образ для того же ppc64le) основные требования определяются утилитой grub2dirs. На Эльбрусах можно конвертировать образы только в родном режиме, т.к. на них обычно не ставится grub. Конвертирование образов для i586 на x86_64 также считается нативным.
ЧУЖОЙ режим ('foreign')
Интересной особенностью утилиты является возможность конвертирования образов на одной аппаратной платформе для другой аппаратной платформы. Например, операцию можно выполнить, сидя за компьютером x86_64, конвертируя диск для платформы aarch64. Данная возможность доступна с оговорками: в хостовой системе должен быть установлен grub и на исходном диске ISO-9660 в репозитории /ALTLinux/RPMS.main должны находиться требуемые RPM-пакеты, в основном, связанные с загрузчиком grub. Это ограничение действует для любых целевых носителей, кроме e2k/e2kv4. Другими словами: для конвертирования образов e2k/e2kv4 на другой платформе никаких особых требований нет, но использовать Эльбрус в качестве хостовой системы для других архитектур без установленного grub не выйдет, для остальных аппаратных платформ исходный ISO-диск должен быть установочным дистрибутивом ALT.
Командная строка
Синтаксис: iso2stick [<опции>...] <что-конвертируем> <во-что-конвертируем> [<размер>], где:
- <опции> -- изменяют принятые умолчания, необязательны и будут подробно описаны далее;
- <что-конвертируем> -- файл исходного образа ISO-9660 с дистрибутивом Альт (другие не подойдут) либо смонтированный каталог CD/DVD с файлами, находящимися на исходном диске;
- <во-что-конвертируем> -- создаваемый IMG-файл либо каталог, в который будет сложен создаваемый образ usbstick.img вместе с файлами контрольных сумм -- SHA256 (checksum.256) и MD5 (checksum.MD5).
- <размер> -- размер основного (корневого) раздела. Если не указывать, стремится к минимуму. По умолчанию в мегабайтах, но можно использовать буквенные сокращения после цифры: K-килобайты, M-мегабайты, G-гигабайты, T-терабайты.
В случае успеха программа завершается с нулевым кодом возврата.
Пример использования:
$ iso2stick ~/iso/alt-workstation-9.1-i586.iso . $ ls -1 checksum.256 checksum.MD5 unpack.log usbstick.img
TMPDIR
Полученный образ вместе с журналом распаковки и файлами контрольных сумм попадёт в указанный каталог только после успешного окончания операции. До этого программа работает с образами во временном каталоге, ориентируясь на переменную окружения TMPDIR, а если она не определена, то на каталог /tmp. В TMPDIR необходимо иметь столько свободного места, чтобы было достаточно для размещения удвоенного объёма исходных файлов (ISO-9660 плюс ваши файлы) * 2. Если на TMPFS недостаточно свободного места, переопределите TMPDIR перед запуском программы:
$ TMPDIR=$HOME/tmp iso2stick ~/iso/alt-workstation-9.1-i586.iso . # либо так: $ export TMPDIR=$HOME/tmp $ iso2stick ~/iso/alt-workstation-9.1-i586.iso .
-n, --no-clean
По умолчанию, когда программа завершается, все файлы из временного каталога удаляются. Чтобы изменить это поведение, например, для детального анализа, в отладочных целях, используйте ключ --no-clean.
-q, --quiet
По умолчанию программа и все вызываемые ей утилиты выводит все отладочные сообщения в stdout и stderr. Чтобы изменить это поведение и сделать её менее "говорливой", используйте ключ --quiet. Примеры:
# Тихий запуск: $ iso2stick -q ~/iso/alt-workstation-9.1-i586.iso . # Тихий, но с созданием отчёта (для скриптов): $ iso2stick ~/iso/alt-workstation-9.1-i586.iso . >mkstick.log 2>&1 # С выводом в консоль и созданием отчёта: $ iso2stick ~/iso/alt-workstation-9.1-i586.iso . 2>&1 |tee mkstick.log
Политики копирования исходных файлов
При копировании файлов с исходного носителя применяется одна их двух политик:
- Политика "включения нужного" (INCLUDES) -- применяется по умолчанию
- Политика "исключения не нужного" (EXCLUDES) -- применяется, когда указан соответствующий ключ
Ядро Linux и файл первой стадии загрузки (initrd) всегда копируются, независимо от выбранной политики.
-e, --excludes=
Предписывает применить политику "исключения не нужного". Дополнительно следует указать файл с исключениями. Диск будет скопирован целиком, со всеми файлами стадий, кроме mediacheck, в исключения попадёт всё, что вы перечислите в файле исключений плюс все объекты файловой системы, связанные с загрузкой. Пример:
$ cat >EXCLUDES.lst <<EOF ALTLinux altinst EOF $ iso2stick -e EXCLUDES ~/iso/alt-workstation-9.1-i586.iso .
Здесь будет скопировано всё содержимое диска за исключением каталога ALTLinux, второй стадии загрузки с инсталлятором altinst и файлов, связанных с загрузкой.
-f, --files=
Предписывает применить политику "включения нужного", хотя она и так используется по умолчанию. Дополнительно следует указать файл с перечислением нужных файлов и каталогов, которые должны попасть на целевой носитель. К ним всегда добавляется подкаталог .disk, нужные файлы стадий, которые определяет выбранный режим конвертирования (см. следующий раздел), а если среди стадий есть установщик, то будет скопирован и каталог ALTLinux с базой RPM-пакетов. Пример:
$ cat >INCLUDES.lst <<EOF ALTLinux altinst EOF $ iso2stick -f INCLUDES ~/iso/alt-workstation-9.1-i586.iso .
Здесь наоборот, копируется только squashfs инсталлятора altinst и база RPM-пакетов плюс скрытый каталог .disk.
Режимы конвертирования
Режим конвертирования определяет, что именно должно попасть из исходного образа, и какие пункты следует добавить в загрузочное меню. Следует отметить, что при выборе политики "исключения не нужного", явный выбор режима конвертирования оказывает влияние только на формирование начального загрузочного меню.
-m, --mode=
По возможности программа сама пытается определить нужный режим конвертирования, но можно задать его явно после опции --mode. Поддерживаются следующие режимы (указываются в нижнем регистре целиком либо только сокращение, см. в скобках):
- (R) rescue
- (D) deploy
- (I) install
- (L) live
- (IR) install+rescue
- (IL) install+live
- (ILR) install+live+rescue
iso2stick --mode=rescue ~/iso/alt-workstation-9.1-i586.iso .
Здесь с исходного диска будет скопирован только файл второй стадии со спасательной системой ALT Rescue, в начальное загрузочное меню попадут только те позиции, что связаны с ALT Rescue.
ВНИМАНИЕ: СТАТЬЯ ЕЩЁ НЕ ЗАКОНЧЕНА!!!
Enjoy! ;-)