Привет! Страдая от безделия и низкой скорости загрузки ОС Linux в виде дистрибутива ArchLinux, задумался о том, как это исправить.. нет, не безделие.
Ускорение загрузки системы, естественно, начинается с уменьшения колличества демонов и программ, запускающихся с системой, но “Арч” не страдает излишним колличеством таковых, поэтому идем другим путем…
На вики дистрибутива есть описание сборки ядра разными способами, но они не рассказывают о том, как собрать лугковесное ядро. Именно о том, как его облегчить, как избавиться от initramfs, который сильно тормозит загрузку, как убрать модули в ядро и, наконец, собрать ядро непосредственно под целевой процессор, что, несомненно, ускорит его работу, я и расскажу.
Требуется умение работать в терминале без графической оболочки!
Все, что Вы делаете, Вы делаете на свой страх и риск. Автор статьи не несет ответственности за выполненные Вами действия!
Подготовка
Как получить новейшие исходники, объяснять не буду, это описано в статье на вики Арча. Начнем сразу с конфигурации. Вот, что нам понядобится:
make localyesconfig – магия воплоти, берет все конфигурации и модуди, которые использует запущенное ядро в системе и сконфигурирует их компилирование в ядро оставляя пару модулей;
make nconfig – новый консольный кофигуратор, нужен для правки некоторых моментов.
Начнем
- Получили исходники
- Теперь важно, по возможности, подключить все устройства, которые когда либо собираетесь использовать с вашим ПК, это подключит все нужные в будущем модули.
- Запускаем make localyesconfig, конфигуратор спросит о нескольких новых конфигурациях, добавленных в новой версии, ответьте на свое усмотрение или по у молчанию.
- make nconfig и читаем далее.
Конфигурация
- Выбираем разрядность будущего ядра в 3 пункте меню.
- Пункт Processor type and features -> Processor family -> ищем семейство вашего процессора, если не находим, оставляем как было.
- В пункте Supported processor vendors можно убрать из ядра поддержку процессоров других производителей. Убирать начинайте с последнего пункта.
- Далее CPU microcode loading support, если ваш процессор не поддерживается пакетом ucode, можно отключить. Как узнать, написано в интернете.
- Если у Вас не EFI сиситема, можно убрать EFI runtime service support
- Далее возвращаемся в самое начало и идем в Device Drivers.
- В Generic Driver Options -> Firmware loader имеется возможность вшить в ядро необходимые драйверам файлы (микрокод). Вернемся к этому пункту позже.
- В пункте Input device support можно отключить поддержку ненужных устройств ввода. Я отключал планшет и сенсорный экран.
- Возвращаемся и, если вы подключали USB HID устройства, тыкаем HID support -> Special HID drivers и переключаем все, что активировано, на модуль.
- Вернемся в Device Drivers, идем в USB support, после *** USB Device Class drivers *** вчитываемся и переключаем все на модуль.
- Далее можно выпилить поддержку Chrome железа в пункте меню Device Driver – Platform support for Chrome hardware.
- Возвращаемся в начало, настраиваем File systems. Тут можно выбрать, помимо основных, уже отмеченных файловых систем, дополнительные типа FAT, NTFS (DOS/FAT/NT Filesystems). Внимательно читайте конфиги, можно сразу включит возможность записи в NTFS.
Фух, на этом пока что все.
Компиляция
Далее это нужно собрать. Команда make без аргументов бросится собирать исходный код в один комок бинарного кода, но, по умолчанию, используя 1 потом, что достаточно медленно. Что бы указать ей колличество потоков, можно использовать аргумент –j вот так:
make – j(кол-во ядер + 1)
например для 2-х ядерно процессора пишем так: make – j3
Установка
После компиляции нужно ядро установить. Как это сделать, подробно описано на вики. Я же приведу пример комманд, которые использую сам:
cp arch/x86/boot/bzImage /boot/vmlinuz-linux-mainline – копируем ядро
make modules_install – установка модулей
grub-mkconfig -o /boot/grub/grub.cfg – обновляем конфиги Grub, чтобы он нашел новое ядро.
Перед конфигурацией Grub советую отключить все аргументы ядра.
Также отключите запуск любой графики на старте в systemd
Первый запуск
При первом запуске стоит следить за выводом ядра на экране. Если будут критические ошибки, их следует посмотреть в логах ядра.
Если у Вас, как у меня, стоит драйвер ATI и графика не запускается, может не хватать микрокода, о котором я говорил в п.7. Какой файл нужен драйверу, выводится в логах ядра. Микрокод ATI хранится по пути /lib/firmware/radeon. Для примера вот мои настройки:
После конфигурации нужно повторить установку ядра. Достаточно удалить старое с /boot и скопировать туда новое.
Заключение
Знаю, многие могут сказать, что это бред и прирост к скорости загрузки и работы системы в целом настолько мал, что не стоит таких усилий. Но я этим занимался не только из-за какой либо выгоды. Мне было интересно и, надеюсь, Вам также будет интересна эта тема.
В группе я запущу опрос о том, помогла ли компиляция ядра именно Вам.
Огромное спасибо, что прочитали данную статью, надеюсь, Вам понравилось. До новых встреч! 👋🏼
Автор статьи: Александр Сорока