Slackware
December 9, 2022

Как обновить/пересобрать ядро в Slackware 15

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

Подготовка к сборке кастомного ядра:

  • Для начала качаем сорцы нужной версии ядра с https://www.kernel.org/, распакуем в /usr/src/
  • Переходим /usr/src, убиваем симлинк на linux, и делаем новый с нашего каталога с ядром на linux: ln -s linux-5.18.16 linux (в зависимости от версии нового ядра)
  • Копируем временно /boot и /lib/modules (у меня через mount на бэкап-диск: /dev/sdb)
  • Переходим в cd /usr/src/linux
  • Копируем текущий рабочий конфиг zcat /proc/config.gz > .config

Процесс сборки:

  • В каталоге /usr/src/linux выполняем make oldconfig чтоб выровнять новый конфиг относительно старого
  • Выполняем make localmodconfig, чтобы убрать лишние модули
  • Добавляем/убираем необходимые настройки ядра вручную: make menuconfig
  • Правим EXTRAVERSION (по желанию) на любое своё значение.
  • Запускаем сборку сжатого ядра и модулей: make bzImage modules
  • После сборки устанавливаем ядро и модули: make modules_install, make install
  • Генерируем новый initrd: cd /boot && mkinitrd -c -k 5.15.38 -r /dev/sda2 -f ext4 -m ext4
  • Обновляем загрузчик (в моем случае это elilo): eliloconfig
  • Переносим вручную новый initrd и vmlinuz в каталог загрузки:
    cp -v /boot/initrd.gz /boot/efi/EFI/Slackware/
    cp -v /boot/vmlinuz-generic-5.15.38 /boot/efi/EFI/Slackware/
  • Проверяем конфиг (на всякий случай) vim /boot/efi/EFI/Slackware/elilo.conf
  • Перед ребутом можно выполнить uname -rчтобы проверить версию ядра до/после ребута
  • Ребутимся и проверяем версию ядра

Если ядро обновляется пакетом, то следует обновить только initrd и загрузчик (без пересборки ядра и модулей)