<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>37379</bug_id>
          
          <creation_ts>2019-10-25 13:45:41 +0300</creation_ts>
          <short_desc>grub может произвольно изменить название пунктов меню</short_desc>
          <delta_ts>2026-02-12 14:17:04 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>grub</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Y. Afonin">asy</reporter>
          <assigned_to name="Egor Ignatov">egori</assigned_to>
          <cc>antohami</cc>
    
    <cc>nickel</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185119</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2019-10-25 13:45:41 +0300</bug_when>
    <thetext>Увидел такой момент. Было:

# grub-entries
0       ALT p9 starter kit
1&gt;0     Дополнительные параметры для ALT p9 starter kit&gt;ALT p9 starter kit, vmlinuz
1&gt;1     Дополнительные параметры для ALT p9 starter kit&gt;ALT p9 starter kit, vmlinuz (recovery mode)
1&gt;2     Дополнительные параметры для ALT p9 starter kit&gt;ALT p9 starter kit, 4.19.79-std-def-alt1
1&gt;3     Дополнительные параметры для ALT p9 starter kit&gt;ALT p9 starter kit, 4.9.196-std-def-alt0.M80P.1
1&gt;4     Дополнительные параметры для ALT p9 starter kit&gt;ALT p9 starter kit, 4.9.161-std-def-alt0.M80P.1
2       Memtest86+-5.01

После grub-mkconfig -o /boot/grub/grub.cfg стало:

# grub-entries
0       ALT p9 starter kit
1&gt;0     Advanced options for ALT p9 starter kit&gt;ALT p9 starter kit, vmlinuz
1&gt;1     Advanced options for ALT p9 starter kit&gt;ALT p9 starter kit, vmlinuz (recovery mode)
1&gt;2     Advanced options for ALT p9 starter kit&gt;ALT p9 starter kit, 4.19.79-std-def-alt1
1&gt;3     Advanced options for ALT p9 starter kit&gt;ALT p9 starter kit, 4.9.196-std-def-alt0.M80P.1
1&gt;4     Advanced options for ALT p9 starter kit&gt;ALT p9 starter kit, 4.9.161-std-def-alt0.M80P.1
2       Memtest86+-5.01

Учитывая, что значение может быть использовано в saved_entry в /boot/grub/grubenv хочется blocker поставить. Так и придётся за нечитабельные метки с uuid завязываться...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185209</commentid>
    <comment_count>1</comment_count>
    <who name="Николай Костригин">nickel</who>
    <bug_when>2019-10-31 10:22:33 +0300</bug_when>
    <thetext>Спасибо за отчет. Посмотрю. На других дистрибутивах не пробовали?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185210</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2019-10-31 10:50:16 +0300</bug_when>
    <thetext>(In reply to comment #1)

&gt; Спасибо за отчет. Посмотрю. На других дистрибутивах не пробовали?

В других не пробовал. На самом деле баг больше для того пока, чтобы на него ссылку сделать, так как непонятно, что делать, если подумать. Локализация загрузочного меню нужна по идее, так что и изменения будут в зависимости от локали при генерации. Разве что допиливать Grub до варианта, когда локализация будет только при отображении меню, а не в конфиге.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187764</commentid>
    <comment_count>3</comment_count>
    <who name="Николай Костригин">nickel</who>
    <bug_when>2020-02-12 10:26:32 +0300</bug_when>
    <thetext>(Ответ для Sergey Y. Afonin на комментарий #2)

&gt; В других не пробовал. 

На kworkstation 9.0 beta не воспроизводится.
Чтобы добиться описанного поведения приходится принудительно делать 
LC_ALL=C update-grub

Соответственно, возможно, в starter kit&apos;ах просто нужно синхронизировать локализацию между установщиком и целевой системой.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187765</commentid>
    <comment_count>4</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2020-02-12 10:56:28 +0300</bug_when>
    <thetext>В каком стартерките проблема? В стартерките и регулярке lxde такой проблемы нет, проверил.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187766</commentid>
    <comment_count>5</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2020-02-12 11:09:13 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #4)
&gt; В каком стартерките проблема? В стартерките и регулярке lxde такой проблемы
&gt; нет, проверил.

Дошло. Если переключиться в tty, то у root LANG=POSIX, соответственно, update-grub сделает на english всё.

А в дистрибутивах у нас в соседней tty у root какой язык?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187768</commentid>
    <comment_count>6</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2020-02-12 11:15:57 +0300</bug_when>
    <thetext>(Ответ для Sergey Y. Afonin на комментарий #0)
&gt; Учитывая, что значение может быть использовано в saved_entry в
&gt; /boot/grub/grubenv хочется blocker поставить. Так и придётся за
&gt; нечитабельные метки с uuid завязываться...

Да нормально grub на такие перемены реагирует. Ругается при запуске на полсекунды, но выбирает пункт правильный всё равно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187772</commentid>
    <comment_count>7</comment_count>
    <who name="Николай Костригин">nickel</who>
    <bug_when>2020-02-12 12:11:29 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #5)
&gt; Дошло. Если переключиться в tty, то у root LANG=POSIX, соответственно,
&gt; update-grub сделает на english всё.
&gt; 
&gt; А в дистрибутивах у нас в соседней tty у root какой язык?

в kworkstation 9.0 beta тоже на соседней tty у root LANG=POSIX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187791</commentid>
    <comment_count>8</comment_count>
    <who name="Николай Костригин">nickel</who>
    <bug_when>2020-02-12 16:11:20 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #6)
&gt; (Ответ для Sergey Y. Afonin на комментарий #0)
&gt; &gt; Учитывая, что значение может быть использовано в saved_entry в
&gt; &gt; /boot/grub/grubenv хочется blocker поставить. Так и придётся за
&gt; &gt; нечитабельные метки с uuid завязываться...
&gt; 
&gt; Да нормально grub на такие перемены реагирует. Ругается при запуске на
&gt; полсекунды, но выбирает пункт правильный всё равно.

Поддерживаю. Тем более, что по пунктам перестановок нет:

[root@localhost ~]# diff --width=80 -y grub_entries.ru grub_entries.en 
0       ALT Workstation K 9.0 BETA      0       ALT Workstation K 9.0 BETA
1&gt;0     Дополнительные параметры для  | 1&gt;0     Advanced options for ALT Work
1&gt;1     Дополнительные параметры для  | 1&gt;1     Advanced options for ALT Work
1&gt;2     Дополнительные параметры для  | 1&gt;2     Advanced options for ALT Work
1&gt;3     Дополнительные параметры для  | 1&gt;3     Advanced options for ALT Work
2       Windows 7 (на /dev/sda1)      | 2       Windows 7 (on /dev/sda1)
3       ALT Workstation K 8.3  (Centa | 3       ALT Workstation K 8.3  (Centa
4&gt;0     Дополнительные параметры для  | 4&gt;0     Advanced options for ALT Work
4&gt;1     Дополнительные параметры для  | 4&gt;1     Advanced options for ALT Work
4&gt;2     Дополнительные параметры для  | 4&gt;2     Advanced options for ALT Work
4&gt;3     Дополнительные параметры для  | 4&gt;3     Advanced options for ALT Work
4&gt;4     Дополнительные параметры для  | 4&gt;4     Advanced options for ALT Work
4&gt;5     Дополнительные параметры для  | 4&gt;5     Advanced options for ALT Work
4&gt;6     Дополнительные параметры для  | 4&gt;6     Advanced options for ALT Work
4&gt;7     Дополнительные параметры для  | 4&gt;7     Advanced options for ALT Work
4&gt;8     Дополнительные параметры для  | 4&gt;8     Advanced options for ALT Work
4&gt;9     Дополнительные параметры для  | 4&gt;9     Advanced options for ALT Work
4&gt;10    Дополнительные параметры для  | 4&gt;10    Advanced options for ALT Work
4&gt;11    Дополнительные параметры для  | 4&gt;11    Advanced options for ALT Work
5       Debian GNU/Linux 9 (stretch)  | 5       Debian GNU/Linux 9 (stretch) 
6&gt;0     Дополнительные параметры для  | 6&gt;0     Advanced options for Debian G
6&gt;1     Дополнительные параметры для  | 6&gt;1     Advanced options for Debian G
6&gt;2     Дополнительные параметры для  | 6&gt;2     Advanced options for Debian G
6&gt;3     Дополнительные параметры для  | 6&gt;3     Advanced options for Debian G
6&gt;4     Дополнительные параметры для  | 6&gt;4     Advanced options for Debian G
7       Windows 7 (на /dev/sdb1)      | 7       Windows 7 (on /dev/sdb1)
8       Memtest86+-5.01                 8       Memtest86+-5.01

а в /boot/grub/grubenv saved_entry хранится в виде числового указателя:

[root@localhost ~]# cat /boot/grub/grubenv 
# GRUB Environment Block
saved_entry=1&gt;1

Таким образом нарушения порядка загрузки при любом языке пунктов меню не будет</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187793</commentid>
    <comment_count>9</comment_count>
    <who name="Николай Костригин">nickel</who>
    <bug_when>2020-02-12 16:18:12 +0300</bug_when>
    <thetext>(Ответ для Sergey Y. Afonin на комментарий #2)
&gt; (In reply to comment #1)
&gt; 
&gt; &gt; Спасибо за отчет. Посмотрю. На других дистрибутивах не пробовали?
&gt; 
&gt; В других не пробовал. На самом деле баг больше для того пока, чтобы на него
&gt; ссылку сделать, так как непонятно, что делать, если подумать. Локализация
&gt; загрузочного меню нужна по идее, так что и изменения будут в зависимости от
&gt; локали при генерации. Разве что допиливать Grub до варианта, когда
&gt; локализация будет только при отображении меню, а не в конфиге.

Могу предложить в update-grub внести кусочек из alterator-grub:

  #!/bin/sh -e

  . /etc/sysconfig/grub2
+ if [ -s /etc/sysconfig/i18n ]; then
+              . /etc/sysconfig/i18n
+ fi

  [ -n &quot;$GRUB_AUTOUPDATE_CFGNAME&quot; ] || GRUB_AUTOUPDATE_CFGNAME=&quot;/boot/grub/grub.cfg&quot;

  exec grub-mkconfig -o &quot;$GRUB_AUTOUPDATE_CFGNAME&quot; &quot;$@&quot;

Тогда на консоли root update-grub будет давать локализованный конфиг, а &quot;grub-mkconfig -o /boot/grub/grub.cfg&quot; в POSIX:

[root@localhost ~]# update-grub 
Генерируется файл настройки grub ?
Найдена тема: /boot/grub/themes/branding-xalt-kworkstation/theme.txt
Found background image: /boot/grub/themes/branding-xalt-kworkstation/grub.png
Найден образ linux: /boot/vmlinuz
Найден образ initrd: /boot/initrd.img
Найден образ linux: /boot/vmlinuz-std-def
skipping symlink: /boot/vmlinuz-std-def
Найден образ linux: /boot/vmlinuz-4.19.102-std-def-alt1
Найден образ initrd: /boot/initrd-4.19.102-std-def-alt1.img
Найден образ linux: /boot/vmlinuz-un-def
skipping symlink: /boot/vmlinuz-un-def
Найден образ linux: /boot/vmlinuz-5.4.17-un-def-alt1
Найден образ initrd: /boot/initrd-5.4.17-un-def-alt1.img
Найден Windows 7 на /dev/sda1
Найден ALT Workstation K 8.3  (Centaurea Ruthenica) на /dev/sda5
Найден Debian GNU/Linux 9 (stretch) на /dev/sda6
Найден Windows 7 на /dev/sdb1
Found memtest image: memtest-5.01.bin
завершено

[root@localhost ~]# grub-mkconfig -o /boot/grub/grub.cfg 
Generating grub configuration file ...
Found theme: /boot/grub/themes/branding-xalt-kworkstation/theme.txt
Found background image: /boot/grub/themes/branding-xalt-kworkstation/grub.png
Found linux image: /boot/vmlinuz
Found initrd image: /boot/initrd.img
Found linux image: /boot/vmlinuz-std-def
skipping symlink: /boot/vmlinuz-std-def
Found linux image: /boot/vmlinuz-4.19.102-std-def-alt1
Found initrd image: /boot/initrd-4.19.102-std-def-alt1.img
Found linux image: /boot/vmlinuz-un-def
skipping symlink: /boot/vmlinuz-un-def
Found linux image: /boot/vmlinuz-5.4.17-un-def-alt1
Found initrd image: /boot/initrd-5.4.17-un-def-alt1.img
Found Windows 7 on /dev/sda1
Found ALT Workstation K 8.3  (Centaurea Ruthenica) on /dev/sda5
Found Debian GNU/Linux 9 (stretch) on /dev/sda6
Found Windows 7 on /dev/sdb1
Found memtest image: memtest-5.01.bin
done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187795</commentid>
    <comment_count>10</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2020-02-12 16:34:31 +0300</bug_when>
    <thetext>(Ответ для nickel@altlinux.org на комментарий #9)
&gt; Могу предложить в update-grub внести кусочек из alterator-grub:
&gt; 
&gt;   #!/bin/sh -e
&gt; 
&gt;   . /etc/sysconfig/grub2
&gt; + if [ -s /etc/sysconfig/i18n ]; then
&gt; +              . /etc/sysconfig/i18n
&gt; + fi
&gt; 
&gt;   [ -n &quot;$GRUB_AUTOUPDATE_CFGNAME&quot; ] ||
&gt; GRUB_AUTOUPDATE_CFGNAME=&quot;/boot/grub/grub.cfg&quot;
&gt; 
&gt;   exec grub-mkconfig -o &quot;$GRUB_AUTOUPDATE_CFGNAME&quot; &quot;$@&quot;
&gt; 
&gt; Тогда на консоли root update-grub будет давать локализованный конфиг, а
&gt; &quot;grub-mkconfig -o /boot/grub/grub.cfg&quot; в POSIX:

А при обновлении ядра у нас update-grub выполняется? Если так, то хороший вариант.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187802</commentid>
    <comment_count>11</comment_count>
    <who name="Николай Костригин">nickel</who>
    <bug_when>2020-02-12 17:36:54 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #10)
&gt; (Ответ для nickel@altlinux.org на комментарий #9)
&gt; &gt; Могу предложить в update-grub внести кусочек из alterator-grub:
&gt; &gt; 
&gt; &gt;   #!/bin/sh -e
&gt; &gt; 
&gt; &gt;   . /etc/sysconfig/grub2
&gt; &gt; + if [ -s /etc/sysconfig/i18n ]; then
&gt; &gt; +              . /etc/sysconfig/i18n
&gt; &gt; + fi
&gt; &gt; 
&gt; &gt;   [ -n &quot;$GRUB_AUTOUPDATE_CFGNAME&quot; ] ||
&gt; &gt; GRUB_AUTOUPDATE_CFGNAME=&quot;/boot/grub/grub.cfg&quot;
&gt; &gt; 
&gt; &gt;   exec grub-mkconfig -o &quot;$GRUB_AUTOUPDATE_CFGNAME&quot; &quot;$@&quot;
&gt; &gt; 
&gt; &gt; Тогда на консоли root update-grub будет давать локализованный конфиг, а
&gt; &gt; &quot;grub-mkconfig -o /boot/grub/grub.cfg&quot; в POSIX:
&gt; 
&gt; А при обновлении ядра у нас update-grub выполняется? Если так, то хороший
&gt; вариант.

Судя по всему, выполняется &quot;grub-mkconfig -o /boot/grub/grub.cfg&quot; напрямую. update-grub в процессе обновления ядра не участвует.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193507</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2020-10-24 14:51:18 +0300</bug_when>
    <thetext>(In reply to nickel@altlinux.org from comment #8)

&gt; а в /boot/grub/grubenv saved_entry хранится в виде числового указателя:
&gt; 
&gt; [root@localhost ~]# cat /boot/grub/grubenv 
&gt; # GRUB Environment Block
&gt; saved_entry=1&gt;1

Вообще-то нет. Тут хранится то, что записали. И число тут использовать плохо: Допустим тут 1&gt;4 (из первого сообщения), и тут раз, и удаляется &quot;4.19.79-std-def-alt1&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281918</commentid>
    <comment_count>13</comment_count>
    <who name="Egor Ignatov">egori</who>
    <bug_when>2026-02-12 14:17:04 +0300</bug_when>
    <thetext>Думаю данный баг можно закрывать. Резюмирую информацию актуальную для grub 2.12-alt16 

1. Да, порядок и названия пунктов меню могут изменятся при update-grub
2. При сохранении пункта меню в переменную saved_entry (в файл grubenv) grub использует уникальное поле id, которое не зависит от порядка пунктов меню и формируется вот так &apos;gnulinux-$version-$type-$boot_device_id&apos;
3. Сейчас update-grub использует системную локаль вместо локали из окружения (https://git.altlinux.org/gears/g/grub.git?p=grub.git;a=commitdiff;h=453131c30e1468684eb1cd8d8e207ffa72245635)

Если остались какие-то проблемы, то переоткройте, пожалуйста, баг.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>