Bug 41140

Summary: Не поддерживается загрузка с /boot на отдельном разделе при загрузке с extlinux.conf
Product: Sisyphus Reporter: Антон Мидюков <antohami>
Component: bootloader-utilsAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: at, boyarsh, glebfm, ldv, placeholder, sbolshakov, sem, slazav, vitty, vt
Version: unstable   
Hardware: aarch64   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=41142
Bug Depends on: 41141, 41142    
Bug Blocks:    

Description Антон Мидюков 2021-10-17 19:06:40 MSK
проблем две:

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
Comment 1 Sergey Bolshakov 2021-10-18 15:31:07 MSK
Для интересующихся укажу, что речь о строчках по умолчанию в используемом
в u-boot /boot/extlinux/extlinux.conf.
Я полагаю, что поддерживать отдельный /boot для этих (= использующих u-boot)
платформ из коробки незачем, нет сколько-нибудь распространённых use cases.
Частные же случаи, если вообще существуют и имеют практический смысл, покрываются
ручным редактированием.
Comment 2 Антон Мидюков 2021-10-18 15:59:24 MSK
(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.
Comment 3 Sergey Bolshakov 2021-10-18 16:18:35 MSK
(In reply to Антон Мидюков from comment #2)

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

насколько мне известно, среди одноплатников, поддерживаемых нашими u-boot и ядрами, таких нет. поддержка загрузки с usb повсеместна, поддержка nvme в тех редких случаях, когда интерфейс физически присутствует, тоже заявляется.
Comment 4 Антон Мидюков 2021-10-18 16:39:48 MSK
(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 в
> тех редких случаях, когда интерфейс физически присутствует, тоже заявляется.

Поддержка появляется же через значительное время после выпуска одноплатника. Разве не так?
Comment 5 Sergey Bolshakov 2021-10-18 17:04:02 MSK
(In reply to Антон Мидюков from comment #4)

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

По разному бывает. Но обычно, поддержка тех запчастей, с которых можно грузиться, в ядре и u-boot появляется примерно в одно время и зачастую благодаря одним и тем же людям, так что сценарий 'в u-boot умеем только в sd-карту, а уж ядром-то огого' не кажется реальным.
Comment 6 Repository Robot 2022-06-17 19:53:43 MSK
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