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

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

    <bug>
          <bug_id>41140</bug_id>
          
          <creation_ts>2021-10-17 19:06:40 +0300</creation_ts>
          <short_desc>Не поддерживается загрузка с /boot на отдельном разделе при загрузке с extlinux.conf</short_desc>
          <delta_ts>2022-06-17 19:53:43 +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>bootloader-utils</component>
          <version>unstable</version>
          <rep_platform>aarch64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=41142</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41141</dependson>
    
    <dependson>41142</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Антон Мидюков">antohami</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>sbolshakov</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>203867</commentid>
    <comment_count>0</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-10-17 19:06:40 +0300</bug_when>
    <thetext>проблем две:

1. в том, что указан абсолютный путь до ядра и initrd

http://git.altlinux.org/gears/b/bootloader-utils.git?p=bootloader-utils.git;a=blob;f=installkernel;h=e5535c3fc71acdc71b39fbfdd7ac226ad48a168d;hb=36925d1e276f9580fee403325ef0bd5c85688874#l222

kernel /boot/vmlinuz-%s
initrd /boot/initrd-%s.img

Необходимо использовать относительные пути:
kernel ../vmlinuz-%s
initrd ../initrd-%s.img

2. Другая проблема в том, что devicetree находятся в корне, а не в каталоге /boot

Это требует предварительного исправления всех ядер и уже потом строки:
http://git.altlinux.org/gears/b/bootloader-utils.git?p=bootloader-utils.git;a=blob;f=installkernel;h=e5535c3fc71acdc71b39fbfdd7ac226ad48a168d;hb=36925d1e276f9580fee403325ef0bd5c85688874#l224

fdtdir /lib/devicetree/%s

на строку:
fdtdir ../devicetree/%s

Далее нужно исправить симлинк /boot/dtb, чтобы он указывал на /boot/devicetree/&lt;последнее_ядро&gt;
Для этого исправить:
http://git.altlinux.org/gears/b/bootloader-utils.git?p=bootloader-utils.git;a=blob;f=installkernel;h=e5535c3fc71acdc71b39fbfdd7ac226ad48a168d;hb=36925d1e276f9580fee403325ef0bd5c85688874#l119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203901</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Bolshakov">sbolshakov</who>
    <bug_when>2021-10-18 15:31:07 +0300</bug_when>
    <thetext>Для интересующихся укажу, что речь о строчках по умолчанию в используемом
в u-boot /boot/extlinux/extlinux.conf.
Я полагаю, что поддерживать отдельный /boot для этих (= использующих u-boot)
платформ из коробки незачем, нет сколько-нибудь распространённых use cases.
Частные же случаи, если вообще существуют и имеют практический смысл, покрываются
ручным редактированием.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203905</commentid>
    <comment_count>2</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-10-18 15:59:24 +0300</bug_when>
    <thetext>(In reply to Sergey Bolshakov from comment #1)
&gt; Для интересующихся укажу, что речь о строчках по умолчанию в используемом
&gt; в u-boot /boot/extlinux/extlinux.conf.
&gt; Я полагаю, что поддерживать отдельный /boot для этих (= использующих u-boot)
&gt; платформ из коробки незачем, нет сколько-нибудь распространённых use cases.
&gt; Частные же случаи, если вообще существуют и имеют практический смысл,
&gt; покрываются
&gt; ручным редактированием.

Ручное редактирование затрётся при обновлении ядра.
А use case может быть такой:
Одноплатник не поддерживает загрузку с USB или nvme накопителя. Только с microSD. В этом случае /boot размещаем на microSD, а остальное на быстром nvme или usb3.0 SSD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203917</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey Bolshakov">sbolshakov</who>
    <bug_when>2021-10-18 16:18:35 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #2)

&gt; А use case может быть такой:
&gt; Одноплатник не поддерживает загрузку с USB или nvme накопителя. Только с
&gt; microSD. В этом случае /boot размещаем на microSD, а остальное на быстром
&gt; nvme или usb3.0 SSD.

насколько мне известно, среди одноплатников, поддерживаемых нашими u-boot и ядрами, таких нет. поддержка загрузки с usb повсеместна, поддержка nvme в тех редких случаях, когда интерфейс физически присутствует, тоже заявляется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203918</commentid>
    <comment_count>4</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-10-18 16:39:48 +0300</bug_when>
    <thetext>(In reply to Sergey Bolshakov from comment #3)
&gt; (In reply to Антон Мидюков from comment #2)
&gt; 
&gt; &gt; А use case может быть такой:
&gt; &gt; Одноплатник не поддерживает загрузку с USB или nvme накопителя. Только с
&gt; &gt; microSD. В этом случае /boot размещаем на microSD, а остальное на быстром
&gt; &gt; nvme или usb3.0 SSD.
&gt; 
&gt; насколько мне известно, среди одноплатников, поддерживаемых нашими u-boot и
&gt; ядрами, таких нет. поддержка загрузки с usb повсеместна, поддержка nvme в
&gt; тех редких случаях, когда интерфейс физически присутствует, тоже заявляется.

Поддержка появляется же через значительное время после выпуска одноплатника. Разве не так?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203921</commentid>
    <comment_count>5</comment_count>
    <who name="Sergey Bolshakov">sbolshakov</who>
    <bug_when>2021-10-18 17:04:02 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #4)

&gt; Поддержка появляется же через значительное время после выпуска одноплатника.
&gt; Разве не так?

По разному бывает. Но обычно, поддержка тех запчастей, с которых можно грузиться, в ядре и u-boot появляется примерно в одно время и зачастую благодаря одним и тем же людям, так что сценарий &apos;в u-boot умеем только в sd-карту, а уж ядром-то огого&apos; не кажется реальным.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211852</commentid>
    <comment_count>6</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2022-06-17 19:53:43 +0300</bug_when>
    <thetext>bootloader-utils-0.5.4-alt1 -&gt; sisyphus:

 Thu May 19 2022 Anton Midyukov &lt;antohami@altlinux&gt; 0.5.4-alt1
 - installkernel: add detect /boot/devicetree
 - installkernel: add bootloading with separate partition /boot with extlinux.conf
   (Closes: 41140)
 - installkernel: create relative symlink dtb for /boot/devicetree/$VERSION
 - installkernel: unset $DTB_DIR, if not exist $DTB_DIR/$VERSION directory
 - installkernel: create symlink /boot/dtb, if exist $DTB_DIR/$VERSION
 - installkernel: update extlinux.conf, if it exist and exist $DTB_DIR/$VERSION
 - installkernel: add entry to extlinux.conf, if DTB_DIR not exist also</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>