Обновление ядра в CentOS до последней версии
Список команд для быстрого обновления:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/elrepo-release-7.0-3.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel -y grub2-set-default 'CentOS Linux (4.20.10-1.el7.elrepo.x86_64) 7 (Core)' grub2-mkconfig -o /boot/grub2/grub.cfg grub2-editenv list yum install yum-utils package-cleanup --oldkernels --count=2 nano /etc/yum.conf ##add exclude=kernel.x86_64 # tuned on virual server tuned-adm profile virtual-guest tuned-adm active === modprobe tcp_bbr echo "tcp_bbr" | sudo tee -a /etc/modules-load.d/modules.conf echo "net.core.default_qdisc = fq" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control = bbr" | sudo tee -a /etc/sysctl.conf echo "# allow testing with buffers up to 64MB net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 # increase Linux autotuning TCP buffer limit to 32MB net.ipv4.tcp_rmem = 4096 87380 33554432 net.ipv4.tcp_wmem = 4096 65536 33554432 # recommended default congestion control is htcp net.ipv4.tcp_congestion_control=htcp # recommended for hosts with jumbo frames enabled net.ipv4.tcp_mtu_probing=1 # recommended for CentOS7/Debian8 hosts net.core.default_qdisc = fq " | sudo tee -a /etc/sysctl.conf sysctl -p == check - sysctl net.ipv4.tcp_available_congestion_control sysctl net.ipv4.tcp_congestion_control == yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel kernel-ml-headers -y
В данном посте будет рассмотрено обновление ядра в CentOS 6,7 до последней версии.
Шаг 1. Добавление репозитория в систему
Импортируем ключ
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
Добавляем репозиторий для CentOS 7
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Добавление репозитория для CentOS 6 (Внимание, перед установкой ядра нужно обновить систему командой yum upgrade)
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
Шаг 2. Устанавливаем плагин yum-plugin-fastestmirror
yum install yum-plugin-fastestmirror
Шаг 3. Проверяем текущую версию ядра
uname -r
Результат для CentOS 7
Шаг 4. Устанавливаем последнюю версию ядра доступную в репозитории.
yum --enablerepo=elrepo-kernel install kernel-ml
пакет kernel-ml это текущий стабильный релиз ядра.
Как видно из скрина мы установили последнюю версию ядра CentOS (На данный момент это версия 4.6)
Перегружаем систему
reboot
Шаг 5. Выбор версии ядра при загрузке системы.
При загрузке системы мы увидим установленное ядро
Шаг 6. Проверка версии ядра CentOS а так же опции
net.ipv6.ip_nonlocal_bind
P.S. для запуска сервера с новым ядром 4.6 нужно внести изменения в загрузчик grub2 командой
grub2-set-default 0
в этом случае по умолчанию будет запускаться первое по списку ядро.
Для просмотра дефолтного пункта загрузки можно воспользоваться командой
grub2-editenv list
Вывод
Далее, нужно убедиться в том, что новая версия ядра установлена и корректно прописана в автозагрузчике
?
1
cat /boot/grub2/grub.cfg | grep 'CentOS Linux (4'
На данном этапе важно ничего не изменять в этом файле, так как он генерируется динамически. Все что нам нужно — это убедиться в том, что новая версия ядра в нем указана и скопировать ее название.
После того, как новая версия ядра успешно установлена, она все еще не является текущей. Т.е. при следующей перезагрузке системы должно появиться окно выбора версии ядра по умолчанию.
Но, так как мы работаем с системой удаленно при помощи терминала SSH, увидеть выбор ядра при загрузке системы не представляется возможным (но если есть удаленный доступ через KVM это все упрощает), поэтому ядро по умолчанию будем устанавливать в ручном режиме.
На всякий случай проверим какое ядро загружется по умолчанию
?
1
# cat /etc/default/grub
В файле увидим следующую строку
?
1
GRUB_DEFAULT=saved
Что означает, что будет загружена последняя сохраненная версия.
Какая же версия ядра была загружена последней?
Это можно увидеть при помощи следующей команды
?
1
# grub2-editenv list
В ответ получим примерно следующее
?
1
saved_entry=CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)
Разумеется, точная версия может отличаться.
Далее, ручками изменяем версию ядра по умолчанию
?
1
# grub2-set-default [title number=»» or=»»]
Где title будет точный заголовок нового ядра, который мы увидели (и скопировали) ранее в файле /boot/grub2/grub.cfg
В моем случае новое ядро имеет следующий заголовок
?
1
CentOS Linux (4.4.0-1.el7.elrepo.x86_64) 7 (Core)
таким образом, команда по изменению ядра, загружаемого по умолчанию будет выглядеть следующим образом
?
1
grub2-set-default 'CentOS Linux (4.16.13-1.el7.elrepo.x86_64) 7 (Core)'
Важно — весь заголовок оборачивается в одинарные кавычки.
После этого еще раз проверим версию ядра загружаемого по умолчанию
?
1
# grub2-editenv list
На этом этапе сохраняем новую конфигурацию автозагрузчика
?
1
# grub2-mkconfig -o /boot/grub2/grub.cfg
Ну и, наконец, перезагружаем систему
?
1
# reboot
После того, как система перезагрузилась можно проверить текущую версию ядра
?
1
# uname -r
В моем случае вывод будет таким
?
1
4.4.0-1.el7.elrepo.x86_64
На этом, собственно, апгрейд ядра CentOS 7 закончен.
http://blog.stolbunsky.com/2016/01/upgrade-centos7-kernel.html