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

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

    <bug>
          <bug_id>28020</bug_id>
          
          <creation_ts>2012-11-21 14:22:17 +0400</creation_ts>
          <short_desc>grub. LVM. UUID корневого раздела</short_desc>
          <delta_ts>2020-08-07 06:12:03 +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>grub2-pc</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=38789</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>28136</dependson>
          <blocked>27685</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="timonbl4@altlinux.org">timonbl4</reporter>
          <assigned_to name="Michael Shigorin">mike</assigned_to>
          <cc>aen</cc>
    
    <cc>boyarsh</cc>
    
    <cc>jackie.rosen</cc>
    
    <cc>sbolshakov</cc>
    
    <cc>shaba</cc>
    
    <cc>vitty</cc>
    
    <cc>vsu</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135103</commentid>
    <comment_count>0</comment_count>
    <who name="timonbl4@altlinux.org">timonbl4</who>
    <bug_when>2012-11-21 14:22:17 +0400</bug_when>
    <thetext>Если корень будущей системы находится на LVM, то при генерации grub.cfg пишется запись типа &quot;linux root=/path/to/device ...&quot;, а хотелось бы &quot;linux root=UUID=&lt;uuid&gt; ...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135105</commentid>
    <comment_count>1</comment_count>
    <who name="timonbl4@altlinux.org">timonbl4</who>
    <bug_when>2012-11-21 14:25:37 +0400</bug_when>
    <thetext>Нашёл строчку в grub-mkconfig.in:
GRUB_DEVICE_UUID=&quot;`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2&gt; /dev/null`&quot;

Пытаюсь выполнить:
# grub-probe --device /dev/mapper/lvm1-root --target=fs_uuid
...
grub-probe: error: cannot find a GRUB device /dev/mapper/lvm1-root. Check your device.map.

Может в этом проблема?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135219</commentid>
    <comment_count>2</comment_count>
    <who name="AEN">aen</who>
    <bug_when>2012-11-21 16:43:32 +0400</bug_when>
    <thetext>Блокер 27685
На grub2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135237</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-11-21 19:52:16 +0400</bug_when>
    <thetext>Точнее, на grub2-pc.

2 vsu: не подскажешь часом, как лучше быть?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135238</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-11-21 19:55:47 +0400</bug_when>
    <thetext>Да, чуть не забыл -- вот этот тестовый коммит же именно про эту багу был, так?

http://git.altlinux.org/people/timonbl4/packages/?p=grub2-pc.git;a=commitdiff;h=6cebde14a00f5275e8e2b45203646358aa04d23d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135239</commentid>
    <comment_count>5</comment_count>
    <who name="timonbl4@altlinux.org">timonbl4</who>
    <bug_when>2012-11-21 19:58:09 +0400</bug_when>
    <thetext>(В ответ на комментарий №4)
&gt; Да, чуть не забыл -- вот этот тестовый коммит же именно про эту багу был, так?
&gt; 
&gt; http://git.altlinux.org/people/timonbl4/packages/?p=grub2-pc.git;a=commitdiff;h=6cebde14a00f5275e8e2b45203646358aa04d23d

Да</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135249</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2012-11-21 21:41:19 +0400</bug_when>
    <thetext>Похоже, неиспользование UUID для LVM было сделано специально:

http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/2496
http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/2503

(поэтому и тот тестовый коммит на самом деле не должен работать).

В принципе для такого решения есть основания — имя тома LVM не менее стабильно, чем LABEL=... для ФС на обычном разделе (проблемы могут возникнуть только из-за неуникальности имён при подключении чужих дисков). Как минимум в CentOS 6 после установки на LVM в параметры ядра добавляется root=/dev/$VG/$LV (плюс ещё параметры для их initramfs: rd_LVM_LV=$swap_vg/$swap_lv rd_LVM_LV=$root_vg/$root_lv), а в fstab для томов LVM записываются не UUID, а имена устройств в виде /dev/mapper/$VG-$LV (почему-то именно в таком варианте, а не /dev/$VG/$LV).

Хотя ошибка grub-probe выглядит подозрительно в том плане, что может не работать размещение /boot на LVM (что вроде бы должно поддерживаться благодаря наличию в GRUB соответствующих модулей и тому, что core.img обычно помечается в начальных секторах диска).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135257</commentid>
    <comment_count>7</comment_count>
    <who name="timonbl4@altlinux.org">timonbl4</who>
    <bug_when>2012-11-22 10:07:32 +0400</bug_when>
    <thetext>(В ответ на комментарий №6)
&gt; В принципе для такого решения есть основания — имя тома LVM не менее стабильно,
&gt; чем LABEL=... для ФС на обычном разделе (проблемы могут возникнуть только из-за
&gt; неуникальности имён при подключении чужих дисков). Как минимум в CentOS 6 после
&gt; установки на LVM в параметры ядра добавляется root=/dev/$VG/$LV (плюс ещё
&gt; параметры для их initramfs: rd_LVM_LV=$swap_vg/$swap_lv
&gt; rd_LVM_LV=$root_vg/$root_lv), а в fstab для томов LVM записываются не UUID, а
&gt; имена устройств в виде /dev/mapper/$VG-$LV (почему-то именно в таком варианте,
&gt; а не /dev/$VG/$LV).

Чем в данной ситуации /dev/mapper/$VG-$LV лучше, нежели UUID ФС?

&gt; Хотя ошибка grub-probe выглядит подозрительно в том плане, что может не
&gt; работать размещение /boot на LVM (что вроде бы должно поддерживаться благодаря
&gt; наличию в GRUB соответствующих модулей и тому, что core.img обычно помечается в
&gt; начальных секторах диска).

Да, grub не ставится, если /boot находится на lvm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135390</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-11-23 19:53:22 +0400</bug_when>
    <thetext>(In reply to comment #7)
&gt; Чем в данной ситуации /dev/mapper/$VG-$LV лучше, нежели UUID ФС?
Менее опосредован как минимум?

На https://wiki.archlinux.org/index.php/GRUB2#LVM тоже рекомендуют по vg-lv.


(In reply to comment #1)
&gt; Пытаюсь выполнить:
Воспроизводится при ручном запуске параллельно с alterator-grub:

&gt; # chroot /mnt/destination update-grub
[...]
&gt; Found initrd image: /boot/initrd.img
&gt; The name &quot;lvm2|main|root&quot; should be mangled but it contains blacklisted characters.
&gt; _deps: task run failed for (254:1)
[...эти две строки ещё надцать раз...]
&gt; /usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/main-root. Check your device.map.

Локализовать источник этого mangling пока не удалось; похоже, это сам EVMS:
&gt; tests/suite/Tests/lvm2/test3:   @output = dm_info(&quot;lvm2|&quot; . $container_name . &quot;|&quot; . $name);

А вот в lvm2 (libdm) имена стали проверять придирчивей (_is_whitelisted_char):
http://git.altlinux.org/gears/l/lvm2.git?p=lvm2.git;a=blobdiff;f=libdm/libdm-common.c;h=16053244c2ed398fc8df51e44b8323c1f19b1af8;hp=8d0fea343e0c3d99e1c81809b97326818d09c3c9;hb=55761e14af4c167f79e9d7d4f6cfa28bb84be51d;hpb=c64d7cd38121772f3f62c7c08bedb3289f3a1ecd

Добавил &quot;|&quot; в этот whitelist, порадовался упоминанию blacklist в диагностике, проехал чуть дальше:

&gt; # chroot /mnt/destination grub-probe /boot/grub
&gt; device-mapper: table ioctl on  failed: No such device or address
&gt; device-mapper: table ioctl on  failed: No such device or address
&gt; device-mapper: table ioctl on  failed: No such device or address
&gt; device-mapper: table ioctl on main-root failed: No such device or address
&gt; device-mapper: table ioctl on  failed: No such device or address
&gt; device-mapper: table ioctl on  failed: No such device or address
&gt; device-mapper: table ioctl on main-root failed: No such device or address
&gt; device-mapper: table ioctl on  failed: No such device or address
&gt; device-mapper: table ioctl on  failed: No such device or address
&gt; device-mapper: table ioctl on main-root failed: No such device or address
&gt; grub-probe: error: cannot find a GRUB device for /dev/mapper/main-root. Check your device.map.
&gt; # chroot /mnt/destination dmsetup ls
&gt; sda1    (254:0)
&gt; lvm2|main|root  (254:1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135392</commentid>
    <comment_count>9</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2012-11-23 21:15:39 +0400</bug_when>
    <thetext>Очевидно, evms устанавливает имена для устройств dm не так, как это делает настоящий lvm, поэтому его устройства и не определяются как LVM. Значит, без отказа от evms (или очередной кучи ALT-specific патчей) установка с /boot на LVM проходить не будет; возможно, окажутся сломанными и ещё какие-нибудь конфигурации.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135393</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-11-23 21:40:15 +0400</bug_when>
    <thetext>(In reply to comment #7)
&gt; Чем в данной ситуации /dev/mapper/$VG-$LV лучше, нежели UUID ФС?
Подумал ещё, оторвал grub-2.00-evms-crap-alt.patch (т.к. мухлевать с именами девайсов под /dev/evms/ теперь вроде как и не надо, добавилась и задействована поддержка libdevmapper).

grub-install отработал, но первая стадия не нашла корень по UUID (с каковым он и прописан).

Более внимательное рассмотрение показало, что в grub-install отрабатывает только определение fs (&quot;ext2&quot; в моём случае), но _не_ partmap и abstraction: http://git.altlinux.org/gears/g/grub2.git?p=grub2.git;a=blob;f=grub2/util/grub-install.in;h=e19f1cd943be0613077581842a5c0209c42417ab;hb=HEAD#l572 -- т.е. соответствующие два grub-probe, будучи вызваны руками с grub_device=/dev/evms/lvm2/main/root, возвращают пустую строку.

Если приколотить недостающее гвоздями в свежеустановленный grub-install:
http://git.altlinux.org/gears/g/grub2.git?p=grub2.git;a=blob;f=grub2/util/grub-install.in;h=e19f1cd943be0613077581842a5c0209c42417ab;hb=HEAD#l613
&gt; -modules=&quot;$modules $fs_module $partmap_module $devabstraction_module&quot;
&gt; +modules=&quot;$modules $fs_module part_msdos $partmap_module lvm $devabstraction_module&quot;
-- то установка grub и загрузка им ядра/initrd происходит нормально, затык происходит уже в initrd (/dev/sda* есть, в /dev/mapper/ только control, /dev/dm* отсутствуют).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135394</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-11-23 22:22:56 +0400</bug_when>
    <thetext>(In reply to comment #10)
&gt; затык происходит уже в initrd 
При неустановленном make-initrd-lvm неудивительно.  С ним, однако, затык вида
initrd: udev: Running lvm handler ...
вследствие получения ядром root=/dev/evms/lvm2/main/root; если поправить вручную в grub.cfg или в рантайме на /dev/mapper/main-root (который в initramfs доступен), загрузка проходит нормально.

Понимаю, что к 7.0 с EVMS спрыгнуть не получится; похоже, придётся переработать grub-2.00-evms-crap-alt.patch и что-то делать с evms/lvm2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135396</commentid>
    <comment_count>12</comment_count>
    <who name="AEN">aen</who>
    <bug_when>2012-11-24 05:45:31 +0400</bug_when>
    <thetext>Этот баг -- регрессия?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135415</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2012-11-25 21:37:56 +0400</bug_when>
    <thetext>Кстати, возможно, в evms-crap-alt.patch ещё некорректно обрабатываются символы &apos;-&apos; в именах VG/LV — в lvm они при формировании имени dm-устройства удваиваются (/dev/vg-foo/lv-bar превращается в /dev/mapper/vg--foo-lv--bar), а вот evms, похоже, этого не делает:

http://git.altlinux.org/people/timonbl4/packages/?p=evms.git;a=blob;f=plugins/lvm2/regions.c;h=3c2f641e4d8f4d3d6de8085eddff11632661d6f5;hb=HEAD#l265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135512</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-11-28 01:03:06 +0400</bug_when>
    <thetext>(In reply to comment #12)
&gt; Этот баг -- регрессия?
Насколько понимаю http://wiki.gentoo.org/wiki/GRUB2, нет: &quot;Upgrading to GRUB 2 might be necessary as it allows: [...] booting from directly logical volume management such as LVM2 support&quot; (для чего требуется включенная поддержка device-mapper, как утверждается далее по тексту, т.е. оставить старые костыли как есть не получается -- одним из тупиков меньше).

(In reply to comment #13)
&gt; Кстати, возможно, в evms-crap-alt.patch ещё некорректно обрабатываются символы
Об это не спотыкался.  В качестве варианта сейчас обдумываю выкидывание максимума костылей из grub-probe и около с переносом минимально необходимого их объёма в alterator-grub в виде постобработки grub.cfg -- попытка с разбегу прикрутить понимание /dev/evms/lvm2/ как тоже lvm abstraction не прошла, надо копать глубже, а на патчи в пользу evms апстрим наверняка посмотрит большими синими глазами...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135719</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-12-04 01:39:57 +0400</bug_when>
    <thetext>(In reply to comment #12)
&gt; Этот баг -- регрессия?
(проверил наконец) Да, СПТ встал на lvm root без проблем.

А я завяз с попыткой забрать lvm у evms (evms_deactivate == dmsetup remove_all) _и_ затем поднять их заново.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135766</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-12-04 22:05:29 +0400</bug_when>
    <thetext>См. bug #28181.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135922</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2012-12-07 22:33:12 +0400</bug_when>
    <thetext>PS: ещё можно оторвать от guile-evms устаревшую проверку насчёт /boot на LVM, хотя в качестве рекомендации нынешнее сообщение об ошибке может быть уместно (только тогда s/be resided/reside/).  Стоит ли это отдельной баги?..</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>