А мы тут всю неделю о ядрах беседовали в соседних темах. Чем быстрее вы прочитаете методичку Столярова и первую главу Таненбаума тем легче вам будет жить, администрировать и программировать.
Пока вы не разберетесь с основными концептами ОС: ядро, user-mode, kernel-mode, системный вызов, файл, i-node, процесс, trap command, виртуальное адресное пространство, shell. Ваше понимание Linux будет никаким. Поверхностным.
Ядро монолитное, значит это одна большая программа на Си, состоящая из множества функций. Часть этих функций можно убрать, тем самым уменьшая размер ядра.
Скорее всего это достигатся при помощи макросов в исходном коде, на которые можно влиять во время компиляции, и изымать части исходного кода.
Чтобы выкинуть большую часть ненужного фунционала, который по дефолту содержится в базовой версии ядра. Обычно, на практике используется, 5-10%.
Второй фактор, оптимизация производительности - если брать конкретное железо, то с дополнительными опциями, например, выставить -march=corei7, можно добиться более лучшей работы СPU.
Последний фактор, когда ядро собирают с оптимизацией под конкретную задачу - например, для поддержки передачи большого количества трафика ipv6.
Ядро пересобирают тогда, когда вопрос «Для чего собирают ядро?» перестаёт быть вопросом.
Это было не сильно просто и не быстро на старых линуксах с загрузкой граб/биос и опционаьным initrd, а нововведения системд/эфи/секюре бут/загрузчиков и универсального загрузочного образа явно не упростили процесс.
Видишь ли обычная поставка ядра модульная. Можно избавиться от выпадающих драйверов и ускорить и обезопасить систему монолитным ядром без поддержки загрузки модулей.
Вообще ввиду того что ядро можно пересобрать и мигрировать на новое ядро без перезагрузки механизм загрузки модулей становится необязательным.
Безопасность у ядра без возможности загрузки модулей выше, реакция выше, соответственно ядро реального времени должно быть монолитным и для этого его надо пересобирать под железо.
Можно решить проблемы не дав к примеру подключению по USB ничего кроме RNDIS. Можно заставить звук перестать отваливаться. Можно указать принудительно прошивку к примеру вафли, которую плющит.
В общем только полный доступ к коду позволяет убрать лишнее и полностью избавиться от кривых механизмов и настроить многие аспекты ядра.
Слишком общие ответы тебе ровным счетом ничего не дают потому что служат цели сделать тебя обычным потребителем в стиле «жри что дают», хотя линукс это в первую очередь о полном контроле над системой.
Без ядра ОС не работает. Исходный код процессор исполнять не умеет — надо собирать. Обычно этим занимаются мейнтейнеры дистрибутива.
Зачем собирать и пересобинать ядро Линукс?
Пересобирают обычно ради другого конфига — включения/отключения тех или иных модулей, добавления своих драйверов. Некоторые пересобирают с различными патчами — например, добавляющими альтернативные шедулеры, а также «оптимизирующими» ядро под свой юзкейс — например для Realtime-системы, для десктопа, сервера, для минимальной задержки звукозаписи — само собой, оптимизация одного, ведёт к просадкам в чём-то другом, универсального решения нет (точнее оно компромисное и дефолтное). Плюс некоторые пересобирают именно под свой проц, чтобы все новомодные инструкции применялись — это даёт некоторый буст к производительности.
Если тебе не надо добавлять никаких экзотических драйверов для редких устройств, не советую заморачиваться. Выигрыш в производительности там получается пара процентов, а на реальных юзерских задачах вообще фиг заметишь, а времени на всё это (и особенно тестирование и сравнание разных вариантов — что производительнее) потратишь столько, что оно никогда не «окупится».
Кст, мне вот на вузовской практике (которую я в том же вузе и проходил) вручили старенький сервер, и очень старенькие и убогие тонкие клиенты. Мне была задача поднять сервер и с него раздавать - с целью запуска браузера и прохождения всяких экзаменов на них.
И вот как раз ядро надо было кучу раз
пересобирать, чтобы оно бутстрапалось в память. Проблема была в абсолютной убогости тонких клиентов, ядро приходилось чикать и так, и эдак, и пережимать его.
И представляешь - зделол! Но браузер никакой минимально подходящий на них я запустить не мог, офк, так что пришлось делать удалённое подключение обратно на сервер с отдельной выданной сессией.
Не знаю, сколько ещё эта сеть там работала, но по моему выпуску всё как будто было ок. Было, на самом деле, очень интересно это делать, тем более, что мне давали полный карт-бланш на весь процесс соло-разработки.
О да, поковырять конфиги пару дней ради интереса это окупаемость. В реальных боевых условиях эти несколько процентов и есть то что дает реальный результат. В первую очередь он нужен тем у кого стандартная кривая конфигурация для игр, но там уже сделали готовые ядра в разномастных дистрибутивах. А это ты от скромности не упомянул, потому что линукс это ведь не ля игр видимо. На дешевых процессорах выхлоп гораздо более очевиден что в паре с собранным под процессор браузером с высоким уровнем оптимизации дает прирост в разы, а не в эти насранные тобой 2%. Ты наверное и ночью компилять не умеешь и спишь за компом чтобы 2% времени не терять и зубы не чистить.
Я не знаю зачем тебе игры и писать какую-то тупую хрень мне. Я про либре ядра не упоминал. Там просо вырезают все проприетарски закрытое. Ядро для игр да, с планировщиком и прочими плюшками. Они же не умеют компы собирать чтобы те не лагали постоянно из-за кривого конфига «превед костыли как у консоли».
Я самых тупых объясняю: В libre ядрах никто не вырезает ничего. Заявлено, но звиздят. В Zen, в котором заявлены оптимизации для игрулек и куча всяких шлюх плюх. Заявлено, но тоже взиздят вдвойне.
Вот как раз после шаловливых ручонок мейнтейнеров дистрибутива и приходится пересобирать без их невменяемых патчей. В Дебиане, например, дефолты под какой-то анально огороженный сервер, но, в то же время, включена всякая отладочная бодяга, которая не-мейнтейнеру в пень не упёрлась. Про вишенки на торте в виде насмерть отключенных (и не включаемых!) опций типа sched_autogroup уже молчу (конкретно этот кейс уже вроде даже пофиксили, но такого там полно).
Ты может и из самых тупых, но мне ненужно ничего объяснять раз тебя плющит и в либре ядрах ничего не меняется. Мы тут про самосборные ядра вообще-то. А про либре можешь сам проверить - там есть файл deblob-check прежде чем пытаться что-то громко заявлять. Мне выскочки неинтересны.
Зачем? В Void например сразу заявляют что это как бы обычней шее ядро и стоит собирать самому. Xbps-src прекрасно дружит с пакетным менеджером. Зачем менять то что работает? Мне браузер и ядро в основном нужны для пересбора.
О да, поковырять конфиги пару дней ради интереса это окупаемость
Ради интереса — это всегда хорошо. Только кому оно интересно, не спрашивают по форумам, зачем, а берут и ковыряются с чем хотят сами. Ответы обычно даются с учётом этого.
В реальных боевых условиях эти несколько процентов и есть то что дает реальный результат.
Да, есть такие юзкейсы, где это может иметь достаточно значительную роль. Включая звукозапись, например. Но в для обычного домашенго использование дефолт разница с дефолтом из дистрибутива еле заметная.
В первую очередь он нужен тем у кого стандартная кривая конфигурация для игр, но там уже сделали готовые ядра в разномастных дистрибутивах. А это ты от скромности не упомянул, потому что линукс это ведь не ля игр видимо
Линукс для игр подохдил лучше чего-либо ещё. Но именно в играх перекомпилляция ядра вообще на уровне погрешности даёт прирост, а не 2%. Равно как этот гиммик с «игровыми» дистрибутивами. Что в «геймерских» Pop_OS и Nobara, что в самом обычном Арче в играх фпс одинаковый.
На дешевых процессорах выхлоп гораздо более очевиден что в паре с собранным под процессор браузером с высоким уровнем оптимизации дает прирост в разы, а не в эти насранные тобой 2%.
Я не знаю, что считается дешёвым, что дорогим. У меня что на i5 предыдущем, что на AMD 5700X нынешним прирост незначительный. Гораздо эффективнее сам софт перекомпилировать с оптимизацией под проц, а не ядро.
Ты наверное и ночью компилять не умеешь и спишь за компом чтобы 2% времени не терять и зубы не чистить.
Пошли додумки и догадки.
Делать мне больше нечего, днём компилять. Конечно, это делается ночью. Но и это не всегда удобно. У меня на ночь и другие задачи для компа бывают частенько, вроде перекодирования видео.
К тому же, время потраченное на бенчмарки и тесты, чтобы убедиться, что результат вышел лучше, а не хуже, никто не отменял.
Не, раньше я тоже заморачивался этим. Раньше да, было дело, перекомпилял. Радовался выигранным долям процента от очередного патча и сэкономленным десяткам гигабайт, иначе занимаемых ненужными модулями. Но стар и ленив я стал для этого. Да и способы провести время или с большей пользой, или более увлекательно, появились.
Реальная необходимость в сборке ядра есть разве что у разработчиков этого самого ядра и дистрибутивов.
Представь, если тебе нужно срочно получить новое ядро, которое вышло буквально полчаса назад, ради поддержки твоей железки, а у мейнтейнеров rolling-дистрибутивов оно еще только собирается.
Дистрохоппинг — вообще одно из самых идиотских занятий в линукс-мире, а уж заниматься им из-за того, что ядро собрано не с теми настройками… Круче только по причине «драйвера не те» (видел такое). Это ж насколько надо быть ленивым идиотом.
Купите ноутбук. И возникнет понимание что ядро надо не только пересобирать но еще и патчить и код туда самому вписывать чтобы эта сволочь просто работала. А то расслабились со своими десктопами fuck fiel economy suspend не нужен.
выходит что никто тут ядер не пересобирает либо даже если пересобирает то не понимает зачем.
включение оптимизаций симд в компиляторе дает совсем не 5% прироста, оно дает 0% прироста, так как для оптимизации симд этот самый симд должен быть в коде, а его нет, то и оптимизировать нечего. ну потому что если его понаписать то начнуться беды с совместимостью.
буст производительности тем не менее может достигать и 500%, при условии что вы пытаетесь запустить самое последнее ядро собраное под 128 ядерники с нпу ну и вот это вот все на каком нибудь пентиум 1. но это никакой не буст, а возвращение производительности к нормальному уровню, свежее ядро просто будет очень сильно тормозить на легаси железе.
вы все как то вендово думаете, в линуксе в отличии, не вводят намерено каких то ограничений, не занимаются искуственым замедлением железок. ваше железо работает с той производительностью с которой спроектировано, и никакая команда в баше не сделает из вашего целерона епик, ни в какой ос.
все эти ваши оптимизаторы, патчи, шедулеры и прочий шлак - поигрушки с нулевой суммой. вычислительный ресурс конкретной машины штука константная, и чего бы вы там не делали, больше он от этого не станет.
конкретная программа, библиотека, алгоритм, действительно могут быть ПЕРЕПИСАНЫ в более оптимальный вид и засчет этого требовать МЕНЬШЕ ресурсов, а следовательно и работать быстрее на той же машине. Но для этого требуется именно переписать код а не просто три кнопки ткнуть в настройках компилятора.
О господи. Спрашивают чтобы узнать чего-то нового и того что выпает из поля зрения новичка. То есть интерес есть и он ищет знак свыше не понимая что это он и есть - знак. Вот в чем дело то. Наши распинания тут могут как подкрепить желание изучить то чего хочется, так к сожалению могут и отбить желание.
И прибавка в играх обычно хорошая от смены ядер и планировщина. Все же не стоит забывать что какие-нибудь 15% это уже другой уровень видеокарт. Так почему бы не использовать то что дает лучший результат? В арче результат одинаковый только если видеокарта полностью свободна, то есть используется как основная для рабочего стола например встройка. Туда - в видео выход наматеринке и втыкается кабель чтобы разгрузить видеопамять на пару гигабайт. А это позволяет к примеру поднять качество тексткр и/или получить больше кадров с видеокартой попроще. Но это происходит у меня. Почти никто другой так не делает. Может еще несколько человек поняли о чем я вещал в видео.
Ну так посчитай 2% за минуту компиляции ядра, плюс скажем 20% за 20 минут компиляции браузера - стоит оно того или нет это все одна мозаика по времени.
Я тоже бенчмарки гонял, только у меня из RX 6500 XT видеокарта получается в то время как все другие блоггеры срут кирпичами что вот дескать какая ужасная видеокарта. Ничего что я на ней в 4К гоняю в Quake Champions и можно в CS2, Apex Legends и многое другое в 4К гонять? Вместо этого эти клоуны орут что 4К это нечто офигеть недостижимое. Ага 100+ кадров в 4К это ужасный результат, ага, да.