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

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

    <bug>
          <bug_id>18127</bug_id>
          
          <creation_ts>2008-12-07 09:49:33 +0300</creation_ts>
          <short_desc>Не добавляются новые ядра в menu.lst при использовании LABEL/UUID</short_desc>
          <delta_ts>2012-03-16 13:59:48 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>bootloader-utils</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>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Evgenii Terechkov">evg</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>at</cc>
    
    <cc>boyarsh</cc>
    
    <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>sem</cc>
    
    <cc>slazav</cc>
    
    <cc>vitty</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82355</commentid>
    <comment_count>0</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2008-12-07 09:49:33 +0300</bug_when>
    <thetext>Сейчас /sbin/installkernel ставит при установке новых ядер в конфиг grub/lilo указание корневого раздела в виде /dev/[hs]d[a-z][0-9]+.

Насколько я понимаю, в свете последних же ядер (&gt; 2.6.27) стОйт добавлять вместо этого UUID/LABEL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82359</commentid>
    <comment_count>1</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2008-12-07 13:13:01 +0300</bug_when>
    <thetext>(In reply to comment #0)
&gt; Насколько я понимаю, в свете последних же ядер (&gt; 2.6.27)
Ты тоже перепутал баг udev с ожидаемым поведением новых ядер или у тебя другие соображения?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82363</commentid>
    <comment_count>2</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2008-12-07 14:33:54 +0300</bug_when>
    <thetext>Надоело редактором menu.lst править под каждое новоя ядро.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82364</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2008-12-07 15:24:25 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; Надоело редактором menu.lst править под каждое новоя ядро.
Это надо было сделать один раз после переезда IDE на libata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82373</commentid>
    <comment_count>4</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2008-12-07 16:18:12 +0300</bug_when>
    <thetext>Я и сделал давно для ядра по умолчанию. Да и новые с root=/dev/ работают какбы и так, но как-то неаккуратно. Это даже скорее не [FR], а Proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99207</commentid>
    <comment_count>5</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2009-09-16 18:13:54 +0400</bug_when>
    <thetext>bootloader-utils-0.4.1-alt1 -&gt; sisyphus:

* Wed Sep 16 2009 Vladislav Zavjalov &lt;slazav@altlinux&gt; 0.4.1-alt1

- installkernel:
  - change lilo restarting logic (closes #1014, #1015, #20695):
    old behaviour: restart lilo if first bootloader found in
      devices from /proc/partitions is lilo
    new one: restart lilo when lilo bootloader is found in
      device from boot= setting in lilo.conf
  - when detectliloboot.sh fails to find device, there are no
    need to run detectloader.sh (thx Dmitry V. Levin)
      (closes: #21106)
  - suppress unwanted output from cd -
- detectloader: replace by two shell scripts:
    detectliloboot.sh -- to get boot device from lilo.conf
    detectloader.sh -- to get bootloader type on the given device or file
- bootloader_utils.pm:
  - (getroot): recognize UUID and LABEL
      (thx Dmitry V. Levin) (closes: #2194, #18127)
  - remove unused functions (partitions, typeOfMBR) used in
      removed detectloader program
- rebootin
  - remove GRUB support
  - fix working with quoted labels in lilo.conf (closes: #11446).
  - cleanup code, improve error and help messages
  - add long options, add -l option for listing available labels.
  - update manpage
- remove URL and Packager tags (thx Dmitry V. Levin).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99406</commentid>
    <comment_count>6</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-09-18 16:48:11 +0400</bug_when>
    <thetext>Спасибо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100654</commentid>
    <comment_count>7</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 16:03:05 +0400</bug_when>
    <thetext>Хорошо, только не работает. Столкнулся при обновлении ядра вот с такими синдромами: http://lists.altlinux.org/pipermail/sisyphus/2005-July/283571.html (только уже std-def и без ругани от modprobe). Также создались симлинки, &quot;Can&apos;t convert grub partition&quot; два раза подряд и ничего не добавилось в menu.lst.

bootloader-utils уже 0.4.2-alt1. Конфигурация такая:

evg@evg ~ $cat /proc/cmdline 
root=LABEL=NEWROOT vga=788 quiet
evg@evg ~ $GR LABEL=NEWROOT /etc/fstab 
LABEL=NEWROOT   /       ext3    defaults        1       1
evg@evg ~ $df -h /boot
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/hda2             3,0G  2,5G  342M  89% /</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100655</commentid>
    <comment_count>8</comment_count>
      <attachid>3954</attachid>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 16:12:50 +0400</bug_when>
    <thetext>Created attachment 3954
Патч на bootloader-utils-0.4.2-alt1

Мне помог приложенный патч.

Дело в том, что mnt2dev забыли обучить возвращать dev (/dev/foo) если mnt (аргумент) имеет вид LABEL/UUID=XXX, что происходит при наличии этого самого LABEL/UUID=XXX в cmdline (и таким образом getroot возвращает LABEL/UUID=XXX). Соответственно dev2grub не знал, как преобразовать LABEL/UUID=XXX в (hdY, Z). Патч же &quot;восстанавливает историческую справедливость&quot; :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100658</commentid>
    <comment_count>9</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-02 16:37:02 +0400</bug_when>
    <thetext>mnt2dev() вообще-то совсем не для того - это поиск устройства по точке монтирования.
Применять ее же еще и для поиска устройства по UUID/LABEL, как в этом патче - весьма странно.

Я попробую тут разобраться.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100659</commentid>
    <comment_count>10</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-02 16:44:44 +0400</bug_when>
    <thetext>Но, вообще-то и без патча устройства и точки монтирования кажутся перемешанными в этом кусочке:

my $bootdev = mnt2dev(&quot;/boot&quot;);
my $boot = $bootdev ? &quot;&quot; : &quot;/boot&quot;;
my $root = getroot;
my $grub_part = dev2grub($bootdev ? $bootdev : $root);
die &quot;Can&apos;t convert grub partition\n&quot; unless $grub_part;

Это при том, что dev2grub хочет только аргументы вида /dev/sda3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100660</commentid>
    <comment_count>11</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 16:51:04 +0400</bug_when>
    <thetext>(В ответ на комментарий №10)

у меня отладка этого куска под perl-debugger-ом дала следующее:

my $bootdev = mnt2dev(&quot;/boot&quot;); -&gt; undef/nil
my $boot = $bootdev ? &quot;&quot; : &quot;/boot&quot;; -&gt; &quot;/boot&quot;
my $root = getroot; -&gt; &quot;LABEL=NEWROOT&quot;
my $grub_part = dev2grub($bootdev ? $bootdev : $root); -&gt; undef/nil
die &quot;Can&apos;t convert grub partition\n&quot; unless $grub_part;

&gt; Это при том, что dev2grub хочет только аргументы вида /dev/sda3

Поэтому и обучил его принимать uuid/label.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100661</commentid>
    <comment_count>12</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 16:52:10 +0400</bug_when>
    <thetext>(В ответ на комментарий №9)
&gt; mnt2dev() вообще-то совсем не для того - это поиск устройства по точке
&gt; монтирования.
&gt; Применять ее же еще и для поиска устройства по UUID/LABEL, как в этом патче -
&gt; весьма странно.

Согласен, странно, но я старался минимизировать патч и максимально использовать существующий код.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100662</commentid>
    <comment_count>13</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 17:01:43 +0400</bug_when>
    <thetext>Ну т.е. до &quot;обучения&quot; getroot-а UUID/LABEL цепочка вызовов(результатов) была такая:

getroot(/dev/hda2)-&gt;dev2grub(hd0,1)

а после стала такой:

getroot(LABEL=NEWROOT)-&gt;dev2grub(nil)

т.к. getroot возвращающий LABEL/UUID=XXXX судя по коду используется в /u/s/loader/lilo, то ломать его я не стал, а стал править dev2grub. Для того чтобы минимумом движений преобразовать LABEL в /dev/hda2 мне проще всего показалось использовать код mnt2dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100663</commentid>
    <comment_count>14</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-02 17:02:38 +0400</bug_when>
    <thetext>&gt; Но, вообще-то и без патча устройства и точки монтирования кажутся 
&gt; перемешанными в этом кусочке:

прошу прощения, тут все хорошо.

&gt; Согласен, странно, но я старался минимизировать патч и максимально 
&gt; использовать существующий код.

Но mnt2dev совсем уж не для того. В ней действительно есть (странный на мой
взгляд) финт: если в fstab UUID/LABEL - взять устройство из mtab.

Но это, наверное, не повод наделять ее неочевидным двойным назначением (искать
аргумент и среди точек монтирования и среди устройств вида UUID/LABEL)

Надо бы, наверное, придумать отдельную функцию либо на эту тему, либо на тему
blkid. И прогонять через нее все, что отдается в dev2grub.
Тогда, кстати, и от финта в mnt2dev можно будет избавиться.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100664</commentid>
    <comment_count>15</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 17:21:41 +0400</bug_when>
    <thetext>&gt; Но mnt2dev совсем уж не для того. В ней действительно есть (странный на мой
&gt; взгляд) финт: если в fstab UUID/LABEL - взять устройство из mtab.

Мне кажется, финт правильный: если для /mnt в fstab устройство указано путём UUID/LABEL, попытаться определить /dev/blah из mtab.
 
&gt; Но это, наверное, не повод наделять ее неочевидным двойным назначением (искать
&gt; аргумент и среди точек монтирования и среди устройств вида UUID/LABEL)

Вообще, если нет четко определённого интерфейса (определения, кто что делает и кто кому что возвращает), то и нарушение то это небольшое. Чисто на уровне интуиции.

Можно просто переименовать mnt2dev в any2dev :-)
 
&gt; Надо бы, наверное, придумать отдельную функцию либо на эту тему, либо на тему
&gt; blkid. И прогонять через нее все, что отдается в dev2grub.
&gt; Тогда, кстати, и от финта в mnt2dev можно будет избавиться.

&quot;Мне всё равно, кого пытать, лишь бы работало хорошо&quot;(с) :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100665</commentid>
    <comment_count>16</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-02 17:23:54 +0400</bug_when>
    <thetext>этот код используется и в detectliloboot.sh и в alterator-lilo. Не вынести ли его в отдельнй скрипт?
http://git.altlinux.org/people/slazav/packages/?p=bootloader-utils.git;a=commit;h=8682de9c104292286d80f331481e8249da829b9f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100670</commentid>
    <comment_count>17</comment_count>
    <who name="Sir Raorn">raorn</who>
    <bug_when>2009-10-02 18:39:25 +0400</bug_when>
    <thetext>Я бы рекомендовал использовать фичу wildcard (info grub wildcard) и сказать installkernel&apos;у никогда-никогда не обновлять menu.lst.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100672</commentid>
    <comment_count>18</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 18:47:55 +0400</bug_when>
    <thetext>Интересная идея.

P.S.: на что только не идут люди, чтобы не читать документацию. Это я про себя :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100685</commentid>
    <comment_count>19</comment_count>
    <who name="Sir Raorn">raorn</who>
    <bug_when>2009-10-02 19:15:21 +0400</bug_when>
    <thetext>Идея эта оказывается единственно рабочей, поскольку у grub нет глобального &quot;append&quot;.  Если какой-то нестандарт в опциях появляется, сразу либо только дефолтное ядро, либо после каждого обновления с болью и страданиями копипастить эти опции на все ядра.

Поскольку grub у нас официально не поддерживается (или не поддерживается официально), лучше всю его недоподдержку убрать совсем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100689</commentid>
    <comment_count>20</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-02 19:32:49 +0400</bug_when>
    <thetext>Этого то я и боялся. :-)

Однако, тоже вариант, и вполне себе нормальный.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100919</commentid>
    <comment_count>21</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2009-10-06 16:40:04 +0400</bug_when>
    <thetext>bootloader-utils-0.4.3-alt1 -&gt; sisyphus:

* Mon Oct 05 2009 Vladislav Zavjalov &lt;slazav@altlinux&gt; 0.4.3-alt1

- add convertdev.sh script co convert UUID=.. or LABEL=.. to device names
  use it in detectliloboot.sh and grub scripts (closes #18127)
- bootloader_utils.pm: mnt2dev(): don&apos;t use mtab to convert device names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108359</commentid>
    <comment_count>22</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-04-03 14:23:56 +0400</bug_when>
    <thetext>Столкнулся с тем, что не установилось в /b/g/menu.lst ядро 2.6.32-std-def-alt10 с руганью Can&apos;t convert grup partition.

Оказалось, это связано с тем что в /b/g/menu.lst прописан диск /dev/hda, который после одного обновления ядра виден как /dev/sda. Возможно, стОйт ослабить требование на полное совпадение строк (например, для тех кто будет обновлять старый дистрибутив до нового)?

2raorn: wilcard работает, работает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108360</commentid>
    <comment_count>23</comment_count>
    <who name="Sir Raorn">raorn</who>
    <bug_when>2010-04-03 14:48:27 +0400</bug_when>
    <thetext>Первый grub был выпилен из сизифа поганой метлой и ссаными тряпками.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108361</commentid>
    <comment_count>24</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-04-03 15:26:05 +0400</bug_when>
    <thetext>Ах, как я мог забыть. Ну, мир его праху.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3954</attachid>
            <date>2009-10-02 16:12:50 +0400</date>
            <delta_ts>2009-10-02 16:12:50 +0400</delta_ts>
            <desc>Патч на bootloader-utils-0.4.2-alt1</desc>
            <filename>bootloader-utils.patch</filename>
            <type>text/plain</type>
            <size>813</size>
            <attacher name="Evgenii Terechkov">evg</attacher>
            
              <data encoding="base64">LS0tIC91c3Ivc2hhcmUvbG9hZGVyL2Jvb3Rsb2FkZXJfdXRpbHMucG0ub3JpZwkyMDA5LTEwLTAy
IDE5OjQ4OjI4ICswODAwCisrKyAvdXNyL3NoYXJlL2xvYWRlci9ib290bG9hZGVyX3V0aWxzLnBt
CTIwMDktMTAtMDIgMTk6NTA6NTcgKzA4MDAKQEAgLTQ1LDYgKzQ1LDcgQEAgc3ViIG1udDJkZXYg
KCQ7JCQpIHsKIAkJaWYgKCQkZnNlbnRbMF0gPX4gL14oTEFCRUx8VVVJRCk9LykgewogCQkJZm9y
ZWFjaCBteSAkbWVudCAoQG10YWIpIHsKIAkJCQlpZiAoJCRtZW50WzFdIGVxICQkZnNlbnRbMV0p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCRtZW50WzBdIGlm
ICQkZnNlbnRbMF0gZXEgJG1udDsgIyBpZiBtbnQgaXMgTEFCRUwvVVVJRD1YWFhYWFggYW5kIHBy
ZXNlbnQgaW4gZnN0YWIKIAkJCQkJJCRmc2VudFswXSA9ICQkbWVudFswXTsKIAkJCQl9CiAJCQl9
Ci0tLSAvdXNyL3NoYXJlL2xvYWRlci9ncnViLm9yaWcJMjAwOS0xMC0wMiAxOTo1NDoxOCArMDgw
MAorKysgL3Vzci9zaGFyZS9sb2FkZXIvZ3J1YgkyMDA5LTEwLTAyIDE5OjU1OjM0ICswODAwCkBA
IC0yMyw2ICsyMyw3IEBAIEdldE9wdGlvbnMgInJ8UnxyZW1vdmUiID0+IFxteSAkcmVtb3ZlLCAK
IAogc3ViIGRldjJncnViIHsKIAlteSAkZGV2ID0gc2hpZnQ7CisgICAgICAgICRkZXYgPSBtbnQy
ZGV2KCRkZXYpIGlmICRkZXYgPX4gL14oTEFCRUx8VVVJRCk9LzsKIAlteSAoJGRpc2ssICRwYXJ0
KSA9ICRkZXYgPX4gLyhbXlxkXHNdKykoXGQrKS8KIAkJb3IgcmV0dXJuOwogIyBTYW1wbGUgZGV2
aWNlLm1hcCBlbnRyeToK
</data>

          </attachment>
      

    </bug>

</bugzilla>