[devel-distro] Политика упаковки devicetree в ядрах

Антон Мидюков midyukov-anton at ya.ru
Mon Oct 4 16:22:49 MSK 2021


04.10.2021 16:26, Sergey Bolshakov пишет:
>>>>>> "Антон" == Антон Мидюков <midyukov-anton �� ya.ru> writes:
> 
>  > Здравствуйте, коллеги
>  > Хотел бы обсудить два вопроса упаковки devicetree в наших ядрах
> 
>  > 1. devicetree у нас располагаются в одном каталоге /lib/devicetree/<ядро>/
>  > без распределения по подкаталогам на каждого вендора. В других дистрибутивах
>  > (например, Armbian) devicetree распределены по вендорам (allwinner/ nvidia/ rockchip/
>  > и т.д.).
> 
> Это верно только для arm64, в arm всё на одном уровне.
> У нас так, как есть, по историческим причинам -- цель dtbs_install
> в ядре, на которую можно было бы рассчитывать в качестве стандартной,
> появилась сравнительно недавно.
> 
>  > Хотелось бы иметь совместимость со сторонними u-boot, так как это позволит,
>  > не записывать u-boot, а использовать уже имеющийся в eMMC или SPI flash.
>  > Причина такого желания состоит в том, что пользователи могут желать сохранить
>  > в eMMC Armbian или другой дистрибутив.
>  > Замена штатного u-boot на u-boot Альта в свою очередь приведёт к тому, что не загрузятся
>  > другие дистрибутивы, использующие распределение dtb по вендорам.
> 
>  > Для достижения совместимости с другими дистрибутивами достаточно создать
>  > симлинки с именами вендоров на текущий каталог в каталоге /lib/devicetree/<ядро>/
>  > ln -s . <имя_вендора>
> 
>  > Подойдёт ли такая реализация? Если да, то как бы её лучше реализовать?
> 
> Я не вижжу проблем в такой реализации, как впрочем и не вижу в ней нужды --
> разве что с целью через год-два, когда смысла беспокоиться о старых ядрах
> поубавится, выровнять поведение наших u-boot с майнлайном.

Нужду я описал. На плате u-boot желает вендор/имя.dtb, а заменить по каким-то причинам нельзя,
сложно или не охота. Если это несложно реализовать, то давайте сделаем. Это востребовано
пользователями.

> 
>  > 2. Другая проблема - невозможность использования зашифрованного корня при выделенном
>  > незашифрованном разделе /boot. Для того, чтобы это было возможно, необходимо
>  > наличие devicetree в /boot.
>  > Предлагаю начать паковать devicetree в /boot/devicetree/<ядро>/, и создавать для
>  > обратной совместимости симлинк:
>  > ln -s /boot/devicetree/<ядро> /lib/devicetree/<ядро>
> 
>  > 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/
> 
>  > Но тенденция к разрастанию, конечно, заметная.
> 
> Я думаю, что энтузиасту шифрования всего на свете сорок вёрст не крюк,
> предоставим ему возможность самому сделать отдельный /boot,
> положить туда нужный dtb и отстрелить себе^W^W радоваться творению
> рук своих.
> 

Проблема то шире, чем я подумал сначала. У нас сейчас вообще не поддерживается загрузка с отдельного раздела /boot
при загрузке при помощи extlinux.conf.
Мало перетащить devicetree в /boot, нужно ещё исправить генерацию extlinux.conf в installkernel, заменить
абсолютные пути на относительные:
-	kernel /boot/vmlinuz-%s
-	initrd /boot/initrd-%s.img
-	fdtdir /lib/devicetree/%s
+	kernel ../vmlinuz-%s
+	initrd ../initrd-%s.img
+	fdtdir ../devicetree/%s

А отдельный раздел /boot нужен также и для расположения корня на lvm.

-- 
С уважением, Антон Мидюков <antohami �� altlinux.org>


More information about the devel-distro mailing list