LinuxForum.Fans
Тема

Симлинки на две последние версии ядра

Автор: facebreaker 2 сообщений 724 просмотров
01.08.2024 17:24 · отредактировано #439536

В Debian-based дистрибутивах есть такая фишка, создаются симлинки на две последние версии ядра в корне или в каталоге /boot.

"Пример"

Подскажите, как это сделать на RockyLinux?

04.08.2024 23:51 #439543

Как то так возможно... все это делается средствами grub
Сохраняем бэкап на случай если файл получится запороть
[console]sudo cp /etc/grub.d/10_linux /etc/grub.d/10_linux.bak[/console]
Файл /etc/grub.d/10_linux отвечает за генерацию меню загрузки GRUB, в частности, добавление записей для установленных ядер Linux. В этом файле находятся скрипты, которые собирают информацию о доступных ядрах и формируют конфигурацию для отображения в меню при загрузке
[console]sudo nano /etc/grub.d/10_linux[/console]
Структура файла:
Внутри файла вы увидите множество функций, которые ищут доступные ядра и генерируют соответствующие записи. Основные функции имеют такие названия, как:
- linux_entry — создает запись для конкретного ядра.
- menuentry — отвечает за отображение записи в меню GRUB

строчка для двух ядер может выглядеть так

text
linux_versions=( $(ls /boot/vmlinuz-* | sort -V | tail -n 2) )

Правим файл и после сохранения обычно делается команда обновить загрузчик
[console]sudo update-grub[/console]
возможно в вашем случае команда Выше может выглядеть так:
[console]sudo grub2-mkconfig -o /boot/grub2/grub.cfg[/console]
Добавлено: 04.08.2024 23:51:32

Пример ниже сгенерирован нейросетью

text
#!/bin/sh
set -e

if [ -e /boot/grub2/grubenv ]; then save_env=grubenv else save_env="" fi

# Определяем функцию для вывода пунктов меню для ядер Linux menu_entry() { local version="$1" local title="$2" local initrd="$3" echo " menuentry 'Linux $title' --class linux --class gnu-linux {" echo " insmod ext2" echo " set root='${GRUB_DEVICE}'" echo " linux /vmlinuz-$version root=$root ro" [ -n "$initrd" ] && echo " initrd /$initrd" echo " }" }

# Считаем количество доступных ядер count=0

# Цикл по доступным ядрам Linux и генерация пунктов меню for kernel in /boot/vmlinuz-*; do version=$(basename "$kernel" | sed 's/^vmlinuz-//') initrd="/boot/initramfs-$version.img" title="$version"

if [ -f "$initrd" ]; then # Генерируем меню только для двух последних ядер if [ $count -lt 2 ]; then menu_entry "$version" "$title" "$initrd" count=$((count + 1)) fi fi done

# Дополнительные настройки и пункты меню для восстановления или специальных ядер могут быть добавлены здесь

Войдите или зарегистрируйтесь, чтобы ответить.