[devel] Запрос на фичу liveboot в make-initrd
Alexey V. Vissarionov
gremlin на altlinux.org
Чт Апр 12 16:33:35 MSK 2018
On 2018-04-11 22:41:11 +0300, Leonid Krivoshein wrote:
>> Коллеги, а вот кто может внятно объяснить, зачем вообще
>> может быть нужен initrd при загрузке с локального носителя
>> (непосредственно подключенного к компутеру)?
> Это же очевидно: чтобы смонтировать корневую файловую систему,
> необходимы модули для работы с диском и этой файловой системой,
Досюда все правильно.
> а для чтения модулей необходима файловая система, с которой
> этот модуль читается. :)
Ну и что мешает вкомпилировать в ядро поддержку наиболее типового
железа? Да и вообще - всех модулей, у которых при вкомпилячивании
в ядро появляется дополнительная функциональность (так, например,
CONFIG_MD_RAID{0,1,10,456}=y дает включить CONFIG_MD_AUTODETECT,
который, в свою очередь, позволяет держать корень на зеркале безо
всяких костылей). Ы?
> В альте всё собирается модулями, а не зашивается в ядро.
Да блинский блин... Я не призываю вкомпилячивать в ядро абсолютно
все, что есть в ядре (прежде всего потому, что достоверно знаю о
том, что некоторые модули ведут себя по-разному, и их поведение не
всегда становится лучше) - я делюсь _своим_ _собственным_ _опытом_
(довольно значительным, ага) эксплуатации самого различного железа,
от ультрабюджетного до махрово энтерпрайзнутого.
Ну и самое главное: вкомпилячивание в ядро самых востребованных
модулей не отменяет CONFIG_MODULES=y и CONFIG_BLK_DEV_INITRD=y -
они прекрасно уживаются в одном ядре.
> И в этом есть рациональное зерно (см. далее). Так делается по
> умолчанию и во всех известных мне дистрибутивах.
Ага... в шляпе - "мы так делаем с 1994 года", у всех остальных -
"в шляпе делают так, значит и мы будем делать так" :-)
>> Собственно, именно с этого момента появилась возможность
>> собирать ядро со вкомпилированной поддержкой самых
>> популярных накопителей и сетевых интерфейсов, а технология
>> initrd переместилась на новое место работы: сетевая загрузка
>> Live-системы. А что, когда памяти аж 256 Мб - почему бы не
>> отдать половину под / на /dev/ram0 для запуска установки или
>> rescue-системы?
> И этой возможностью можно пользоваться, собирая ядро
> из исходников под конкретную систему, добавляя туда
> только то, что требуется лишь для этой системы. Нет
> смысла применять эту технологию во всех случаях по целому
> ряду причин, обусловленных, всё той же памятью, всё той же
> скоростью/эффективностью загрузки. И обеспечить возможность,
> о которой идёт речь, в binary-package-based дистрибутиве,
> наверное, хоть и возможно, но нерационально.
Какой возможностью? Загрузкой по сети? Да ей уже давно успешно
пользуются все, кому не лень...
А с установкой все становится совсем просто: загрузились откуда
угодно (например, по сети), смонтировали целевой носитель,
сказали rpmdb --root $TARGETDIR --initdb и поехали ставить пакеты
через rpm --root $TARGETDIR -Uvh ...
Я так в датацентре серверы запускал: грузчики притащили, техники
в стойку поставили и провода воткнули, оно по PXE загрузилось,
само систему втащило, в нее перегрузилось, нужный VLAN подхватило,
адрес получило - все, машина готова к работе, хотя я ее в глаза
не видел :-)
> Кстати, раз речь о /dev/ram0, почему предлагается отказываться
> от stage1 (initramfs) в пользу stage2 (ramdisk, традиционная
> загрузка корня, о которой далее говорит Сергей Большаков)?
/dev/ram0 хорош тем, что позволяет, например, поставить пакеты
в загруженную по сети live-систему - в корне для этого можно
оставить место. Ну да, памяти оно сожрет чуть больше... да и пусть
с ней - в современных компутерах ее много.
> Ведь ядро понимает сжатый initramfs "из коробки". Причём это
> формат внутреннего кэша самого ядра. Эффективнее просто некуда.
> Никаких модулей дисков, файловых систем не требуется. Не говоря
> о том, что initramfs "из коробки" понимают все загрузчики.
> Его также можно вкомпилировать в само ядро. Простое любопытство.
Как сказал председатель Мао, "bai hua qifang, bai jia zhengming" -
"пусть расцветают сто цветов, пусть соперничают сто школ". Кому что
больше нравится - пусть то и пользуют, ядро поддерживает оба этих
варианта.
>>> Добавлю от себя лично: в пакете propagotor есть два особенных
>>> скрипта. Первый init-bottom "очень дорог для нас". И критичен
>>> в плане совместимости. Его бы как-то по-максимуму сохранить.
>>> Второй -- mkmodpack. О нём в данном письме речи не идёт.
>> А зачем? Грузим ядро, оно находит корневой раздел по метке,
>> монтирует его, запускает init... Зачем для этого какие-то
>> костыли?
> init-bottom обеспечивает работу с read-only носителями, слоями
> aufs r/o и r/w, загрузкой по NFS, многими опциями пропагатора.
Я правильно понимаю, что речь прежде всего об унификации этой работы?
Тогда возникает другой вопрос: а нужна ли она? Или лучше использовать
более специализированные инструменты для работы с разными носителями?
Впрочем, загрузка live-системы и установка системы на компутер - это
хоть и взаимосвязанные, но все же отдельные задачи.
> Отрывая этот скрипт полностью, мы теряем возможность предложить со
> временем безболезненно перейти с пропагатора на make-initrd-liveboot.
А если не отрывать полностью, но попробовать обойтись без него там,
где это возможно?
--
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : signature.asc
Тип : application/pgp-signature
Размер : 801 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20180412/d9c0fdbc/attachment.bin>
Подробная информация о списке рассылки Devel