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

Leonid Krivoshein klark.devel at gmail.com
Thu Feb 27 14:42:25 MSK 2020



27.02.2020 13:04, Anton V. Boyarshinov пишет:
>> А initrd? Он в инсталляторе только один создаётся.
>> И что в меню после установки? Тоже только одно ядро?
>> Уверен, в установленной системе со вторым ядром не загрузишься, хоть
>> пакет и стоит.
>> И даже, если запускать второй раз make-initrd -k ... , будет искажённый
>> plymouth, проверено ни один раз.
> Ничто не мешает сделать initrd, в котором будут модули для двух ядер. Тем более, что в установщике они всё равно в отдельном cpio chank, а не в том, который делается make-initrd
>   

Для этого нужно править make-initrd и скрипт в установщике, который его 
вызывает. По дефолту без параметров сейчас создаётся initrd для текущего 
ядра, а с -k flavour для указанного. Нужна ручка типа -a | --all, чтобы 
создавалось для всех ядер. Или разрешить несколько -k... Или делать 
перепаковку cpio?


>>> Ин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