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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.