[devel-distro] Несколько ядер в stage1 и stage2

Leonid Krivoshein klark.devel at gmail.com
Thu Feb 27 04:46:07 MSK 2020


26.02.2020 14:01, Антон Мидюков пишет:
> 26.02.2020 02:31, Leonid Krivoshein пишет:
>>
>> 25.02.2020 21:58, Антон Мидюков пишет:
>>> 26.02.2020 01:31, Leonid Krivoshein пишет:
> [...]
>>> Я застрял на том, что надо как-то ядро выбирать в syslinux, grub и 
>>> rEFInd. Подумай, как можно реализовать выбор ядер в них. В syslinux 
>>> же и поправить название ядра нельзя интерактивно?
>>
>> Интерактивно не нужно. 
>
> Нужно для проверки, работает вообще или нет :-) Я собрал 
> regular-jeos-sysv.iso с grub-efi. Интерактивно поменял имя ядра и 
> propagator.

Интерактивно, в смысле -- в его редакторе?


> Загрузился удачно. Установился тоже удачно. Установились оба ядра.

А initrd? Он в инсталляторе только один создаётся.
И что в меню после установки? Тоже только одно ядро?
Уверен, в установленной системе со вторым ядром не загрузишься, хоть 
пакет и стоит.
И даже, если запускать второй раз make-initrd -k ... , будет искажённый 
plymouth, проверено ни один раз.


> Инcталлятор править не нужно, если такое поведение устраивает, то 
> только livecd-install нужно исправить.
>
> Так что осталось только выбор ядер организовать при загрузке в 
> syslinux, grub и rEFInd.
>

Пока начал с syslinux. Самое простое -- текстовое меню. В m-p оно 
собирается из кусочков. Действия по изменению в целевом 
/syslinux/isolinux.cfg тривиальные:

label linux
   kernel alt0/vmlinuz
   append initrd=alt0/full.cz ...

Обращаем внимание на /syslinux/gfxboot.cfg (mainmenu.entries=8) и тут же 
bootlogo, ru.hlp, ru.tr.

bootlogo -- это cpio-архив с бинарём и дублем файла languages из 
/syslinux. В ru.hlp и ru.tr -- выводимое на экран. По клавише F5 
выбирается архитектура ядра -- 32 бит или 64 бит на Альт Workstation 9, 
т.е два ядра в меню syslinux поддерживалось издревле, этот 4-й syslinux 
-- та ещё поросль мха.))

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


>> То есть, кажется, в syslinux это было уже реализовано генерацией 
>> отдельных пунктов и завязано на какую-то клавишу, типа F3, F4, F5. 
> По F5 можно выбрать опции загрузки ядра: Default, Safe Settings, No 
> ACPI, No Local APIC. Не уверен, что это то место, где нужно сделать 
> выбор ядер.

Выгрыз из /syslinux/ru.hlp

F5 Ядро: выбор профиля параметров ядра.
bits
Выбор архитектуры
Вы должны выбрать, устанавливать 32-разрядную или 64-разрядную версию 
ALT Workstation 9.0.

Есть гипотеза: в /syslinux/isolinux.cfg после gfxboot указывается 
message, скорее всего, он тоже с брэндингом приезжает (тема "ALTLinux") 
и вероятно не стыкуется с данным хэлпом по клавише F5. Нужно 
поковыряться в истории гита на предмет изменений того, что этот файл 
генерирует.



>> В grub'е тоже возможна завязка на горячие клавиши, но там структура 
>> меню всё равно другой будет.
> Можешь ссылками какими-нибудь поделиться? Я ничего нужного не нашёл.

https://www.gnu.org/software/grub/manual/grub/html_node/menuentry.html#menuentry
https://www.gnu.org/software/grub/manual/grub/html_node/submenu.html#submenu

menuentry 'ALT Workstation 9' --hotkey=i ...

Гоша говорил... но вот оказывается это всё. Ещё есть vendors keys, но 
это немного о другом. Возможно, заработает на скрытых пунктах подменю, а 
там и целые скрипты писать можно.


>> Там ещё нет локализации и брэндинга, так что на grub я бы пока не 
>> ориентировался, хотя все очень ратуют ЗА него, ещё лучше к 9.1.
>
> Да, можно и нужно сделать. Но на aarch64 похоже этого не сделать.

На aarch64 пока не нужно. Хотя с брэндингом начать никогда не поздно, 
только графика для aarch64 д.б. опцией в m-p. Согласен с shaba@, что 
язык тут не нужен. Нет клиентов у этого интерфейса. Сейчас выбор языка 
всё равно делается на других шагах.


>
>> В случае refind используется конгломерат загрузчиков, как там делать 
>> -- лучше спросить у Николая Костригина и Михаила Шигорина, вроде эту 
>> мешанину собирались упорядочить и перетащить в m-p из mkimage. Если 
>> не изменяет память, второй уровень из текстовых строк в refind 
>> строить можно (типа подменю), а на первый уровень места для значков 
>> может не хватить.
>>
> Подменю нормальный вариант, что для rEFInd, что для grub.

Для grub -- да. В refind'е там странная конструкция сейчас, что-то типа 
языков руками захардкорено, но языки тут и не нужны. И есть что-то про 
iMac'и, но боюсь давно не проверялось и может не работать. По крайней 
мере, недавно жалоба была, а это субменю всё равно никто не видит.


>>
>>>
>>> Но и актуализировать надо патчи, сейчас они не наложатся. Я начну их 
>>> воскрешать. Потом нужно ещё livecd-install поправить (знаю где).
>>>
>>> По инсталлятору вопрос, как он их будет ставить? Его тоже надо будет 
>>> смотреть и править (в него не заглядывал).
>>>
>>
>> Инсталлятор ставит всё одним-двумя apt-get'ами по выбранному профилю 
>> (alterator-pkg). По-минимуму, здесь придётся поправить лишь одно: 
>> чтобы автоматически в этот выбор попадало то ядро, на котором 
>> загрузились. Иначе последующий make-initrd приведёт к не очень 
>> красивому бутсплэшу, а может, и железо будет определяться не совсем 
>> корректно, что приведёт машину к окирпичиванию. Лучше ставить все 
>> ядра и класть более универсальные initrd (у нас такой только с 
>> пропагатором идёт), а вот выбор дефолтного (симлинком в /boot) 
>> оставить пост-установочному скрипту. Это в идеале, чтобы "работало 
>> везде", но на initrd времени уйдёт больше, конечно.
>>
> 1. Я считаю, что по дефолту должно ставиться только то ядро, с которым 
> загрузились. Остальные должны удаляться до установки загрузчика. Можно 
> какую-нибудь галочку сделать, чтобы изменить это поведение. Ядра то 
> могу быть под какую-нибудь особую железку, которой другие ядра не 
> подходят. Да и не нужны пользователю кучи ядер. Нужно одно, которое 
> будет работать.
>

Одна задача: не взлетели с std-def, ребутаемся и пробуем с un-def. 
Вторая задача: запихиваем на один ISO-диск несколько загрузочных систем 
или даже архитектур (mike@ такое делал для Эльбрусов, кстати, но m-p не 
заточен под такое сейчас, только через ISO-data или переупаковкой 
руками). Хотя, сейчас он вернётся, и скажет своё веское...))


> 2. Универсальный initrd делается добавлением нужных фич. Нужно 
> определиться какие нам фичи нужны, и сделать их 
> платформо-независимыми. Но это другая задача.

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


>>> Работы много, быстро не взлететь.
>>
> Первые испытания обнадёживают :-)
>

Твоими стараниями! Спасибо!!!


-- 
Best regards,
Leonid Krivoshein.



More information about the devel-distro mailing list