[devel-distro] netstart: ядро+initrd для сетевой загрузки других дистрибутивов

Антон Мидюков midyukov-anton at ya.ru
Mon Sep 13 06:48:06 MSK 2021


13.09.2021 09:25, Leonid Krivoshein пишет:
> 
> 13.09.2021 4:27, Антон Мидюков пишет:
>> 13.09.2021 06:01, Leonid Krivoshein пишет:
[...]
>>> 2. С его помощью можно тестировать сетевую загрузку силами сообщества на очень разном железе.
>> Можно, но нужно, чтобы сервер отдавал быстро образы. Наверное, стоит использовать зеркало яндекса.
> 
> Да. А nightly там тоже зеркалируется? В netstart хорошо бы ещё и зеркало выбирать сразу.
> 

Пока только nightly.altlinux.org/sisyphus/ и nightly.altlinux.org/p9
Но мы это собирались исправить.

> 
>>> 3. Потенциально можно отказаться от main repo на диске и использовать сетевой репозиторий, тогда и установочный диск станет очень небольшим, а ставиться будет лишь актуальная пакетная база. Для Сизифа это особенно интересная возможность, т.к. он меняется непрерывно.
>> Это отдельная задача же. Реализуется правкой инсталятора. Но, как гарантировать, стабильность установки в условиях изменяющейся пакетной базы, вопрос актуальный.
> 
> Уточню: стабильность установки в течении недели до выпуска следующей партии регулярок. Никак. Но на то он и Сизиф. :-)
> 
> 
>>> 4. Сильно упрощается жизнь желающим попробовать сразу несколько регулярок или стартеров. В перспективе это можно использовать и для продуктов.
>>>
>>> II. Ограничения.
>>>
>>> 1. Модули ядра в stage2 загружаемого дистрибутива должны соответствовать ядру и набору модулей в netstart. Хотя, я загружался и без полного соответствия.
>> Главное, чтобы совпадала версия ядра.
>>
>>> 2. Бесполезно задавать ramdisk_size=... -- размер скачиваемого образа заранее неизвестен. Данная проблема уже решена: нужно просто не указывать этот аргумент изначально и для методов http/ftp будет закачиваться образ в /run/boot-image.iso (tmpfs).
>> Отлично. Но я пока не проверял. Торопишься с анонсом :-)
> 
> Вообще я проверил, но только на rescue. Теперь надо снова проверять с RT-ядром и желательно сразу сетевую загрузку live.
> 
> 
>>> 3. Параметры запуска каждого пункта загрузочного меню дистрибутива определяются в netstart, но сейчас это не мульти-загрузочный диск. Например, stagename=live бесполезно указывать в /proc/cmdline, т.к. заранее неизвестно, какой пункт какого дистрибутива будет загружаться.
>> Нужна возможность задавать в altboot.
>>
> 
> Выбирать на шаге netstart, который будет альтернативой шагу altboot.

Нет. Надо добавить поле stagename на шаге указывания пути до сервера и образа. Зачем усложнять на ровном месте?

> 
>>> 4. Сейчас приходится добивать руками конечную часть пути к скачиваемому ISO-образу дистрибутива, тут легко ошибиться. Да и вообще надо знать, что и откуда скачивать. Проще выбирать, а не набивать.
>> Было бы здорово получать список на выбор.
>>
>>> III. Предложение к обсуждению.
>>>
>>> Для поддержки netstart можно с пачкой ISO'шников выкладывать на сервер текстовый файл, который будет описывать загружаемые дистрибутивы и предлагаемые ими пункты меню. Тогда через bootchain можно будет загружаться так: bootchain=fg,netstart. Здесь netstart -- это шаг, который скачивает описание с ftp/http-сервера и формирует необходимые диалоги. Возможно, лучше даже не выкладывать описание на сервер, а включать его в образ stage1, поскольку конкретный netstart пригоден для вполне конкретной пачки ISO'шников и только для той же архитектуры. Изменить таким способом получится 
 н
>>   е все параметры /proc/cmdline, а только те, что известны заранее, типа automatic, stagename или lowmem.
>>
>> Есть же MD5SUM. Может ориентироваться на него и за одно проверять контрольную сумму?
> 
> Сначала я тоже так думал: взять его за основу, отфильтровать неподходящие под netstart-диск архитектуры. Но информации в нём явно недостаточно. Есть только имена файлов и контрольные суммы MD5. Для ISO-образов они традиционно привычны, но предпочтительно использовать хотя бы SHA-256 во-избежании коллизий. На nightly считаются такие же бесполезные SHA-1. Нет размеров файлов, описаний дисков, списка доступных вариантов загрузки (пунктов меню), соответствующих им опций загрузки.

Хорошо, буду выкладывать ещё и SHA256SUM.
Мне кажется, что эти плюшки уже через чур.
По крайней мере на первом этапе, это не нужно.

> 
> 
>> А список получать при условии, что указан не образ, а каталог или же заданный образ не существует?
> 
> А как идея зашивать список в образ самого netstart? Можно реализовать оба варианта: если не зашит, тогда скачивать с сервера. Если указаны все параметры, необходимые для загрузки конкретного образа, использовать обычный синтаксис bootchain=fg,altboot automatic=... stagename=..., а список нужен, чтобы внутри make-initrd сформировать параметры для последующих шагов altboot и оптимизировать загрузку. Например, не все сервера отдают корректный размер файла, вообще его могут не все отдавать, к тому же это лишнее обращение к серверу.
> 

Не надо вводить новых шагов, тогда не нужен будет и список с настройками, только сам список.

> 
>> automatic переопределять, думаю, не нужно, как и lowmem. Достаточно только stagename, в том же шаге,
>> где прописываем путь до образа.
> 
> Именно в automatic=... указывается почти всё самое важное: сервер, путь к образу, как же его не переопределять.

Путь к образу и серверу то зачем? Стандартные зашиваем. Может список серверов, кстати, сделать для метода http?
Что касается методов, то у нас четыре варианта в субменю grub.

> 
> 
>> Также зачастую на образе есть только один из вариантов stage2. Можно перебирать последовательно: altinst, live, rescue.
>> Для регулярок это актуальная фича.
> 
> Типа stagename=auto?

Типа, если не указан stagename=такой-то.


-- 
С уважением, Антон Мидюков <antohami �� altlinux.org>


More information about the devel-distro mailing list