проблем две: 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/<последнее_ядро> Для этого исправить: http://git.altlinux.org/gears/b/bootloader-utils.git?p=bootloader-utils.git;a=blob;f=installkernel;h=e5535c3fc71acdc71b39fbfdd7ac226ad48a168d;hb=36925d1e276f9580fee403325ef0bd5c85688874#l119
Для интересующихся укажу, что речь о строчках по умолчанию в используемом в u-boot /boot/extlinux/extlinux.conf. Я полагаю, что поддерживать отдельный /boot для этих (= использующих u-boot) платформ из коробки незачем, нет сколько-нибудь распространённых use cases. Частные же случаи, если вообще существуют и имеют практический смысл, покрываются ручным редактированием.
(In reply to Sergey Bolshakov from comment #1) > Для интересующихся укажу, что речь о строчках по умолчанию в используемом > в u-boot /boot/extlinux/extlinux.conf. > Я полагаю, что поддерживать отдельный /boot для этих (= использующих u-boot) > платформ из коробки незачем, нет сколько-нибудь распространённых use cases. > Частные же случаи, если вообще существуют и имеют практический смысл, > покрываются > ручным редактированием. Ручное редактирование затрётся при обновлении ядра. А use case может быть такой: Одноплатник не поддерживает загрузку с USB или nvme накопителя. Только с microSD. В этом случае /boot размещаем на microSD, а остальное на быстром nvme или usb3.0 SSD.
(In reply to Антон Мидюков from comment #2) > А use case может быть такой: > Одноплатник не поддерживает загрузку с USB или nvme накопителя. Только с > microSD. В этом случае /boot размещаем на microSD, а остальное на быстром > nvme или usb3.0 SSD. насколько мне известно, среди одноплатников, поддерживаемых нашими u-boot и ядрами, таких нет. поддержка загрузки с usb повсеместна, поддержка nvme в тех редких случаях, когда интерфейс физически присутствует, тоже заявляется.
(In reply to Sergey Bolshakov from comment #3) > (In reply to Антон Мидюков from comment #2) > > > А use case может быть такой: > > Одноплатник не поддерживает загрузку с USB или nvme накопителя. Только с > > microSD. В этом случае /boot размещаем на microSD, а остальное на быстром > > nvme или usb3.0 SSD. > > насколько мне известно, среди одноплатников, поддерживаемых нашими u-boot и > ядрами, таких нет. поддержка загрузки с usb повсеместна, поддержка nvme в > тех редких случаях, когда интерфейс физически присутствует, тоже заявляется. Поддержка появляется же через значительное время после выпуска одноплатника. Разве не так?
(In reply to Антон Мидюков from comment #4) > Поддержка появляется же через значительное время после выпуска одноплатника. > Разве не так? По разному бывает. Но обычно, поддержка тех запчастей, с которых можно грузиться, в ядре и u-boot появляется примерно в одно время и зачастую благодаря одним и тем же людям, так что сценарий 'в u-boot умеем только в sd-карту, а уж ядром-то огого' не кажется реальным.
bootloader-utils-0.5.4-alt1 -> sisyphus: Thu May 19 2022 Anton Midyukov <antohami@altlinux> 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