Как настроить LiveCD проект и config.kiwi чтобы иметь загрузчик многофункциональный

Так предыдущий автор утверждал чтобы получить меню загрузчика которое мне нужно достаточно добавить опции

firmware="bios"
editbootconfig="isopatch.sh"

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

Так у вас вся проблема в том, что вам нужен именно gfxboot? Он используется только при генерации образа для BIOS. Укажите в <preference><type ... firmware="bios">

Под EFI всегда используется grub2.

А вот это я вообще не понял почему, ведь я ничего такого особого не делал и точно такой же проект у меня в другой ветке сегодня утром собирался без проблем, не понимаю что это за ошибка.

Ну так вы этого и не сделали (по крайней мере, в Test001.

Test001 я перезапустил с этой опцией минут 15 назад, сейчас соберется и посмотрим что ничего не помнялось, т.к. я уже выполнял все эти манипуляции в разных комбинациях в других ветках других проектах.

Откуда взяться пакетам, если репозиторий openSUSE_Leap_15.1 удалён из проекта home:AndnoVember:LXQt волной чистки OBS, прокатившейся не так давно. Проект находится в зависимостях к сборке именно с репозиторием openSUSE_Leap_15.1.

Это уже не на что не похоже.
Повторяю первый пост:

Ну, не случайно ведь были закомментированы строки:

#sed -i '0,/\$linux/s/\(quiet\)/\1 lang=ru_RU/' ${grubcfg}
#sed -i '0,/\$linux/s/\(quiet\)/\1 lang=ru_RU/' ${efi_grubcfg}

Ну, нет этих файлов, если выбрать firmware=“bios”, нечего редактировать.

Получилось создать загрузочное меню с дополнительными настройками:

  • выбором языков (и установкой дефолтного Русского языка)
  • выбор разрешения экрана (пока не знаю как выставить дефолтное хотя бы на 1024х768)
  • выбор носителя (не понял как выставить CD/DVD/NET)
  • выбор драйверов (отдельная тема, тоже непонятная)

Само же меню имеет стандартные пункты, но не понятно как туда добавить memtest,
но еще больше не понятно как добавить пункт “установка”, т.е. Live - есть и это хорошо,
но нужен еще пункт и Install.

Важным и непонятным моментом является несоответствие внутренней структуры каталогов
и файлов в моем генерируемом ISO и тем что получилось когда-то у AndnoVember, а именно
с его проектом Lumina-Leap-15.1-Live-CD.x86_64-0.0.1-EFI-Build19.114.iso. Кроме того внутренняя структура каталогов и файлов отличается
от официальных образов Live/Net/DVD.

Ставя опции firmware значение “bios” полностью отключает режим EFI/UEFI судя по содержимому генерируемого образа,
но в проекте Lumina значение этой опции установлено как “uefi” и при этом в его сгенерированном ISO
файле поддерживается как EFI/UEFI режим так и Legacy, и в добавок при этом внешний вид загрузчика остается
именно тем который мне нужен с дополнительными элементами настройки и с Русским языком.
Как такое возможно - я не понимаю ?!

Может быть кто-нибудь подскажет как добиться внешнего вида загрузчика со значениями по умолчанию
(Русский язык,1024х768,CD) и основных меню Live + Install + Memtest, и при этом чтобы
сохранилась правильная структура каталогов генерируемого ISO с поддержкой и Legacy и EFI/UEFI x86_64 ?!

PS:Заметил отличие в логах сборки, в одном случае

с включенной firmware=“uefi”
[ 91s] [ INFO ]: 12:35:17 | Creating grub2 live ISO config file from template

а в другом случае
с включенной firmware=“bios”
[ 100s] [ INFO ]: 12:14:07 | Creating isolinux live ISO config file from template

Почему не используется и в том и другом случае grub2 + gfxterm ?


Собралось и вроде как получилось, но не совсем. Описал подробное что есть и проблемы в посте выше.
Посмотрите пожалуйста, может что дельное подскажите.

В обоих проектах используется единые настройки ProjectConfig
отличие лишь заключается в том, что изменяется значение параметра firmware в файле config.kiwi и соответсвенно для этого нужно либо раскомментировать либо на оборот закомменнтировать последние 2 строки в файл isopatch.sh выполняющие команды “sed”

Проанализировать различные ISO официальные и сторонние сборки - прихожу к выводу что начиная с версии openSuSE 15.1 официалы внесли изменения в правила формирования загрузочных ISO. Такми образом, указанный проект Lumina-Leap-15.1-Live-CD.x86_64-0.0.1-EFI-Build19.114.iso как раз таки успел собраться до этих изменений и поэтому его структура каталогов и файлов идентичны официальным.

Как бы узнать что именно поменялось чтобы добавить/изменить свой проект, чтобы получить точно такую же структуру каталогов генерируемого моего ISO при том же самом нужном мне виде загрузочного меню со всеми дополнительными элементами и настройками ?!

Я так подозреваю, в gfxboot.cfg

Я думаю, там же

Я не знаю, что именно вы называете “выбор драйверов”. Если DUD - смотрите утилиту mkdud, там есть ссылка на какую никакую документацию.

Вам уже несколько раз отвечали, что для этого необходимо отредактировать стандартное меню для чего и используется скрипт editbootconfig.

Насколько я могу судить, kiwi не умеет генерировать образ, который делает и то, и другое. И в любом случае, Install в исполнении kiwi - это просто распаковка готового образа на раздел диска.

Генерация официальных образов установки не использует kiwi вообще. Содержимое установочного образа - это отдельный архив из независимого проекта. Собственно, я вам это уже говорил в параллельной английской ветке.

В Live 15.5 для x86_64 загрузчик - grub2 как для legacy BIOS, так и для UEFI. Откуда там остатки isolinux - я не знаю, подозреваю, что из-за

%ifarch x86_64
# Not entirely sure why this is here
Preinstall: syslinux gfxboot
%endif

Позволю себе предположить, что это связано с

commit dab7b8732aa5c1febca1e1b225db9e9959666dd6
Author: Marcus Schäfer <marcus.schaefer@gmail.com>
Date:   Wed Jun 26 09:15:39 2019 +0200

    Refactor ISO boot, use grub in EFI mode
    
    Before this commit isolinux was used to boot an ISO and
    thus forms a hard requirement.
...
    With this change in place it's possible to control the ISO
    boot layout through the firmware setup

Legacy прекрасно поддерживается - используется grub2. Если кровь из носу нужен gfxboot - делайте свой готовый архив и создавайте “образ инсталляции openSUSE”. В этом архиве собственно и меню какое угодно может быть.

Потому что kiwi так работает.

По моему вы хронически отказываетсь понимать простую вещь - gfxboot поддерживает загрузку только в режиме legacy BIOS, поэтому в режиме EFI его быть не может в принципе. И если gfxboot является вашим абсолютным требованием, то вы может сгенерировать только образ для заагрзуки в режиме legacy BIOS, что kiwi вам успешно и делает.

На данный момент изучив различные логи сборок как свои так и чужие и оригинальный официальные
различных версий 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 образа системы.

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

  1. Нужно уточнить теорию логики формирования файлов 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
  2. Нужно уточнить теорию логики формирования самого файла LiveOS/squashfs.img
    Полагаю, что было бы гораздо эффективнее не собирать контент каждый раз с нуля, а допустим
    закидывать в OBS подобный файл и обновлять в нем лишь некоторые пакеты.
  3. OBS - конечно вещь хорощая и полезная, но коли мне приходится теперь уже по сути самому все ручками прописывать и указывать для сборки,
    то наверное проще было бы это делать локально на своей машине с установленной SuSE.
    Поэтому возникает вопрос: Как именно настроить свою локальную тачку для сборки ISO файлов по аналогии с OBS
    (нужна пошаговая инструкция, список пакетов для установки, скрипты для конфигурации и пример сборки простого ISO локально)
    Для начала я бы также наверное использовал временно для отладки сетевые пути на официальные репозитории, а в последствии
    как-то бы скачал и использовал локальные или вообще бы как-то настроить сборку чтобы использовались только те пакеты,
    которые уже установлены в текущей системе на которой и производится генерация нового ISO

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