LINUX.ORG.RU
Форум — Talks  

Объясните про ядро

 , ,


0

1

Зачем в 99% дистрибутивах в ядре включены тонны различных драйверов? Почему нельзя включать только нужные для загрузки драйверы, а затем уже грузить нужные модули ядра? Зачем вообще до сих пор в ядро тащат тонны драйверов, а не выносят в отдельные модули ядра, чтобы загрузить по требованию? Это как-то влияет на производительность или потребление памяти?

Перемещено shell-script из general

Скажи пожалуйста зачем тебе этот вопрос нужен? В ядре как раз драйвера устройств собираются модулями. А монолит в ядре включены только те опции которые нужны для работы этих модулей и прочих подсистем ядра.

kostik87 ★★★★★
()
Ответ на: комментарий от alex1101

Не знаю как где, но в Debian при установке можно выбрать опцию «включать в initramfs только нужные для загрузки модули». Так же потом можно поменять параметры пакета initramfs-tools в уже установленной системе.

Initramfs получается маленьким.

Но это все догадки что и почему хотел спросить автор темы.

kostik87 ★★★★★
()

включать только нужные для загрузки драйверы

Включают.

не выносят в отдельные модули ядра, чтобы загрузить по требованию

Выносят.

в 99% дистрибутивах

4.2

no-such-file ★★★★★
()
Ответ на: комментарий от kostik87

Ну, лично я не совсем понимаю, зачем вообще нужен initramfs. Когда я пользовался гентой - я все нужные для загрузки модули впиливал намертво в ядро, и initramfs у меня отсутствовал. Почему дистростроители не делают так же? Там ведь всего несколько модулей нужно впилить: ext*, scsi/sata, пять-семь чипсетов. По размеру vmlinuz выходил примерно таким же, как во всяких убунтах и федорах.

alex1101 ☆
()
Ответ на: комментарий от kostik87

Можно и в установленной системе такое провернуть. Есть/был какой-то конфиг для этого в /etc. Не помню за давностью лет

utanho ★★★★★
()
Ответ на: комментарий от alex1101

Там ведь всего несколько модулей нужно впилить: ext*, scsi/sata, пять-семь чипсетов.

Ты действительно не понимаешь или троллишь?

А если система ставится на RAID, а если на LVM, если файловая система не ext4, а одна из нескольких десятков, а если шифрование применяется, а если есть есть аппаратный, а не программный RAID, а если корень будет на NFS, то тогда ещё драйвер сетевой карты и драйвер NFS в ядро, а если, если и ещё если.

Дистрибутивное ядро должно поддерживать установку на большом спектре железа. Поэтому либо все драйверы нужно включить монолитно в ядро и тогда они будут присутствовать у всех в ядре, либо помещать в Initramfs.

Повторяю ещё раз, для тех кто не умеет читать, в Debian при установке можно сказать, чтобы в Initramfs были нужные модули только для монтирования коря и всё.

Он будет маленьким.

Используй Debian и включи эту опцию, либо разберись как работают скрипты сборки Initramfs в твоём дистрибутиве и исправь их.

У тебя очень странные вопросы, ответы на которые лежат на поверхности.

kostik87 ★★★★★
()
Ответ на: комментарий от utanho

Можно, я про это и написал:

… Так же потом можно поменять параметры пакета initramfs-tools в уже установленной системе.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

А если система ставится на RAID, а если на LVM, если файловая система не ext4, а одна из нескольких десятков, а если шифрование применяется, а если есть есть аппаратный, а не программный RAID, а если корень будет на NFS

Да кому всё это нахрен нужно.

alex1101 ☆
()
Ответ на: комментарий от alex1101

когда делаешь ядро лично под себя, можно вообще без инитрамса жить. я это делал даже под бубунтой.
дистростроители делают дистр под широкий круг пользователей, поэтому минимизировать набор модулей не получается. обычный пользователь никогда в жизни не додумается модфицировать систему, тот же интирамфс, загодя, перед установкой нового железа. а воткнет новую железяку и будет плакатся - «нирабоает» :(

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

поэтому параметр по умолчанию стоит в most и в ядро вкомпилены куча «ненужных» модулей, eisa та же…

/etc/initramfs-tools/initramfs.conf

# MODULES: [ most | netboot | dep | list ]
#
# most - Add most filesystem and all harddrive drivers.
#
# dep - Try and guess which modules to load.
#
# netboot - Add the base modules, network modules, but skip block devices.
#
# list - Only include modules from the 'additional modules' list

MODULES=most
pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от alex1101

если тебе что не надо, то это не значит что остальному миру ентое тож нинужно.

pfg ★★★★★
()
Ответ на: комментарий от alex1101

Тем, кто ставит на серверы.

Повторяю, хватит задавать странные вопросы.

Если тебя что-то не устраивает - сиди на Gentoo или собирай своё ядро в дистрибутиве.

kostik87 ★★★★★
()

Почему нельзя включать только нужные для загрузки драйверы, а затем уже грузить нужные модули ядра?

Эм… ну вообще-то именно так и работает. Грузится сперва минимальное ядро, остальные модули подгружаются, если обнаруживается железо, для которого они нужны.

В следующий раз перед вбросом проверяй его обоснованность.

Vsevolod-linuxoid ★★★★★
()

Вы уже перестали измазываться хз в чём по утрам?

ya-betmen ★★★★★
()
Ответ на: комментарий от kostik87

Тем, кто ставит на серверы

А в десктопных дистрибутивах это зачем? Ладно ещё шифрование, на ноутах оно мастхэв, но остальное нафига.

Это просто отсутствие проектирования. Линукс до сих пор не стал цельной продуманной системой.

alex1101 ☆
()
Последнее исправление: alex1101 (всего исправлений: 1)

Вопрос в тему, а о чем говорит сообщение, что модуль xxx отсутствует, при создании initramfs?

Означает ли это, что модуль ххх точно используется системой или о том, что его включили как модуль по умолчанию для создания образа ФС?

Если что, то речь про default, а не про fallback. Естественно настройки по дефолту для дистрибутива.

ComIngSoon
()
Ответ на: комментарий от alex1101

хых, мусье :) линукс это конструктор. и поставляется только в виде конструктора.
также как и куча других проектов которые вносишь под одну шапку с с надписью линукс :)
из которых потом дистрособиратели собирают систему.
если текущие конструкции не продуманы - выпусти свою супир-продуманную систему. все в твоих руках.

pfg ★★★★★
()
Ответ на: комментарий от alex1101

Это в данном случае отсутствие знаний у тебя и желания думать:

  • Далеко не всё, что есть в initramfs, грузится в оперативную память и висит там всё время. Если модуль не нужен, он и не будет загружаться.
  • Сами по себе эти модули весят немного, и даже на железе с 2 гигами уже неощутимы.
  • RAID полезен и на десктопе, особенно с шифрованием, если данные дороги. Собственно, на всех серьезных рабочих станциях он есть по сей день.
  • Куда проще сделать и поддерживать 1 универсальное ядро + initramfs, чем требовать от каждого пользователя ручной настройки под именно его железо и ситуацию.
Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Экономии оперативки, ускорения загрузки, упрощения и ускорения процесса обновления ядра. Ядро КАПЕЦ ДОЛГО обновляется из-за всей этой требухи.

alex1101 ☆
()
Ответ на: комментарий от alex1101

Initramfs размером 7 магабайт тебе погоды не сделает.

Ядро КАПЕЦ ДОЛГО обновляется из-за всей этой требухи.

В бинарном дистрибутиве пакет с ядром и модулями распаковывается пару секнуд, скачивается дольше.

В Gentoo нужно покомпилить.

Но на нормальных процессорах при компиляции ядра в несколько потоков даже с дистрибутивным конфигом ядро компилируется от 5 до 10 минут.

За это время можешь сходить заварить чай и выпить.

У меня AMD Ryzen 3600+ дистрибутивный конфиг собирается примерно минут 7 при компиляции в 10 потоков.

Зачем ты вообще поднял эту тему? У себя можешь делать как тебе хочется. Собирай своё ядро и вообще свой дистрибутив и делай как тебе хочется.

В дистрибутиве массового использования всё должно работать у всех.

В твоей теме не вижу смысла.

kostik87 ★★★★★
()
Ответ на: комментарий от Original_1

они и лежат в самом дистрибутиве в еще большем количестве :)
в интирамфс впихнуты лишь те модули, которые могут потребоваться на момент загрузки системы.
на этот момент разделы с носителя еще не подключены.

pfg ★★★★★
()
Ответ на: комментарий от alex1101

В дистрибутиве массового использования всё должно работать у всех.

В твоей теме не вижу смысла.

Модули как раз и сделаны для нормального проектирования и адаптации системы под нужды разных систем.

kostik87 ★★★★★
()
Ответ на: комментарий от alex1101

Мизерная экономия оперативки и ускорение на целую пару минут процесса, что происходит раз в пару недель даже в rolling дистрибутивах ценой пересмотра архитектуры и усложнения установки для конечного пользователя. Отличный план!

Vsevolod-linuxoid ★★★★★
()

Ядро чего?
И зачем?

vM ★★★
()
Ответ на: комментарий от alex1101

выбрасывай все костыли, используй LFS и будешь прямым и чотким как настоящий пацан

pfg ★★★★★
()
Ответ на: комментарий от pfg

Так установка пачки апдейтов в 1,5 ГБ размером для нафаршированной системы с кедами проходит быстрее, чем обновление одного ядра, лол.

Я имею в виду, без учёта скачивания пакетов в обоих случаях.

alex1101 ☆
()
Последнее исправление: alex1101 (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Это скорее alpm (либа арчевского ПМ) быстрый. SSD у меня обычный саташный.

alex1101 ☆
()
Ответ на: комментарий от alex1101

Ничего себе, целых 20 секунд. Ужас.

Ты в этот момент ничего не можешь делать?

Поставь себе многоядерный процессор в компьютер и голову.

После чего ты сможешь запустить обновление в эмуляторе терминала, нажать Alt+Tab и переключиться на браузер и смотреть видосики.

Проанализируй на каком пакете дольше всего идёт процесс обновления, не факт, что это пакет с ядром.

kostik87 ★★★★★
()
Ответ на: комментарий от alex1101

Во-первых, потому что «чипсетов» не пять-семь и ФС тоже не ограничиваются ext*. Во-вторых, потому что модульное ядро загружается быстрее, чем монолитное. В-третьих, потому что пользователей у любого дистрибутива не ты один (хоть я и понимаю, что это может быть трудно осознать) и возможных вариантов конфигураций очень много. В-четвёртых, потому что у initramfs есть и другие задачи помимо того, чтобы быть контейнером для модулей.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от alex1101

тебе не пофих ли ??
ты настолько быстро работаешь за компьютером, что потеря 20 секунд для тебя оборачиваются большими потерями в прибыли ??
серверные системы вон вообще не обновляют.

pfg ★★★★★
()
Ответ на: комментарий от kostik87

Ой, а как же шинда, являясь дистрибутивом массового использования, работает, не используя initramfs? Не, я серьёзно спрашиваю. Там, вроде как, не тащат драйвер видеокарты в ядро.

Original_1
() автор топика
Ответ на: комментарий от kostik87

Насрать на скор, всё равно потом опять снимут

Original_1
() автор топика
Ответ на: комментарий от Original_1

хех, ядро можно перекомпилить и использовать его без инитрамфс ваапче.

pfg ★★★★★
()
Ответ на: комментарий от alex1101

у винды меньше вариаций в составе ядра. чем менее функциональнее система, тем она проще :)

pfg ★★★★★
()
Ответ на: комментарий от Original_1

В Windows загрузкой драйверов в память занимается загрузчик.

Он считывает с системного раздела куст ресстра system, загружает в память ядро и файлы включенных драйверов, передаёт ядру управление.

kostik87 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.