<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">04.10.2021 09:42, Антон Мидюков пишет:<br>
    </div>
    <blockquote type="cite"
      cite="mid:ffc02801-16dc-613f-17f1-d75b02099a16@ya.ru">
      <pre class="moz-quote-pre" wrap="">Здравствуйте, коллеги

Хотел бы обсудить два вопроса упаковки devicetree в наших ядрах

1. devicetree у нас располагаются в одном каталоге /lib/devicetree/&lt;ядро&gt;/
без распределения по подкаталогам на каждого вендора. В других дистрибутивах
(например, Armbian) devicetree распределены по вендорам (allwinner/ nvidia/ rockchip/
и т.д.).
Хотелось бы иметь совместимость со сторонними u-boot, так как это позволит,
не записывать u-boot, а использовать уже имеющийся в eMMC или SPI flash.
Причина такого желания состоит в том, что пользователи могут желать сохранить
в eMMC Armbian или другой дистрибутив.
Замена штатного u-boot на u-boot Альта в свою очередь приведёт к тому, что не загрузятся
другие дистрибутивы, использующие распределение dtb по вендорам.

Для достижения совместимости с другими дистрибутивами достаточно создать
симлинки с именами вендоров на текущий каталог в каталоге /lib/devicetree/&lt;ядро&gt;/
ln -s . &lt;имя_вендора&gt;

Подойдёт ли такая реализация? Если да, то как бы её лучше реализовать?

2. Другая проблема - невозможность использования зашифрованного корня при выделенном
незашифрованном разделе /boot. Для того, чтобы это было возможно, необходимо
наличие devicetree в /boot.
Предлагаю начать паковать devicetree в /boot/devicetree/&lt;ядро&gt;/, и создавать для
обратной совместимости симлинк:
ln -s /boot/devicetree/&lt;ядро&gt; /lib/devicetree/&lt;ядро&gt;

devicetree не сильно много места занимают, так что /boot не разбухнет слишком сильно:
du -h lib/devicetree/5.10.70-std-def-alt1
8,7M        lib/devicetree/5.10.70-std-def-alt1

du -h lib/devicetree/5.14.9-un-def-alt1/
14M        lib/devicetree/5.14.9-un-def-alt1/

Но тенденция к разрастанию, конечно, заметная.

</pre>
    </blockquote>
    <pre>
&gt; В других дистрибутивах
уточню, не в дистрибутивах, а в апстрим u-boot предписана такое расположение,
и u-boot, при поиске нужного DTB использует эти префиксы (rockchip allwinner amlogic etc)
еще одна причина не желательности сваливания всех DTB в одну кучу - 
в некоторых случаях , при слишком большом кол. файлов в одной директории 
возникают сбои чтения\поиска нужного варианта и сбой запуска системы

&gt;это позволит,
&gt;не записывать u-boot
еще причина не трогать штатный u-boot, есть много моделей , на которых альтовский u-boot 
просто не будет работать или его функционал будет сильно урезан и не будет поддержки всего
оборудования устройства

&gt;невозможность использования зашифрованного корня при выделенном
&gt;незашифрованном разделе /boot.
не только шифрование, еще куча вариантов, почему DTB обязаны быть строго вместе с ядром.
для запуска системы u-boot должен обязательно загрузить ввместе ядро и DTB, 
можно обойтись без Initrd, но без DTB ни чего не будет работать.
DTB - это обязательная составляющая ядра, файлы DTB обязаны быть в одном месте с файлами ядра.
без этих файлов (точнее без правильного файла для конкреного оборудования) ядро не будет вообще работать.
сетевая загрузка, мобильные клиенты (удалённый рабочий стол и прочее).
размещение DTB в корневой пришло из древних времён, когда размер носителей был мизерный и приходилось 
изощряться, что-бы размиестить ядро в мизерном разделе и всё остальное помещали в корневую систему.
давно пора избавится от этого анахронизма. 

</pre>
  </body>
</html>