Centos 7. Сборка ядра

Материал из Wiki
Версия от 20:38, 23 марта 2023; Cless (обсуждение | вклад) (Новая страница: «= Описание = Собираем новое ядро Centos 7 = Сборка ядра = Обновляем систему и ставим необходим...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Описание

Собираем новое ядро Centos 7

Сборка ядра

Обновляем систему и ставим необходимые утилиты

yum update -

yum install -y ncurses-devel make gcc bc bison flex elfutils-libelf-devel openssl-devel grub2

Gереходим в каталог для исходников

cd /usr/src/

Качаем исходники ядра

  • ядро 5.x скомпилировать не удалось - система ругается на старую версию GCC, хотя установлена её последняя версия из репозитория
  • ядро 4.x скомпилировалось без ошибок

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.229.tar.xz

Распаковываем исходники, переходим в каталог

tar -xvf linux-4.4.229.tar.xz

cd linux-4.4.229

Копируем конфиг текущего ядра для компиляции нового

cp -v  /boot/config-3.10.0-693.5.2.el7.x86_64 /usr/src/linux-4.4.229/

Делаем необходимые правки конфига

nano /usr/src/linux-4.4.229/.config

...
CONFIG_KVM_GUEST=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_BLK_DEV_SD
CONFIG_SCSI_VIRTIO=y
CONFIG_VIRTIO_NET=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
...

Переходим в каталог исходников

cd /usr/src/linux-4.4.229

Правим компоненты ядра

make menuconfig

Нажимаем Save, Exit

ПЕРЕД НАЧАЛОМ КОМПИЛЯЦИИ ЯДРА УБЕДИТЕСЬ, ЧТО ВАША СИСТЕМА ИМЕЕТ БОЛЕЕ 25 ГБ СВОБОДНОГО МЕСТА

Компилируем, устанавливаем

Процедура может длиться продолжительное время

make bzImage

make modules

make

make modules_install

make install

Новые созданные файлы:

ls -lh /boot/

...
-rw-------  1 root root  45M Oct 25 20:47 initramfs-4.4.229.img
-rw-r--r--  1 root root 3.3M Oct 25 20:44 System.map-4.4.229
-rw-r--r--  1 root root 6.0M Oct 25 20:44 vmlinuz-4.4.229
...

Также ядро прописалось в список ядер файла /boot/grub2/grub.conf

...
CentOS Linux (4.4.229) 7 (Core)
...

Установим новое ядро для загрузки по-умолчанию в grub2

Смотрим список ядер

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

...
CentOS Linux (4.4.229) 7 (Core)
CentOS Linux (3.10.0-1127.19.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1062.12.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1062.9.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-db45e37e3d514d34a20d42dbfb2fec18) 7 (Core)
...

Устанавливаем номер ядра из списка, которое будет загружаться по-умолчанию

(список нумеруется с "0", то есть выбираем "CentOS Linux (4.4.229) 7 (Core)")

grub2-set-default 0

Генерируем файл конфигурации grub2

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

Проверяем

grep saved /boot/grub2/grubenv

...
saved_entry=0
...

reboot

Проверяем

uname -r

...
4.4.229
...