Сайт | Скачать | Видео | Wiki

Голосование

Что Вы предпочитаете

Большой initrd с системой его пересборки
2 (100%)
Большое максимально монолитное ядро
0 (0%)

Проголосовало пользователей: 2

Автор Тема: Большой initrd vs большое монолитное ядро  (Прочитано 1736 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Имел ввиду сборку initrd типа dracut, mkinitcpio
Это персональный initrd к каждой сборочке? Зачем, когда можно сделать универсальный? И вообще, чем проще, тем надёжнее. Что должен делать initrd в frugal сборке? Должен увидеть носитель, найти на нём модули и собрать их в aufs. Всё, остальное излишество. В "большом" линунуксе видеть носитель обязано любое ядро, за исключением специальных сборок, предназначенных для работы из RAM. Для сборки с aufs необходимо накладывать патч, или использовать overlayfs, пожертвовав горячим подключением.
 Вопрос: на кой хрен тащить модули ядра в initrd и городить их загрузку, когда это абсолютно не нужно? Обоснуй свои излишества.
« Последнее редактирование: 15 Июнь 2022, 09:42:43 от sfs »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5332
  • Репутация: +139/-1
Re: Большой initrd vs большое монолитное ядро
« Ответ #1 : 14 Июнь 2022, 21:20:30 »
Обоснуй свои излишества.
Целая тема была, [Решено] Поддержка устройств типа nvme в initrd, по итогам которой допилили initrd-raf от sfs, а "классический*" :) initrd остался не удел, биться за него не стали.

* классический, тот самый, без модулей.
« Последнее редактирование: 14 Июнь 2022, 21:22:34 от krasnyh »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Большой initrd vs большое монолитное ядро
« Ответ #2 : 15 Июнь 2022, 09:40:56 »
Это персональный initrd к каждой сборочке?
Это возможность добавить в инитрд то, что нужно не всем (например llvm , шифрование, экзотические ФС ...) и собрать его под любое ядро

Т.е. если собрать инитрд только с тем , что нужно тебе - совсем большим оно не будет
Да если и будет - на ссд это не заметно. После загрузки Ос - уже без разницы что было в инитрд

А вот если все притащить монолитом в ядро - vmlinuz становится огромным. А он грузится в память и торчит там до выключения.

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

"классический*"  initrd остался не удел, биться за него не стали.
Не очень удачный пример. Было просто лень с ним заморачиваться , т.к. маленький инитрд  мало что дает (см. выше)
Ну и допустим понадобился мне llvm . Системы пересборки нет. Автору не интересно. Приехали

Оффлайн gumanzoy

  • Постоялец
  • ***
  • Сообщений: 110
  • Репутация: +12/-0
Re: Большой initrd vs большое монолитное ядро
« Ответ #3 : 15 Июнь 2022, 16:03:10 »
А что значит "большой initrd" ?
Не все initrd с модулями одинаковые.
mkinitramfs в Debian 11 с ядром 5.10 выходит ~33MB
А в DogLinux (mkinitrd) и в Slax (initramfs_create) ~10MB с ограниченным списком только нужных для загрузки модулей и их зависимостей.

initrd на сколько я понял все же остается в памяти. В DogLinux в /mnt/live/ в Slax /run/initramfs/
Или в других Puppyобразных не так ?
« Последнее редактирование: 15 Июнь 2022, 17:28:59 от gumanzoy »

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1718
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Большой initrd vs большое монолитное ядро
« Ответ #4 : 15 Июнь 2022, 16:09:48 »
Тут с sfs соглашусь. Большой vmlinuz не нужен. Однако, нужен достаточной для начального разворота. Большой initrd, как по-мне - тоже, нужен достаточный. И инструменты, чтобы добавить, кому чего не хватает для полного счастья.
Хотя, тот, кому надо и без инструментов добавит. А остальным это непонятно, зачем.
« Последнее редактирование: 15 Июнь 2022, 16:13:17 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Большой initrd vs большое монолитное ядро
« Ответ #5 : 15 Июнь 2022, 17:09:24 »
что значит "большой initrd" ?
В контексте этой темы - с модулями ядра.ko и udev внутри
А "большое ядро" - это там где эти модули монолитно и udev тогда в инитрд не нужен
в DogLinux (mkinitrd) и в Slax (initramfs_create) ~10MB с ограниченным списком только нужных для загрузки модулей и их зависимостей.
Если это загрузка модулей по списку без удев - на мой взгляд самое кривое рещение. И кстати модули ядра тоже постоянно будут в памяти, т.е. как у монолитного ядра
В DogLinux в /mnt/live/ в Slax /run/initramfs
Насколько мне известно - это копируется самим инитрд (причем обычно не весь инитрд)), чтобы потом корректно все отмонтировать и  выключить пк
Большой initrd, как по-мне - тоже, нужен достаточный
Раньше для  исо собирал 2 : normal и fallback . Разница по загрузке - пара секунд. В итоге собираю только большой, чтобы у юзеров было поменьше вопросов

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Большой initrd vs большое монолитное ядро
« Ответ #6 : 15 Июнь 2022, 21:41:12 »
А в DogLinux (mkinitrd) и в Slax (initramfs_create) ~10MB
Richy initrd.gz == 186Kb
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Большой initrd vs большое монолитное ядро
« Ответ #7 : 17 Июнь 2022, 09:49:28 »
Richy initrd.gz == 186Kb
Сколько секунд экономии при загрузке ОС это дает по сравнению с 20 мб  инитрд?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Большой initrd vs большое монолитное ядро
« Ответ #8 : 17 Июнь 2022, 21:34:32 »
по сравнению с 20 мб  инитрд
Не думай о секундах, хотя они тоже не лишние, думай от том, что останется болтаться в памяти. Или опять скажешь: "по сравнению с браузером....."
Загрузка Richy: ядро и initrd ~1сек. (точно измерить не получается), сборка aufs = 6 сек. , иксы = 24 сек.
LFD LXDE: соответственно 3, 15, 54.
Вот как-то так, дядько...
Altlinux LXDE тоже загружается чуть быстрее, чем за минуту. Ну и зачем тогда вся эта мудристика? Где выигрыш?
« Последнее редактирование: 18 Июнь 2022, 07:39:47 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн gumanzoy

  • Постоялец
  • ***
  • Сообщений: 110
  • Репутация: +12/-0
Re: Большой initrd vs большое монолитное ядро
« Ответ #9 : 18 Июнь 2022, 09:09:41 »
На старых материнских платах, у которых BIOS при загрузке с USB накопителей умеет только USB 2.0 Full Speed (12Mbit/s) а не Hi-Speed (480Mbit/s) загрузка ядра и initrd из загрузчика может занимать минуту и более. Имено для этого случая минимальный размер ядра + initrd важен.
Плохой пример iso xubuntu 22.04 initrd.gz 113Mb.
Замерить секунды на данный момент не могу, железа под рукой нет. Примерно посчитать можно
12Mbit/s это 1.5Mb в минуту.
113Mb будет загружать 75 секунд.
10Mb 7 секунд.

Дальше уже когда ядро линукс взяло управление скорость USB нормальная Hi-Speed (480Mbit/s) и разницы в скорости загрузки модулей нет.
На таких платах (на этапе загрузчика) гораздо быстрее загрузка по сети через PXE 100Mbit/s примерно 12Mb в минуту.
113Mb будет загружать 10 секунд.
« Последнее редактирование: 18 Июнь 2022, 09:27:22 от gumanzoy »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Большой initrd vs большое монолитное ядро
« Ответ #10 : 18 Июнь 2022, 10:44:36 »
размер ядра + initrd
"От перемены мест слагаемых сумма не меняется", иначе говоря, переместив минимально необходимый набор модулей из ядра в initrd мы ничего не выигрываем, зато теряем время на подгрузку модулей, плюс нужен udev + kmod для их загрузки. Короче, сплошные минусы. Не понимать этого...... даже слов приличных нет.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн gumanzoy

  • Постоялец
  • ***
  • Сообщений: 110
  • Репутация: +12/-0
Re: Большой initrd vs большое монолитное ядро
« Ответ #11 : 18 Июнь 2022, 12:13:45 »
размер ядра + initrd
"От перемены мест слагаемых сумма не меняется", иначе говоря, переместив минимально необходимый набор модулей из ядра в initrd мы ничего не выигрываем, зато теряем время на подгрузку модулей, плюс нужен udev + kmod для их загрузки.
Все верно. Против монолитного ядра ничего не выиграть. Но оно будет загружаться только если на этапе сборки все необходимое вкомпилено.
Пример с размером initrd привел как бывает в других дистрибутивах. 113Mb не предел наверно, можно еще жирнее. Навключать разных firmware туда.
Как уже ранее писал в DogLinux и Slax initrd без udev + kmod. Только busybox. Так что так тоже можно, несмотря на минусы в виде не нужных остающихся в памяти модулей ядра.
« Последнее редактирование: 18 Июнь 2022, 12:16:02 от gumanzoy »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Большой initrd vs большое монолитное ядро
« Ответ #12 : 20 Июнь 2022, 09:51:16 »
ядро и initrd ~1сек
hdd или ssd?
зачем тогда вся эта мудристика? Где выигрыш?
Выигрыш - система сборкив возможности пересборки инитрд под любую задачу. Пара сек при загрузке никого не впечатлят
"От перемены мест слагаемых сумма не меняется", иначе говоря, переместив минимально необходимый набор модулей из ядра в initrd мы ничего не выигрываем,
Выигрываем память. udeb подгружает только те модули ядра, которые нужны этому железу. В монолитном ядре безвариантно  загружается куча ненужного именно этому железу. Подгрузка модулей без юдев  (как в debiandog) - это аналог монолита

думай от том, что останется болтаться в памяти
С этого момента поподробнее... Это принципиально важно.
Разве после загрузки основной системы что-то остается в памяти от initrd (если специально не скопировали )
Насколько я понимаю - нет. Только ядро и его модули
Цитата
Initrd состоит из различных исполняемых файлов и драйверов, которые позволяют
смонтировать настоящую корневую файловую систему, после чего initrd
размонтируется и освобождается память.
нужен udev + kmod для их загрузки. Короче, сплошные минусы.
При наличии системы сборки инитрд - собирайте как хочется - с юдев или без
« Последнее редактирование: 20 Июнь 2022, 09:54:37 от sfs »