Еще летом, когда я беспрестанно сидел за стационаром, я задумался: а как бы мне ускорить загрузку своего линукса? Нет, я особо часто его не перезагружал, просто хотел погреть душу лишней фенечкой. Времени было предостаточно, на улице было грязно, и я задумался. Гугл мне нехилое количество статеек.. и я приступил.
Конечно, все рекомендуют начать с пересборки ядра. Не то, чтобы это давало сильный прирост, но это действительно фундамент всего, и лучшего можно было добиться только с ядром, собранным "под себя". Дело нехитрое, но довольно муторное. Если собирать все, что можно, отдельными модулями, то их получится чуть больше двух с половиной тысяч. Некоторое время я
читал описание к каждой опции, но на этом я сдался. И задумался: ведь каждая железяка в моем компе, требует вполне конкретные модули.. Ведь можно же автоматизировать процесс конфигурации в зависимости от моего железа!.. Я снова пошел к гуглу. И нашел же!
Как можно было догадаться, сегодняшний пост посвящен теме автоматического конфигурирования ядра.
читать дальше
...коих я нашел три(по сути, дальше и не искал). По странной случайности, первая тулза самая плохая, а последняя - самая лучшая. ну и, конечно, та, что посередине в моем обзоре, является и средней по качеству. Так что если вы пришли из поиска и хотите по-быстрому заиметь конфиг, то сразу читайте третий пункт.
Сначала я наткнулся на autoconf. нет, это не тот autoconf, о котором вы подумали. ну, тут я долго говорить не хочу, ибо эта тулза непотребна. ну совсем. оно мне выдало конфиг, состоящий из где-то сотни-другой строк, который не содержал информации о более чем половине моего железа. кака, пришлось даже руки мыть. >_<
Следующим был AutoKernConfig.
Эта утилитка имеет более-менее приличную базу данных, описывающую железо и требуемые ему модули. Но, опять же, эта база нуждается в постоянном обновлении, которое, естественно, без обширной поддержки со стороны, сложно организовать. Тем не менее, AutoKernConfig составила вполне приличный конфиг. Обработка тесаком на скорую руку, и со второй попытки успешная загрузка в новое ядро. Потом напильник для правильного определения винтов и нормальной поддержки сети и звука. Потом наждачка - включаем модули для поддержки юсб-устройств, более правильная настройка базовых опций, ну и в конце концов, нулевочка: добавляем забытые модули для поддержки вражеских файловых систем на флешках, веб-камеры и прочих мелочей.
Всего мне потребовалось 16 раз собрать ядро-модули, но после этого я ядро на стационарном компе больше не менял. Количество модулей сократилось до 17 , а самые нужные был включены в ядро. Также я избавился от initrd-образа. Короче, вполне адекватная тулза, но использовать я все же рекомендую следующий вариант.
И вот совсем недавно я заметил еще одну возможность собрать ядро, прикладывая к нему как можно меньше усилий. Дело в том, что Линус Торвальдс не перестает нас радовать. С выходом ядра 2.6.32 у ядра поприбавилось опций в Makefile: localmodconfig и localyesconfig. Долго томить не буду, первая анализирует вывод lsmod и отключает из конфига неиспользуемые модули, а вторая переключает все опции, установленные в M (сборку как модуль), в Y. Другими словами, включенные модули после будут включены в ядро.
Вот это - вещь, я вам скажу! Сразу наблюдается огромный плюс такого метода: не нужно хранить базу железяко-модулей, да и основной конфиг не нарушается. Собранное после make localmodconfig ядро заработало без ошибок прямо сразу. Правда, у этого метода тоже есть подводные камни. Допустим, я не забыл включить камеру. Допустим, я не забыл включить вайфай. Сложнее не забыть воткнуть флешку с вражеской файловой системой. Но я таки забыл соединиться через мобильный телефон к интернету (PPP предоставляется как отдельная опция, естественно). Но и, согласитесь, это - уже мелочи по сравнению с предыдущими утилитами. Это - даже не нулевочка.. это просто тряпочка, которой смахнули пыль.
Свежак: на буке оптимизация под Intel Atom и пересборка третьим методом ядра под себя без включения модулей в ядро уменьшили время загрузки ядра на секунду - в основном, из-за облегчения initrd, от которого я еще не успел избавиться. общее время загрузки системы уменьшилось с 26 секунд до 23.