Как-то вот так (но это рисунок, а не реальный вывод на текущий момент): # grub-entries 0 ALT p11 starter kit 1>0 Advanced options for .... 1>1 Advanced options for .... 1>2 N Advanced options for .... 1>3 * Advanced options for .... 2 UEFI Firmware Settings Т.е. звёздочной, например, помечать заданное через grub-set-default, а N (Next) - заданное через grub-reboot.
Created attachment 18750 [details] Патч grub-entries Предлагаю патч. Проверялись следующие комбинации: 1) GRUB_SAVEDEFAULT=false (saved_entry остается неизменным после успешной предыдущей загрузки) : [root@sisyphus ~]# grub-set-default "Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2" [root@sisyphus ~]# grub-reboot "Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1" [root@sisyphus ~]# grub-editenv list saved_entry=Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 next_entry=Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 [root@sisyphus ~]# grub-entries 0 ALT Workstation K 11.0 1>0 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz 1>1 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz (recovery mode) 1>2 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, un-def 1>3 N Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 1>4 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15 1>5 * Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 2 UEFI Firmware Settings 3 Memtest86+-7.20 4 Memtest86+-7.20 (may not work with Secure Boot) [root@sisyphus ~]# reboot ..... [root@sisyphus ~]# uname -r 6.15.0-6.15-alt1 [root@sisyphus ~]# grub-editenv list saved_entry=Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 next_entry= [root@sisyphus ~]# grub-entries 0 ALT Workstation K 11.0 1>0 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz 1>1 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz (recovery mode) 1>2 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, un-def 1>3 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 1>4 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15 1>5 * Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 2 UEFI Firmware Settings 3 Memtest86+-7.20 4 Memtest86+-7.20 (may not work with Secure Boot) [root@sisyphus ~]# reboot ...... [root@sisyphus ~]# uname -r 6.6.16-un-def-alt2 [root@sisyphus ~]# grub-editenv list saved_entry=Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 next_entry= [root@sisyphus ~]# grub-entries 0 ALT Workstation K 11.0 1>0 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz 1>1 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz (recovery mode) 1>2 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, un-def 1>3 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 1>4 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15 1>5 * Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 2 UEFI Firmware Settings 3 Memtest86+-7.20 4 Memtest86+-7.20 (may not work with Secure Boot) ########################################################### 2) GRUB_SAVEDEFAULT=true (saved_entry переписывается после успешной предыдущей загрузки) : [root@sisyphus ~]# uname -r 6.6.16-un-def-alt2 [root@sisyphus ~]# grub-set-default "Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2" [root@sisyphus ~]# grub-reboot "Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1" [root@sisyphus ~]# grub-editenv list saved_entry=Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 next_entry=Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 [root@sisyphus ~]# grub-entries 0 ALT Workstation K 11.0 1>0 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz 1>1 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz (recovery mode) 1>2 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, un-def 1>3 N Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 1>4 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15 1>5 * Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 2 UEFI Firmware Settings 3 Memtest86+-7.20 4 Memtest86+-7.20 (may not work with Secure Boot) [root@sisyphus ~]# reboot ..... [root@sisyphus ~]# uname -r 6.15.0-6.15-alt1 [root@sisyphus ~]# grub-editenv list saved_entry=gnulinux-advanced-1c8f5e8b-cd9f-402a-bd55-444e095dbbaf>gnulinux-6.15.0-6.15-alt1-advanced-1c8f5e8b-cd9f-402a-bd55-444e095dbbaf next_entry= [root@sisyphus ~]# grub-entries 0 ALT Workstation K 11.0 1>0 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz 1>1 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz (recovery mode) 1>2 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, un-def 1>3 * Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 1>4 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15 1>5 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 2 UEFI Firmware Settings 3 Memtest86+-7.20 4 Memtest86+-7.20 (may not work with Secure Boot) ########################################################### 3) saved_entry==next_entry : [root@sisyphus ~]# grub-set-default "ALT Workstation K 11.0" [root@sisyphus ~]# grub-reboot "ALT Workstation K 11.0" [root@sisyphus ~]# grub-editenv list saved_entry=ALT Workstation K 11.0 next_entry=ALT Workstation K 11.0 [root@sisyphus ~]# grub-entries 0 *N ALT Workstation K 11.0 1>0 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz 1>1 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, vmlinuz (recovery mode) 1>2 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, un-def 1>3 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15.0-6.15-alt1 1>4 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.15 1>5 Advanced options for ALT Workstation K 11.0>ALT Workstation K 11.0, 6.6.16-un-def-alt2 2 UEFI Firmware Settings 3 Memtest86+-7.20 4 Memtest86+-7.20 (may not work with Secure Boot)
Василий, большое спасибо, патч будет добавлен в следующем релизе в ближайшее время.
Нормально, хотя заметно замедлился вывод: Старый: # time -p ./grub-entries.bak 0 ALT p11 starter kit 1>0 Advanced options for ALT p11 starter kit>ALT p11 starter kit, vmlinuz 1>1 Advanced options for ALT p11 starter kit>ALT p11 starter kit, vmlinuz (recovery mode) 1>2 Advanced options for ALT p11 starter kit>ALT p11 starter kit, std-def 1>3 Advanced options for ALT p11 starter kit>ALT p11 starter kit, 6.12.21-6.12-alt1 1>4 Advanced options for ALT p11 starter kit>ALT p11 starter kit, 6.12 1>5 Advanced options for ALT p11 starter kit>ALT p11 starter kit, 5.10.235-std-def-alt1 2 UEFI Firmware Settings real 0.01 user 0.01 sys 0.00 новый: # time -p ./grub-entries 0 ALT p11 starter kit 1>0 Advanced options for ALT p11 starter kit>ALT p11 starter kit, vmlinuz 1>1 Advanced options for ALT p11 starter kit>ALT p11 starter kit, vmlinuz (recovery mode) 1>2 Advanced options for ALT p11 starter kit>ALT p11 starter kit, std-def 1>3 Advanced options for ALT p11 starter kit>ALT p11 starter kit, 6.12.21-6.12-alt1 1>4 Advanced options for ALT p11 starter kit>ALT p11 starter kit, 6.12 1>5 * Advanced options for ALT p11 starter kit>ALT p11 starter kit, 5.10.235-std-def-alt1 2 UEFI Firmware Settings real 0.19 user 0.15 sys 0.06 В принципе, если ускорить негде, пусть так.
Created attachment 18809 [details] Патч grub-entries (версия 2) v2: Ускорено в ~2 раза: real 0.09 user 0.04 sys 0.06
а если внутри цикла "while IFS= read -r line; do" не sed использовать, а внутренние регулярные выражения bash использовать, не быстрее получится? Правда привязка к bash образуется. Bash, говорят, медленнее, чем sed, но sed ещё и вызвать надо.
(In reply to Sergey Y. Afonin from comment #5) > а если внутри цикла "while IFS= read -r line; do" не sed использовать, а > внутренние регулярные выражения bash использовать, не быстрее получится? Быстрее примерно в ~2 раза, но теряется совместимость с dash и zsh. Текущей производительности скрипта с патчем v2 для этой задачи достаточно, она на уровне пользовательских скриптов grub-set-default и grub-reboot .
(Ответ для Egor Ignatov на комментарий #2) > Василий, большое спасибо, патч будет добавлен в следующем релизе в ближайшее > время. Забыли? 14 ноября 2025 г. Egor Ignatov 2.12-alt15 - grub-install: Embed SBAT metadata by default (closes: #41959)
(In reply to Sergey Y. Afonin from comment #7) > (Ответ для Egor Ignatov на комментарий #2) > > > Василий, большое спасибо, патч будет добавлен в следующем релизе в ближайшее > > время. > > Забыли? > > 14 ноября 2025 г. Egor Ignatov 2.12-alt15 > - grub-install: Embed SBAT metadata by default (closes: #41959) Релиз 2.12-alt15 должен был быть побольше и чуть позже, но понадобилось исправить #41959. К данному багу скорее всего вернусь уже вместе с обновлением до 2.14.