Здравствуйте, коллеги. Столкнулся недавно с необходимостью смены ядра загрузки по умолчанию для альтового первого пункта меню grub. Ядра стоят оба un-def и std-def. Оба актуальные, причем un-def было установлено позже, т.е оно и было ядром по умолчанию. В связи с этим предлагаю добавить в утилиту update-kernel "фичу", например -d, --default установка ядра по умолчанию. К сожалению знаний не хватает сделать это самому.
Забыл добавить эта "фича" не должна заново качать ядра, модули, а просто устанавливать из этих двух, в моём случае, установленных ядер, одно, по умолчанию.
update-kernel -t std-def -f Разве не оно?
Антон, update-kernel -f -t std-def тоже не помогло. Умолчальным осталось un-def. Помогло apt-get remove kernel-image-std-def и, следом update-kernel -t std-def Но это излишние операции с удалением, установкой пакетов. Надо выделить функционал из этих манипуляций и оформить как фичу к update-kernel.
Управление меню grub, конечно, слабо относится к update-kernel, но вообще такая ручка для выбора очень даже интересна.
Используйте команду installkernel Например: installkernel 5.7.19-un-def-alt1
installkernel конечно подходит, и пакеты вроде бы не скачивает. Но перегенеривает initrd и производит упаковку образа. Это не слишком ли для простой смены ядра по умолчанию? Я конечно не специалист в этом, но есть сомнения. Мб из скрипта installkernel пакета bootloader-utils вытянуть некую функциональность, урезать её и добавить к update-kernel фичей -d ?
JFYI. На разных архитектурах, на разных системах загрузки (bios/efi) есть разные варианты переключения и некоторые из них не работают. Так что задача не тривиальная. Сколько я не пользовался использовать (там где было нужно) grub-set-default и grub-reboot ни разу они у меня не сработали как нужно (а у других людей на других системах якобы работали).
А может обернуть команду installkernel пока нет иного способа? На вариант наличия двух ядер. Например: update-kernel -d std-def и будет выбрано ядро std-def.
installkernel, на сколько я помню, выставляет симлинк vmlinuz (например, на vmlinuz-5.4.61-std-def-alt1), но если у вас в grub уже изменено умолчание с vmlinuz на что-то другое, то эта смена симлинка не окажет эффекта. Но, я не изучал эту тему глубоко - просто наблюдения с точки зрения очередного пользователя, для того кто будет это реализовывать (если будет).
Тут много вариантов получается: 1 - какой загрузчик используется (grub, lilo, extlinux ...) Grub2 крнечно по-умолчанию, но это не единственный вариант. 2 - какой образ или какое поведение предусмотрено в конфигурационном этого файле загрузчика. Теоретически наверное, можно написать скрипт, который проверяет, что применяется grub2, затем устанавливает в /etc/sysconfig/grub2 что-то типа: ... GRUB_DEFAULT='saved' GRUB_SAVEDEFAULT=true .... (ну, или что-то другое) ну и потом вызвать installkernel А в случае, если это не grub, то просто вызвать installkernel. Но вопрос , насколько результат выполнения такого скрипта будет соответствовать тому, что ожидает пользователь. И да - этот скрипт никак не связан по смыслу с обновлением ядра (updat-kernel) PS IMHO перегенерить initrd всегда полезно, особенно если сменилось ядро или железо в компе ;-) А время это занимает немного.
pps пропустил этап инициализации конфига (ggrub-mkconfig, lilo и т.п. ) ;-)
(In reply to ruslandh from comment #10) > Тут много вариантов получается: > 1 - какой загрузчик используется (grub, lilo, extlinux ...) Grub2 крнечно > по-умолчанию, но это не единственный вариант. > 2 - какой образ или какое поведение предусмотрено в конфигурационном этого > файле загрузчика. > > Теоретически наверное, можно написать скрипт, который проверяет, что > применяется grub2, затем устанавливает в /etc/sysconfig/grub2 что-то типа: > ... > > GRUB_SAVEDEFAULT=true > .... Только как раз наоборот, false. Чтобы не менял. Но, вообще, у Grub уже есть готовый набор ручек в виде grub-set-default, grub-reboot, grub-entries: https://www.altlinux.org/Grub#Как_отучить_GRUB2_запоминать_последний_выбранный_пункт?