Bug 54130 - По возможности отображать в grub-entries выбор по умолчанию и выбор на следующую загрузку
Summary: По возможности отображать в grub-entries выбор по умолчанию и выбор на следую...
Status: ASSIGNED
Alias: None
Product: Sisyphus
Classification: Development
Component: grub (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 enhancement
Assignee: Egor Ignatov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-05-05 10:36 MSK by Sergey Y. Afonin
Modified: 2025-11-20 15:36 MSK (History)
5 users (show)

See Also:


Attachments
Патч grub-entries (5.19 KB, patch)
2025-06-05 13:24 MSK, Vasiliy Kovalev
no flags Details | Diff
Патч grub-entries (версия 2) (5.24 KB, patch)
2025-06-09 14:26 MSK, Vasiliy Kovalev
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2025-05-05 10:36:35 MSK
Как-то вот так (но это рисунок, а не реальный вывод на текущий момент):

# 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.
Comment 1 Vasiliy Kovalev 2025-06-05 13:24:34 MSK
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)
Comment 2 Egor Ignatov 2025-06-06 10:33:27 MSK
Василий, большое спасибо, патч будет добавлен в следующем релизе в ближайшее время.
Comment 3 Sergey Y. Afonin 2025-06-09 09:49:52 MSK
Нормально, хотя заметно замедлился вывод:

Старый:

# 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

В принципе, если ускорить негде, пусть так.
Comment 4 Vasiliy Kovalev 2025-06-09 14:26:58 MSK
Created attachment 18809 [details]
Патч grub-entries (версия 2)

v2: Ускорено в ~2 раза:

real 0.09
user 0.04
sys 0.06
Comment 5 Sergey Y. Afonin 2025-06-09 15:35:37 MSK
а если внутри цикла "while IFS= read -r line; do" не sed использовать, а внутренние регулярные выражения bash использовать, не быстрее получится? Правда привязка к bash образуется. Bash, говорят, медленнее, чем sed, но sed ещё и вызвать надо.
Comment 6 Vasiliy Kovalev 2025-06-11 19:19:44 MSK
(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 .
Comment 7 Sergey Y. Afonin 2025-11-20 12:48:50 MSK
(Ответ для Egor Ignatov на комментарий #2)

> Василий, большое спасибо, патч будет добавлен в следующем релизе в ближайшее
> время.

Забыли?

14 ноября 2025 г. Egor Ignatov 2.12-alt15
- grub-install: Embed SBAT metadata by default (closes: #41959)
Comment 8 Egor Ignatov 2025-11-20 15:36:42 MSK
(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.