На данный момент изучив различные логи сборок как свои так и чужие и оригинальный официальные
различных версий SuSE 13.2 43.3 15.0 15.1-15.5 основное отличие в логах которое явно влияет на загрузчик
это параметры при вызове /usr/bin/xorriso при этом совершенно не важно что именно прописано в
опиции firmware в конфигурационном файле, поскольку начиная с версии SuSE 15.1 разработчики
явно что-то изменили в правилах-скриптах сборки.
Если раньше в одном файле ISO использовалось два загрузчика isolinux + grub,
при чем isolinux использовался для Legacy, а grub - для UEFI, то теперь и для того
и для другого режима используется исключительно только grub.
В старых версиях SuSE 13.2 43.3 15.0 сами файлы згарзчика от версии к версии изменялись,
как минимум просто указывалась циферка текущего релиза, таким образом для релиза
SuSE 15.0 в загрузочных файлах встречается упоминание именно 15.0 (данное утверждение относится к Legacy режиму).
При этом, хоть в версих 15.1-15.5 используется для режимом Legacy и UEFI единый загрузчик
- grub, официальные сборки NET и DVD по прежнему продолжают собираться по старой схеме,
т.е. isolinux + grub для соответствующих режимов. Хоть непосредственно логи для этих сборок недоступны,
т.к. собираются из особого недокоментированного конфигурационного файла KIWI,
но если изучить содержимое сгенерированного ISO файла, то данный факт легко прослеживается.
Непонятным моментом остается лишь вопрос, почему в подобного рода сборках разработчики
продолжают использовать видоизменные файлы для загрузчика работающего в режиме Legacy,
но при этом не изменили его версию на текущую релизную 15.5 и даже не 15.0, а почему-то
используют 13.2
Поскольку самый казалось бы простой вариант изменения файлов конфигурационных и картинок
в любой официальной сборке ISO файле поддерживающей оба загрузчика isolinux + grub для режимов Legacy и UEFI
т.е. допустим 15.0 - не работает, точнее ISO образ после такого рефакторинга с помощью UltraISO
хоть и загружается, и даже отображает нужный вид меню, но вот дальнейшая работа становится невозможной,
т.к. сам файл LiveOS\squashfs.img перестает загружаться, хотя его изменение является следующим шагом,
а на текущем шаге я лишь пытаюсь получить нужный вид загрузчика для различных режимов работы.
Таким образом, после многочисленных различных попыток решить мою задачу я пришел к выводу,
что проще видимо будет это делать в обход стандартной процедуры генерации ISO на строне OBS,
т.е. создавать свой ISO файл внутри генерируемого стандартным сопособом ISO файла средствами OBS.
Для решения данной подзадачи я набросал скрипт который по сути повторяет все шаги из логов
сборки SuSE 15.0, при этом ключевым моментом тут является именно вызов /usr/bin/xorriso
с нужными параметрами
/usr/bin/xorriso -application_id 0x796b655a -publisher SUSE LINUX GmbH -preparer_id KIWI - https://github.com/OSInside/kiwi -volid NikotinRed7_S.u.S.E._linux_image -joliet on -padding 0 -outdev /usr/src/packages/KIWI-iso/NikotinRed7_S.u.S.E._linux_image.x86_64-1.1.0.iso -map /usr/src/packages/KIWI-iso/live-media.clyk9npp / -boot_image isolinux bin_path=boot/x86_64/loader/isolinux.bin -boot_image isolinux system_area=/usr/share/syslinux/isohdpfx.bin -boot_image isolinux partition_table=on -boot_image any partition_offset=16 -boot_image any cat_path=boot/x86_64/boot.catalog -boot_image any cat_hidden=on -boot_image any boot_info_table=on -boot_image any platform_id=0x00 -boot_image any emul_type=no_emulation -boot_image any load_size=2048 -append_partition 2 0xef /usr/src/packages/KIWI-iso/live-media.clyk9npp/boot/x86_64/efi -boot_image any next -boot_image any efi_path=--interval:appended_partition_2:all:: -boot_image any platform_id=0xef -boot_image any emul_type=no_emulation
По завершению сборки OBS я получаю ISO файл фейковый, в котором лежит уже нужный мне мой правильный ISO,
грузясь с которого я получаю нужный мне вид загрузочного меню для соответсвующих режим Legacy и UEFI.
Таким образом первая часть моей изначальной проблемы можно сказать что решена, и мы переходим к следующей проблеме - правильной генерации контента
загружаемого Live образа системы.
Данную задачу я бы разделили на несколько подзадач:
- Нужно уточнить теорию логики формирования файлов
boot/x86_64/loader/initrd
, boot/x86_64/loader/linux
и их связи с LiveOS/squashfs.img
В конфигурационных файлах boot/x86_64/loader/isolinux.cfg
и boot/grub2/grub.cfg
я вижу лишь упоминание о boot/x86_64/loader/initrd
и boot/x86_64/loader/linux
,
но не понимаю как именно и в какой момент вызывается LiveOS/squashfs.img
- Нужно уточнить теорию логики формирования самого файла
LiveOS/squashfs.img
Полагаю, что было бы гораздо эффективнее не собирать контент каждый раз с нуля, а допустим
закидывать в OBS подобный файл и обновлять в нем лишь некоторые пакеты.
- OBS - конечно вещь хорощая и полезная, но коли мне приходится теперь уже по сути самому все ручками прописывать и указывать для сборки,
то наверное проще было бы это делать локально на своей машине с установленной SuSE.
Поэтому возникает вопрос: Как именно настроить свою локальную тачку для сборки ISO файлов по аналогии с OBS
(нужна пошаговая инструкция, список пакетов для установки, скрипты для конфигурации и пример сборки простого ISO локально)
Для начала я бы также наверное использовал временно для отладки сетевые пути на официальные репозитории, а в последствии
как-то бы скачал и использовал локальные или вообще бы как-то настроить сборку чтобы использовались только те пакеты,
которые уже установлены в текущей системе на которой и производится генерация нового ISO
Пожалуйста, если у кого-либо есть информация по какому-либо из выше перечисленых 3х подзадач - прошу поделиться информацией и помочь мне решить эти подзадачи.