LINUX.ORG.RU

Сборка и конфигурирование ядра Linux. Зачем?

 


0

1

Приветсвую. Стало интересно, зачем пересобирают ядро? В частности, на домашнем пк? В чем прелести так называемой «компактности» ядра? Ну, не будет в нем кучи лишних модулей (к примеру, драйвера устройств, которых нет в коробке). Или это не единственная цель? И еще вопрос: если я в конфиге поставлю дрова лишь на те устройства, что у меня сейчас стоят, а потом сменю видеокарту, что тогда? Пересобирать ядро или дрова можно будет поставить без этого? И еще. Чем отличается «статический» модуль от «динамического»?

Буду рад ссылкам на инфу по сабжу.

И еще вопрос: если я в конфиге поставлю дрова лишь на те устройства, что у меня сейчас стоят, а потом сменю видеокарту, что тогда?

Пересоберешь.

Deleted
()

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

ilovewindows ★★★★★
()

Чем отличается «статический» модуль от «динамического»?

Если простым языком, то статический «вкомпилируется» в ядро, а для динамического необходимо делать modprobe.

Deleted
()

В чем прелести так называемой «компактности» ядра?

Меньше фич -> меньше потенциальных багов.

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

если простым языком

а для динамического необходимо делать modprob

Ну прям проще некуда

Sydorov
() автор топика

Собираю компактное ядро, с немного другими настройками чем дефолтные, но это ничего на глаз не даёт. А вот реальная причина - это сборка с uvesa_fb(ну или как там оно называется),чтоб с проприетарным драйвером nvidia было нормальное разрешение в консоли.

Necrogrinder
()

Стало интересно, зачем пересобирают ядро?

Сборка ядра - это как секс. Пока он тебе реально не потребуется, будишь ходить и недоумевать: «А нахрена оно вообще надо?» Просто расслабься и радуйся, что у тебя все работает без дополнительных «шаманских заклинаний в консоли».

anonymous
()

Сначала ради экспериментов и изучения, а потом потому что готовые скрипты и конфиг для этого есть.

anonymous
()

Чтобы изменить параметры работы различных устройств и подсистем, это же очевидно. Ну и ещё отключить лишние фичи имеющие оверхед в рантайме, если они не нужно в принципе. А ты какую-то херню загнал, если честно.

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

Забавное сравнение )) Но, все же. Причина не только в багах, насколько я понимаю

Sydorov
() автор топика

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

Это типа умения перепрошивать и тюнить компьютер у автомобиля - 99% автомобилистам это реально не нужно, 2% из этих 99% думают что им нужно, но на самом деле нет, 1% оставшийся процент умеет это делать и знает зачем.

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

Чтобы изменить параметры работы различных устройств и подсистем, это же очевидно.

Для этого есть как минимум четыре способа без пересборов ядра - параметры ядра, параметры модулей, ядерные ФС типа proc и sys и sysctl конечно.

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

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

anonymous
()
Ответ на: комментарий от Jameson

Это конечно вариант, но кажется далеко не для всего можно так. Многое можно и без пересборки ядра разрешить, не знаю проще ли.

anonymous
()
Ответ на: комментарий от Sydorov

В общем, на данном этапе мне это может понадобиться лишь для повышения ЧСВ?

Да, как то так... Для использования компьютера как инструмента это лишнее знание.

Если ты решишь например профессионально админить Линуксы или заниматься разработкой девайсов с Линукс на борту или дистрибутивов Линукс под хитрые девайсы придётся освоить этот навык.

Jameson ★★★★★
()

Например, поставить на ядро какой-то патч. Или новый драйвер. Ты реально думаешь, что в каком-нибудь дремучем дистрибутиве CentOS красиво поддерживается весь спектр устройств 10Gbe? А, понял. Ты не знаешь, что новые фичи в новых ядрах бывают, которые кому-то хочется погонять. Например, AMDGPU на GCN 1.1. О, нет, не так. Ты не в курсе, что иногда можно оптимизировать ядро по скорости чисто под твоё железо? (не generic x86_64, а нативные оптимизации gcc под конкретно твой процессор)? Так, оставим всё это. Мне вот не так давно понадобилось поставить линукс на хитрый девайс, на ARM, готовые сборки как-то не устроили.

Извини за сарказм, но юзкейсы у всех разные и для многих твой вопрос звучит действительно глупо: раз ты не знаешь, зачем - то и не следует.

Deleted
()
Ответ на: комментарий от Jameson

Спасибо. Довольно адекватная вариация мнения «оно тебе нафиг не нужно. Не бери дурного в голову, а тяжелого в руки»

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

Это конечно вариант, но кажется далеко не для всего можно так. Многое можно и без пересборки ядра разрешить, не знаю проще ли.

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

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

Ну да, только не всё можно без пересборки. Захочется тебе уложить на виртуалке с ограниченным объемом памяти ядро в полтора мегабайта - так возьмешь и пересоберешь. Ну или своё что разрабатывать будешь - так тоже пересоберешь.

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

Ну да, только не всё можно без пересборки. Захочется тебе уложить на виртуалке с ограниченным объемом памяти ядро в полтора мегабайта - так возьмешь и пересоберешь. Ну или своё что разрабатывать будешь - так тоже пересоберешь.

Я об этом и писал вобщем :) Когда понадобится навык сей освоить поциент уже будет знать зачем :)

У меня дома машинка весьма хитрая например, проф. многоголовая рабочая станция с честной NUMA и кривыми таблицами ACPI, которые правильно только в винде работают. Дистрибутивные ядра на ней либо виснут, либо тормозят. Так что у меня есть вылизанный и заточенный именно под неё конфиг ядра, с перекомпилированными таблицами, на котором я уже пять лет живу и горя не знаю. В этом случае как видим есть явная необходимость.

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

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

Тут согласен. Я как-то занимался редактированием DSDT на одном ноуте от гнусмаса - безмерно рад, что ноут сдох раньше.

Deleted
()
Ответ на: комментарий от anonymous

А если оно не собрано в дистрибутивном ядре? o_0

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

Jameson ★★★★★
()

Там опции не только модули включают/выключают, но вообще в корне меняют поведение ядра: включают/выключают подсистемы, выбирают планировщики и предпочитаемые стратегии поведения, дефолтные кодировки,... и прочие кернел-хаки. Есть и такие узкоспециализированные опции, которые рядовые обычные юзеры совсем не желают включать, но где-то и кому-то они нужны. В частности такие опции могут приводить к тому, что, например, планировщик задач будет все процессы вешать исключительно на одно ядро процессора, а все остальные будут простаивать. Или, например, 0-е ядро процессора станет скрытым и недоступным для top'а и других задач. В общем, нашаманить можно самое разное.

saahriktu ★★★★★
()

Некоторые устройства работают или не работают или работают лучше/хуже в зависимости о того, как собран «драйвер» — модулем (M) или копролитом в ядро (Y). Больше всего мне попадалось таких устройств из подключаемых через USB.

Зачем?

В большинстве стоковых ядер основных дристибутивов опция CONFIG_DRM_AMDGPU_CIK была отключена, а без нее видеокарты AMD поколения GCN 1.1 не работали с новым драйвером AMDGPU-PRO, нужно пересобирать.

slon
()

Сначало было интересно, я собирал и эксперементировал, чисто под свою систему. Сейчас на такие вещи тупо нет времени. В конце концов у нас тут не драг рейсинг, что бы гнаться за милисекундами. Правда еще есть любители с gentoo =)

А так - некоторые драйвера в ядрах отсутствуют, некоторые необходимые патчи тоже. Да мало ли что еще. Вот тебе история: однажды у меня был старый ноутбук делл, с 256мб памяти. Ну и плохо он дружил с виндой. Со стоковым ядром половина устройств не работала. Я полдня с ядром возился, выпил все, что там было реально не нужно, включил чисто делл фичи, сразу заработали хардвейерные кнопки и прочие радости, без поиска драйверов. Насчет конкретно видеокарт, зависит от типа драйвера. Будет закрытый видеодрайвер - там будут трудности. Открытый и так заработает, без излишнего шаманства с ядром.

По поводу модулей ядра, вот ссылка (написано адекватно) https://wiki.archlinux.org/index.php/Kernel_modules_(Русский)

В двух словах модуль - это по сути очередной драйвер. Самые важные модули обычно встраивают в ядро (иными словами вкомпилировают) и они постоянно висят в памяти. Есть модули, которые могут не понадобится, как например драйвер usb-флешки, которую ты подключаешь,в процессе работы тебе постоянно не нужен, компьютер и без него включится, соответственно ему нечего лишний раз использовать ресурсы системы. Учитывая то, что таких модулей очень много, вместе они могут «съедать» много ресурсов, поэтому по-умолчанию они отключены и подгружаются по-надобности, так же легко выгружаясь.

Rockon
()

На гентувики по сабжу.

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

Не, не слушай его. Этот человек «собирал и эксперементировал» и «гонялся за какими-то мифическими милисекундами». С закрытым драйвером очень вероятно не будет проблем, я так обновил карту нвидиа на несколько поколений, просто включилось и работает. Правда с легаси драйвером новая карточка возможно не заработает, есть такое, но в целом всё очень хорошо. В крайнем случае обновить драйвер из консольки. А в истории с лаптопом он где-то пролюбил диск с драйверами и не догадался скачать их из интернета, венда вовсе ни при чём. Ну и остальное тоже фантазии.

anonymous
()

зачем пересобирают ядро?

Если ты задаёшь такой вопрос, то это тебе и не нужно. </thread>

Hertz ★★★★★
()

я как-то раз бисектил баг в ядре, больше ни для чего не пригодилось

thesame ★★★★
()

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

P.S> Тред не читал

Balantay
()

И еще вопрос: если я в конфиге поставлю дрова лишь на те устройства, что у меня сейчас стоят

Ну поставишь другую сетевуху (к примеру), а оно уже не работает...

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

Чесно сказать если проблем нет лучше не сделаешь (скорости тоже не прибавишь)

LinuxDebian ★★★★
()

последний раз пересобирал ядро на slackware 10.2, поскольку памяти было мало. отключил agp, которого на той системе в принципе не было, так отвалился фреймбуфер. плюнул, и с тех пор ядро больше никогда не пересобирал.

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

ну, нахрена секс надо - я примерно понимаю, у меня трое детей

а вот нахрена ядро пересобирать - объясните, куда ходить и как недоумевать, чтобы это понять?

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

Собрал ядро уехал на дачу VLC не запустился — это был МЕГА облом. Больше без надобности тоже не собираю :)

Через 2Г качал плеер под вайн... :)))

LinuxDebian ★★★★
()
Последнее исправление: LinuxDebian (всего исправлений: 2)

В 1999 на Red Hat 7.3 это позволяло значительно уменьшить потребление памяти

ZenitharChampion ★★★★★
()

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

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

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

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

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

На сборку ядра уходит какое-то время, чтобы его сократить, собирают только необходимые модули.

Компактность ядра — только ради сокращения времени компиляции, больше ни для чего (ну и в каких-то маленьких системах для экономии места).

anarquista ★★★★★
()

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

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