Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Несколько ядер в меню: linux, linux-lts, linux-hardened

Короткий ответ: ставь обычное ядро linux как основное, а linux-lts как запасное для серьёзной работы. linux-hardened нужен, если безопасность важнее скорости, а linux-zen подойдёт для десктопа, где хочется отзывчивости. Все четыре можно держать рядом: GRUB покажет их в меню, а выбор нужного занимает пару секунд.

Чем отличаются ядра в меню GRUB?

В Arch Linux ядро устанавливается как обычный пакет. Их можно ставить несколько, и каждое живёт в /boot со своими файлами: vmlinuz-linux, vmlinuz-linux-lts, vmlinuz-linux-hardened, vmlinuz-linux-zen. Рядом лежат initramfs-образы с теми же именами, а модули каждого ядра хранятся отдельно в /usr/lib/modules. Ядра не конфликтуют между собой.

Посмотреть, какие ядра стоят в системе, можно двумя способами: ls /boot покажет файлы, а pacman -Q | grep linux выведет установленные пакеты. Версии ядер не совпадают: обычное ядро обновляется до свежей ветки каждые несколько недель, а LTS держится на одной и той же ветке годами.

linux

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

linux-lts

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

linux-hardened

Обычное ядро с набором патчей безопасности: усиленная защита памяти, ограничения на часть системных вызовов, дополнительные проверки. Работает чуть медленнее, зато эксплуатировать уязвимости сложнее. Полезно, если ты держишь публичные сервисы или работаешь с чужими файлами.

linux-zen

Сборка с тюнингом под десктоп: другие планировщики, настройки под интерактивную нагрузку. Субъективно система отзывается быстрее. Для игр и повседневной работы неплохой вариант, но чудес не жди. Если сомневаешься между zen и обычным ядром, начни с обычного: разница заметна не всегда.

Как установить второе ядро?

Одна команда:

sudo pacman -S linux-lts

Вместе с ядром подтянутся заголовки linux-lts-headers (они нужны для сборки модулей), а pacman-хук автоматически сгенерирует initramfs-образ. Initramfs содержит модули, нужные для монтирования корня: драйверы дисков, поддержку шифрования, файловые системы. Без него ядро не сможет найти корневой раздел. То же самое для остальных вариантов:

sudo pacman -S linux-hardened
sudo pacman -S linux-zen

Заголовки нужны не только для ручной сборки модулей. Если ты используешь DKMS-модули, например драйверы NVIDIA или модули VirtualBox, они пересобираются под каждое установленное ядро автоматически. Без заголовков DKMS не сможет собрать модуль для нового ядра, и оно не загрузится с нужным драйвером. Если заголовки не подтянулись сами, поставь их вручную:

sudo pacman -S linux-lts-headers

После установки проверь, что файлы на месте:

ls /boot

Ты увидишь vmlinuz-linux-lts и initramfs-linux-lts.img рядом с обычными. Какое ядро активно сейчас, покажет uname -r. Проверить, что пакет на месте, можно командой pacman -Q linux-lts.

Что происходит при обновлении системы?

sudo pacman -Syu обновляет все установленные ядра разом. Для каждого пакета срабатывает хук mkinitcpio, и генерируется свежий initramfs-образ. Пункты меню при этом не меняются: названия ядер те же, просто под ними теперь лежат новые файлы. Перегенерировать grub.cfg после обычного обновления не обязательно, но если ты менял параметры ядра или добавлял модули в mkinitcpio, сделай это.

Если какое-то ядро после обновления перестало загружаться, не паникуй. Выбери в меню другое ядро, загрузись и разберись со старым: откати пакет из кэша pacman или удали его. Именно для этого и держат запасное ядро.

Как GRUB показывает все ядра в меню?

GRUB не знает о ядрах сам по себе. Он читает конфиг, который генерирует grub-mkconfig, а тот сканирует /boot и находит все vmlinuz-*. После установки нового ядра перегенерируй конфиг:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Скрипт собирает конфиг из шаблонов в /etc/grub.d. Шаблон 10_linux сканирует /boot, находит все ядра и для каждого создаёт пункт меню.

В меню появятся пункты: Arch Linux, Arch Linux (linux-lts), Arch Linux (linux-hardened), Arch Linux (linux-zen). У каждого есть запасной вариант с fallback-initramfs. Запасной пункт пригодится, если основной initramfs-образ повреждён или не подходит под твоё железо. Fallback-образ собирается с минимальным набором модулей и часто спасает, когда основной не подходит. Если в меню появились дубли или старые пункты, значит, в /boot остались файлы удалённых ядер. Почисти их и перегенерируй конфиг. Если пункты не появились вовсе, разбор причин в статье «GRUB не видит ядра после обновления».

Как выбрать ядро при загрузке?

Самый простой способ: вручную. В меню GRUB стрелками выбери нужный пункт и нажми Enter. Выбор действует один раз, на следующую загрузку вернётся ядро по умолчанию.

Чтобы закрепить выбор, включи сохранение. Добавь в /etc/default/grub строку:

GRUB_DEFAULT=saved

и снова выполни:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Вместо saved можно прописать номер пункта или название прямо в GRUB_DEFAULT, например GRUB_DEFAULT="Arch Linux (linux-lts)". Тогда сохранение не нужно, но менять ядро придётся правкой файла и перегенерацией конфига.

Теперь работают две команды:

sudo grub-set-default "Arch Linux (linux-lts)"   # постоянный выбор
sudo grub-reboot "Arch Linux (linux-lts)"        # только следующая загрузка

grub-set-default меняет ядро по умолчанию надолго, grub-reboot только на один запуск. Название пункта должно точно совпадать с тем, что написано в grub.cfg. Вместо названия можно указывать номер пункта, начиная с нуля. Но названия надёжнее: номера сдвигаются, когда ты добавляешь или удаляешь ядра. Посмотреть текущее сохранённое значение можно командой grub-editenv list. Если добавить в /etc/default/grub строку GRUB_SAVEDEFAULT=true, любой пункт, выбранный вручную в меню, станет новым значением по умолчанию.

Как удалить лишнее ядро?

Если ядро больше не нужно, убери его вместе с заголовками:

sudo pacman -Rsn linux-lts

Флаг -s удалит зависимости, которые больше никому не нужны, в том числе linux-lts-headers. После этого снова перегенерируй конфиг GRUB, чтобы пункт исчез из меню.

Следи за местом на ESP. Каждое ядро с initramfs занимает больше 100 МБ, а раздел /boot на UEFI-системах часто маленький. Проверить размер легко:

du -sh /boot

Свободное место покажет df -h /boot. Если осталось меньше 50 МБ, пора чистить. На ESP в 512 МБ комфортно живут два-три ядра, на разделе в 1 ГБ можно держать все четыре.

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

Какое ядро выбрать под свою задачу?

Сценарии, которые встречаются чаще всего.

  • Обычный десктоп и ноутбук: linux. Свежие драйверы, свежие функции, всё работает из коробки.
  • Сервер или рабочая машина, где простой дорого стоит: linux-lts. Обновления предсказуемые, регрессии редки.
  • Публичные сервисы, работа с чужими файлами, повышенные требования к безопасности: linux-hardened.
  • Игры и десктоп с тюнингом: linux-zen.
  • Старое железо: linux-lts, если свежее ядро глючит.
  • Ноутбук с проприетарным драйвером NVIDIA: linux или linux-lts. Главное, чтобы драйвер поддерживал версию ядра, а модуль пересобрался через DKMS после обновления.
  • Машина, которая работает круглосуточно: linux-lts. Обновления реже, риск регрессий ниже.
  • Если не знаешь, что выбрать: linux. Под него всё тестируется в первую очередь.

Главное правило: не держи все четыре ядра ради интереса. Каждое занимает место на ESP и добавляет пункты в меню. Два ядра закрывают почти все сценарии, три нужны только при специфических требованиях.

Оптимальная связка для большинства: linux как основное и linux-lts как запасное. Если свежее ядро после обновления откажется загружаться, ты выберешь в меню LTS-вариант и продолжишь работу, а потом разберёшься с проблемой. Если захочешь сменить загрузчик целиком, сравни варианты в статье «systemd-boot vs GRUB: второе ядро».

Частые вопросы

Можно ли держать три ядра сразу?

Да. Ограничение одно: место на ESP. Каждое ядро с initramfs занимает больше 100 МБ, поэтому на разделе в 512 МБ поместится три-четыре варианта. Лишнее лучше удалять, а не копить: каждый лишний пункт в меню только мешает.

Новое ядро не появилось в меню GRUB. Что делать?

Выполни sudo grub-mkconfig -o /boot/grub/grub.cfg и проверь, что файлы vmlinuz-* лежат в /boot. Если конфиг сгенерировался, а пункта нет, проверь, что пакет ядра установлен полностью: pacman -Q linux-lts.

Чем linux-hardened отличается от обычного ядра?

Это то же ядро с дополнительными патчами безопасности: усиленная защита памяти, ограничения системных вызовов, дополнительные проверки. Цена: небольшое снижение производительности.

Свежее ядро не загружается. Как вернуться на старое?

В меню GRUB выбери пункт с linux-lts (или другим старым ядром) и загрузись. После этого удали проблемное ядро через sudo pacman -Rsn linux и перегенерируй конфиг. Если и LTS не загружается, проблема не в ядре, а в параметрах загрузки или initramfs.

Можно ли удалить обычное ядро linux и оставить только linux-lts?

Да. Удали linux через sudo pacman -Rsn linux и перегенерируй конфиг GRUB. Но помни: свежие драйверы и функции ты получишь только с обычным ядром, LTS обновляется реже и живёт на старой версии.

Полезные ресурсы

Заключение

Несколько ядер в меню GRUB работают как страховка, а не как лишняя сложность. linux даёт свежесть, linux-lts стабильность, linux-hardened безопасность, linux-zen отзывчивость. Установка сводится к pacman -S и grub-mkconfig, выбор при загрузке к паре нажатий, а удаление к pacman -Rsn. Держи linux и linux-lts рядом, и любая проблема с обновлением ядра перестанет быть проблемой.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max