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

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

    <bug>
          <bug_id>13235</bug_id>
          
          <creation_ts>2007-10-28 13:09:54 +0300</creation_ts>
          <short_desc>invalid active partition set after install</short_desc>
          <delta_ts>2014-11-05 20:14:52 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>Distributions</classification>
          <product>Branch 4.0</product>
          <component>alterator-install3-desktop</component>
          <version>4.0</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>12100</blocked>
    
    <blocked>14168</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Vlasov">vsu</reporter>
          <assigned_to name="Nobody&apos;s working on this, feel free to take it">nobody</assigned_to>
          <cc>icesik</cc>
    
    <cc>inger</cc>
    
    <cc>legion</cc>
    
    <cc>mike</cc>
          
          <qa_contact name="Q.A. 4.0">qa-4.0</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>57033</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2007-10-28 13:09:55 +0300</bug_when>
    <thetext>В результате установки lite-cd-20071025.iso была получена незагружающаяся
система; работоспособность пришлось восстанавливать через rescue.

Таблица разделов перед установкой выглядела следующим образом:

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1           9       72261   83  Linux
/dev/sda2              10        6089    48837600    7  HPFS/NTFS
/dev/sda3            6090       30401   195286140    5  Extended
/dev/sda5            6090        6239     1204843+  83  Linux
/dev/sda6            6240        7439     9638968+  83  Linux
/dev/sda7            7440        7939     4016218+  82  Linux swap / Solaris
/dev/sda8            7940        8339     3212968+  83  Linux
/dev/sda9            8340        9839    12048718+  83  Linux
/dev/sda10           9840       25839   128519968+  83  Linux
/dev/sda11          25840       29339    28113718+  83  Linux
/dev/sda12          29340       30401     8530483+  83  Linux

При этом в MBR был стандартный код для загрузки из активного раздела (без
поддержки загрузки из расширенных разделов, как в MBR от syslinux), в sda1 -
grub (ext2), в sda2 - XP SP2 (ntfs), остальные разделы, кроме sda7 (swap) и
sda12, содержали ext3; sda12 перед запуском установки был не отформатирован. 
При установке для sda12 было выполнено создание файловой системы ext3, задана
точка монтирования / с параметрами по умолчанию; далее на этапе установки
загрузчика был выбран раздел sda12 - предполагалось использование установленного
в другой раздел grub и chainloader (hd0,11)+1 для загрузки этой системы.  Однако
после установки оказалось, что не загружается ни старый grub, ни что-либо ещё -
активный раздел оказался переставленным на sda11.  Пришлось загружать rescue и
возвращать флаг активного раздела на место.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57037</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2007-10-28 13:23:40 +0300</bug_when>
    <thetext>Посмотрел код /usr/lib/alterator/backend3/lilo в
alterator-install3-desktop-0.11-alt1:

bootable_flag() {
        local bootdev=&quot;$1&quot;

        # Check raid
        [ -z &quot;$raidtypes&quot; ] || set_bootable_raid

        # Don&apos;t set bootable flag if some partitions already marked as bootable.
        partitions_list |grep &quot;^$bootdev&quot; |cut -d\  -f1,2 |grep -qs
&apos;[[:space:]]\*$&apos; &amp;&amp;
                return 0

Насколько я понял, последняя проверка должна была отключать установку флага
bootable в случае, если загрузчик устанавливается в MBR, а на диске уже есть
активный раздел (на самом деле в подобной конфигурации активный раздел нужен
только для обхода особо умных BIOS, проверяющих наличие активного раздела перед
попыткой загрузки). Однако в случае, если $bootdev - это раздел, а не диск, эта
проверка ничего не найдёт, и далее в любом случае будет вызвана функция
set_bootable, устанавливающая флаг bootable для раздела, в который
устанавливается загрузчик. Возможно, для случая, когда установка идёт в primary
раздел, такое поведение имеет смысл, но для расширенного раздела так делать в
любом случае нельзя.

Кстати, код в set_bootable() в любом случае работает неправильно для расширенных
разделов (в данном случае попал в sda11 вместо sda12) и, вероятно, будет
работать неправильно для таблицы разделов с &quot;дырами&quot; (например, при наличии sda1
и sda3, но отсутствии sda2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58727</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2007-11-27 18:21:20 +0300</bug_when>
    <thetext>В Сизифе это пакет alterator-lilo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58744</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2007-11-28 09:05:49 +0300</bug_when>
    <thetext>Тут бы очень помог лог от сборки.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58745</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2007-11-28 09:16:28 +0300</bug_when>
    <thetext>(In reply to comment #1)
&gt;         # Don&apos;t set bootable flag if some partitions already marked as bootable.
&gt;         partitions_list |grep &quot;^$bootdev&quot; |cut -d\  -f1,2 |grep -qs
&gt; &apos;[[:space:]]\*$&apos; &amp;&amp;
&gt;                 return 0
&gt; 
&gt; Насколько я понял, последняя проверка должна была отключать установку флага
&gt; bootable в случае, если загрузчик устанавливается в MBR, а на диске уже есть
&gt; активный раздел (на самом деле в подобной конфигурации активный раздел нужен
&gt; только для обхода особо умных BIOS, проверяющих наличие активного раздела перед
&gt; попыткой загрузки). 

Нет. Это проверка на уже установленый bootable флаг. Если эта проварка не
сработала, то либо partitions_list биный, либо $bootdev не из списка разделов.

&gt; Однако в случае, если $bootdev - это раздел, а не диск, эта
&gt; проверка ничего не найдёт, и далее в любом случае будет вызвана функция
&gt; set_bootable, устанавливающая флаг bootable для раздела, в который
&gt; устанавливается загрузчик. Возможно, для случая, когда установка идёт в primary
&gt; раздел, такое поведение имеет смысл, но для расширенного раздела так делать в
&gt; любом случае нельзя.
&gt; 
&gt; Кстати, код в set_bootable() в любом случае работает неправильно для расширенных
&gt; разделов (в данном случае попал в sda11 вместо sda12) и, вероятно, будет
&gt; работать неправильно для таблицы разделов с &quot;дырами&quot; (например, при наличии sda1
&gt; и sda3, но отсутствии sda2).

set_bootable, как ты видел, тупо отсчитыват раздел для sfdisk. У меня опять же
подозрение на partitions_list.

Версию sfdisk в студию.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148380</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2014-11-05 20:14:52 +0300</bug_when>
    <thetext>В 4.0/branch исправления не будут вноситься уже технически (заглушена очередь на сборку), поэтому прошу ошибки, актуальные для sisyphus/p7/t7, перевесить на текущие ветки или сизиф.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>