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 ...