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

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

    <bug>
          <bug_id>10069</bug_id>
          
          <creation_ts>2006-10-02 10:01:33 +0400</creation_ts>
          <short_desc>spt не работает на x86_64 для i586</short_desc>
          <delta_ts>2007-02-12 15:50:14 +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>spt</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>P5</priority>
          <bug_severity>blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Farygin">rider</reporter>
          <assigned_to name="Michael Shigorin">mike</assigned_to>
          <cc>greycat</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>40987</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2006-10-02 10:01:33 +0400</bug_when>
    <thetext>spt при создании образов на x86_64 системе для i586 копирует внутрь чрута
запускаемые файлы с хост-системы (mksquashfs, например). Соответственно они там
не запускаются (чрут получается i586), что приводит к невозможности создавать
какие-либо образы на x86_64 для i586.

Крайне желательно сделать так, что бы spt был полностью независим от окружения.
Например - устанавливать всё что ему необходимо для работы с &quot;нуля&quot; в отдельный
чрут и использовать уже оттуда.
так же просьба проверить SPT на работоспособность внутри виртуальных серверов
без CAP_MKNOD. 

Устройства вполне можно создавать с помощью fakeroot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40995</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2006-10-02 13:39:32 +0400</bug_when>
    <thetext>По первому пункту я присоединяюсь - копировать динамически слинкованных ELFов из
хост-системы в chroot нельзя.

По второму пункту я думаю, что spt не занимается устройствами, их, наверное,
создаёт hasher-priv.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40999</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2006-10-02 14:14:59 +0400</bug_when>
    <thetext>2Lakostis:
пунт 1 - в твоём GIT не исправлено. Я там сейчас наблюдаю &quot;cp -a
/sbin/mksquashfs $chroot/.host/&quot;. 
И это относится ко многим другим утилитам.


И забери плз из моего репозитария мелкие фиксы на предмет юзабилити аргументов
командной строки. Без бутылки не смог разобраться, что для инициализации
профайла нужно дать парамет -P (написано что он дефолтный в &quot;default&quot;). Там ещё
пару ляпов исправлено (например запуск без параметров - сразу вывод help)

2ldv: 
spt сейчас экспортирует переменную makedev_console, наверное это она и управляет
поведением hasher-priv. Если честно, я не проверял на результат работы spt без
выставления этой переменной. Подозреваю что что-то работать не будет.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41070</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2006-10-03 11:15:56 +0400</bug_when>
    <thetext>Гражжне, а это не дуп ли #10047?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41076</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2006-10-03 11:39:26 +0400</bug_when>
    <thetext>Да, дуп.. но IMHO здесь более корретный репорт. 

т.е. - ту можно закрыть как дуп этой.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41078</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2006-10-03 11:40:02 +0400</bug_when>
    <thetext>*** Bug 10047 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41089</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Yakshin">greycat</who>
    <bug_when>2006-10-03 15:29:37 +0400</bug_when>
    <thetext>&gt; так же просьба проверить SPT на работоспособность внутри виртуальных серверов
&gt; без CAP_MKNOD. 

Антон, мы потратили весь вечер пятницы на выяснения этого вопроса. Вкратце если
- виновата довольно странная (скажем мягко) реализация xmknod в hasher-priv.

Падает с руганью на CAP_MKNOD и вообще пытается делать mknod оно в момент hsh
--initroot со включенным параметром makedev_console. Помогает либо выключение
его - этого параметра (пролоббировано его включение, со слов Гоши, было mouse@,
для чего-то он там требовался в терминальном проекте), либо в противном случае
начинает выполняться xmknod в hasher-priv, создавая /dev/console в чруте.

Работает он так: если есть реальный /dev/console - он делает хардлинк на него из
чрута. Если нет - пытается делать вызов mknod и создавать реальное устройство.

В OpenVZ есть свой /dev/console (эмулируемый), поэтому все нормально - xmknod
делает этот хардлинк и все работает.

В vserver, по крайней мере в том, что показывал Зерг, /dev/console нет - он
поэтому проваливается до mknod и падает с ошибкой, что вызвать такое нельзя.

Решений 2: отключить makedev_console или создать в vserver /dev/console (есть
подозрение, что пойдет что угодно, вплоть до просто пустого файла, например).

Как совсем хорошее решение - спросить автора hasher-priv, чем обусловлено такое
странное поведение xmknod и нельзя ли сделать его чуть менее непонятным?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41092</commentid>
    <comment_count>7</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2006-10-03 16:10:03 +0400</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; так же просьба проверить SPT на работоспособность внутри виртуальных серверов
&gt; &gt; без CAP_MKNOD. 
&gt; 
&gt; Антон, мы потратили весь вечер пятницы на выяснения этого вопроса. Вкратце если
&gt; - виновата довольно странная (скажем мягко) реализация xmknod в hasher-priv.
&gt;
а что в ней странного? Реализация блокировок на основе CAP_ в vserver просто
идиотская.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41093</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2006-10-03 16:21:51 +0400</bug_when>
    <thetext>2greycat: ничего странного в работе xmknod в hasher-priv я не вижу, а вот
описание этой работы мне понравилось, если не трудно, отформатируй его для
включения в документацию, пожалуйста.

Что касается /dev/console, то это устройство потребовалось mouse&apos;у для live cd.
Если оно не нужно, то не надо экспортировать makedev_console, но оно, скорее
всего, нужно.

Что касается OpenVZ vs VServer, то они применяют разные подходы к проверке прав
доступа: ovz проверяет права при попытке работать через файл устройства, а vs -
при попытке создать файл устройства.  Подход ovz более удобен, позволяя
создавать файлы устройств, не используемые для open().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41094</commentid>
    <comment_count>9</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2006-10-03 16:43:05 +0400</bug_when>
    <thetext>(In reply to comment #6)
&lt;skip&gt;
&gt; В vserver, по крайней мере в том, что показывал Зерг, /dev/console нет - он
&gt; поэтому проваливается до mknod и падает с ошибкой, что вызвать такое нельзя.
&gt; 
&gt; Решений 2: отключить makedev_console или создать в vserver /dev/console (есть
&gt; подозрение, что пойдет что угодно, вплоть до просто пустого файла, например).
кстати, можно повесить FR на util-vserver. Поскольку:

diff -uNpar --minimal util-vserver-0.30.210.orig/distrib/altSisyphus/devs
util-vserver-0.30.210/distrib/altSisyphus/de
--- util-vserver-0.30.210.orig/distrib/altSisyphus/devs 1970-01-01 03:00:00 +0300
+++ util-vserver-0.30.210/distrib/altSisyphus/devs      2006-03-25 15:09:27 +0300
@@ -0,0 +1,8 @@
+null    c 1 3 666
+zero    c 1 5 666
+full    c 1 7 666
+random  c 1 8 644
+urandom c 1 9 644
+tty     c 5 0 666
+tty12  c 4 12 666
+ptmx    c 5 2 666
- ничто не мешает добавить туда console.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41097</commentid>
    <comment_count>10</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2006-10-03 17:39:48 +0400</bug_when>
    <thetext>И всё-таки /dev/console - это вторично. Первично - работа на x86_64 для i586.

Кстати, Миша... сборка инсталлера в spt сломана похоже кардинально - её надо чинить.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41716</commentid>
    <comment_count>11</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2006-10-26 02:01:07 +0400</bug_when>
    <thetext>Сборка installer&apos;а в текущей версии spt уже починена. Как и cross-сборка i586 на
x86_64.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45262</commentid>
    <comment_count>12</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2007-02-12 00:47:56 +0300</bug_when>
    <thetext>Закрываю за давностью.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>