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 и 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 .
Enjoy! ;-)