GRUB: boot specific kernel on debian / ubuntu / rhel / centos / oracle linux

Debian-based distributions:
1. List installed kernels in grub:

root@deb8-template:~# awk '/menuentry/ && /class/ {count++; print count-1"****"$0 }' /boot/grub/grub.cfg
0****menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
1****	menuentry 'Debian GNU/Linux, with Linux 4.15.0-1007-aws' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-1007-aws-advanced-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
2****	menuentry 'Debian GNU/Linux, with Linux 4.15.0-1007-aws (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-1007-aws-recovery-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
3****	menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-advanced-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
4****	menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-recovery-75b66937-9cfb-4606-9e0b-b27aa66e7286' {

…and make grub boot kernel by number, in this example kernel ‘Debian GNU/Linux, with Linux 4.15.0-1007-aws’:

root@deb8-template:~# grub-set-default 1

RHEL-based distributions:

1. List kernels:

root@ol7-template.test:~# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 
0 : Oracle Linux Server (4.14.35-1844.5.3.el7uek.x86_64 with Unbreakable Enterprise Kernel) 7.6
1 : Oracle Linux Server (3.10.0-957.el7.x86_64 with Linux) 7.6
2 : Oracle Linux Server (0-rescue-b1a45709c59a44dda124eb5162f11bbc with Linux) 7.6
root@ol7-template.test:~# 

2. Set default kernel in GRUB:
Lets boot kernel ‘4.14.35-1844.5.3.el7uek.x86_64’, it has number 0:

root@ol7-template.test:~# grub2-set-default 0

… and then reboot.

LXC: systemd-journal пожирает 100% CPU — решение проблемы

При использовании контейнеров на базе LXC (Linux Containers) на CentOS 7.5 есть проблема — systemd-journal пожирает 100% CPU.
Чтобы решить эту проблему, необходимо в файле конфигурации контейнера /var/lib/lxc/{container}/config добавить следующие настройки:

lxc.autodev = 1
lxc.kmsg = 0

А так же в самом контейнере, в init-файле systemd, расположенному по {ct_rootfs}/lib/systemd/system/getty@.service закомментировать настройку:

ConditionPathExists=/dev/tty0

При перезапуске контейнера проблема будет устранена.

Установка UEKR4 на CentOS 7

Стоковые ядра, поставляемые в RHEL / CentOS, хоть и ентерпрайзные, и работают уверенно, но зачастую не дают раскрыть полный потенциал новых серверных камней и свежего железа. Входящее в стандартную поставку ядро 3.10 является устаревшим, хоть в него и бэкпортят поддержку современного оборудования и новых функций. В этом случае имеет смысл установить ядро UEK, которое с каждым новым релизом базируется на LTS выпуске vanilla kernel, с применением патчей от Oracle. В текущем времени ядро UEKR4 основано на ветке 4.1.12, которое не так сильно устарело, как 3.10.
Для установки ядра Unbreakable Enterprise Kernel Release 4 на CentOS 7.5 необходимо:
Установить репозитории Oracle на машине с CentOS:

# cd /etc/yum.repos.d
# wget http://yum.oracle.com/public-yum-ol7.repo
# rpm --import http://oss.oracle.com/ol6/RPM-GPG-KEY-oracle

Далее включить ТОЛЬКО репозиторий ol7_UEKR4 [Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux] в public-yum-ol7.repo, иначе сломаются зависимости в системе.
Поставить ядро kernel-uek:

Installing:
 kernel-uek      x86_64      4.1.12-124.16.4.el7uek        ol7_UEKR4            46 M
Installing for dependencies:
 kernel-uek-firmware    noarch        4.1.12-124.16.4.el7uek      ol7_UEKR4          2.5 M

Теперь нужно посмотреть порядок загрузки ядер в grub:

[root@localhost ~]# awk -F\' /^menuentry/{print\$2} /etc/grub2.cfg
CentOS Linux (4.1.12-124.16.4.el7uek.x86_64) 7 (Core)
CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-578c26b30f6743ee9d21a5fa0af4860e) 7 (Core)
CentOS Linux Memtest memtest86+-5.01
[root@localhost ~]# 

И поскольку нумерация начинается с 0, то в моем случае el7uek это и есть 0. Устанавливаем в grub ядро по-умолчанию 0.

# grub2-set-default 1

Перезагружаемся…и вуаля..

[root@localhost ~]# uname -a
Linux localhost.localdomain 4.1.12-124.16.4.el7uek.x86_64 #2 SMP Thu Jun 14 18:17:30 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]#

P.S: Жду UEKR5 GA for production use.