Bug 40231

Summary: installkernel игнорирует INSTALL_PATH
Product: Branch p9 Reporter: Alexey Sheplyakov <asheplyakov>
Component: bootloader-utilsAssignee: qa-team <qa-team>
Status: CLOSED WORKSFORME QA Contact: qa-p9 <qa-p9>
Severity: normal    
Priority: P5 CC: iv, qwetwe, sbolshakov, vt
Version: не указана   
Hardware: x86_64   
OS: Linux   

Description Alexey Sheplyakov 2021-06-16 13:59:30 MSK
Собираю ядро для arm64 платы, и устанавливаю его во временную директорию. Вот так:

git clone --depth=1 -b baikalm-5.10.y git://github.com/altlinux/linux-be-m1000.git
cd linux-be-m1000
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` baikal_minimal_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` all
rm -rf _inst
mkdir -p -m755 _inst
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_PATH=`pwd`/_inst/boot INSTALL_MOD_PATH=`pwd`/_inst install modules_install


Ожидаемый результат: в _inst/boot появляются файлы {vmlinuz,System.map,config}-${krelease}

Наблюдаемый результат: 
 make \
	ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
	INSTALL_PATH=`pwd`/_inst/boot \
	INSTALL_MOD_PATH=`pwd`/_inst \
	install modules_install
make[1]: Entering directory '/home/asheplyakov/linux-be-m1000'
sh ./arch/arm64/boot/install.sh 5.10.41-05484-g72af9fca9403-dirty \
arch/arm64/boot/Image System.map "/home/asheplyakov/linux-be-m1000/_inst/boot"
/sbin/installkernel: /boot: Permission denied
make[3]: *** [arch/arm64/boot/Makefile:40: install] Error 1
make[2]: *** [arch/arm64/Makefile:165: install] Error 2
make[1]: *** [Makefile:336: __build_one_by_one] Error 2
make[1]: Leaving directory '/home/asheplyakov/linux-be-m1000'
make: *** [Makefile.qtcreator:45: install] Error 2

Что за самодеятельность - зачем тащить ядро в /boot, если явно указан INSTALL_PATH (и ядро вообще для другой архитектуры)?
Comment 1 Ivan A. Melnikov 2021-06-16 14:18:23 MSK
И правда, исправление[1] из 0.5.3-alt1 в p9 не дошло.

[1] http://git.altlinux.org/gears/b/bootloader-utils.git?a=commitdiff;h=93a4efba28ce3c40ceb86cb16026bbd9e39a0157

Попробуйте bootloader-utils из #274649.
Comment 2 Alexey Sheplyakov 2021-06-16 15:43:34 MSK
В 0.5.3-alt1 есть некоторые улучшения: ядро, .config и System.map таки копируются именно туда, куда сказано. Однако installkernel всё равно пытается создать initramfs и что-то сделать с загрузчиком. Об этом никто не просил, и это, очевидно, не удаётся:
- ядро для другой архитектуры, собирать для него initramfs из хостовых бинарников заведомо провальная затея
- модули еще не установлены
- установят их не в /lib/modules, а тоже во временную директорию (которая потом копируется на плату тем или иным способом)
Comment 3 Alexey Sheplyakov 2021-06-16 15:54:45 MSK
(In reply to Ivan A. Melnikov from comment #1)
> И правда, исправление[1] из 0.5.3-alt1 в p9 не дошло.
> 
> [1]
> http://git.altlinux.org/gears/b/bootloader-utils.git?a=commitdiff;
> h=93a4efba28ce3c40ceb86cb16026bbd9e39a0157
> 
> Попробуйте bootloader-utils из #274649.

make \
	ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
	INSTALL_PATH=`pwd`/_inst/boot \
	INSTALL_MOD_PATH=`pwd`/_inst \
	install modules_install
make[1]: Entering directory '/home/asheplyakov/linux-be-m1000'
sh ./arch/arm64/boot/install.sh 5.10.41-05484-g72af9fca9403-dirty \
arch/arm64/boot/Image System.map "/home/asheplyakov/linux-be-m1000/_inst/boot"
depmod: ERROR: could not open directory /lib/modules/5.10.41-05484-g72af9fca9403-dirty: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
make-initrd: /lib/modules/5.10.41-05484-g72af9fca9403-dirty: Not readable
make[3]: *** [arch/arm64/boot/Makefile:40: install] Error 1
make[2]: *** [arch/arm64/Makefile:165: install] Error 2
make[1]: *** [Makefile:336: __build_one_by_one] Error 2

Пытается запустить depmod, создать initramfs, и далее со всеми остановками.
Объяснил, что так делать не надо:

diff --git a/installkernel b/installkernel
index eed1dae..e5535c3 100644
--- a/installkernel
+++ b/installkernel
@@ -104,6 +104,12 @@ if [ $# -ge 4 ]; then
        cp -S.old --preserve=timestamps "$KIMG" "$BOOTDIR/vmlinuz-$VERSION"
        cp -S.old --preserve=timestamps "$KMAP" "$BOOTDIR/System.map-$VERSION"
        NOFLAVOUR=y
+       if [ "$BOOTDIR" != "/boot" ]; then
+               # The kernel image is being installed into staging directory, i.e.
+               # make install INSTALL_PATH=`pwd`/inst ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
+               # Don't generate initramfs, and don't touch boot loader.
+               exit 0
+       fi
 fi
 
 : ${INITRD_GENERATOR:=make-initrd}



#274656 FAILED #1 [test-only] p9 bootloader-utils.git=0.5.3-alt2

(failed потому, что новее, чем в sisyphus)
Comment 4 Ivan A. Melnikov 2021-10-04 10:37:49 MSK
Ждём

#286347 EPERM #2 [locked] p10 bootloader-utils.git=0.5.3-alt2
#286348 POSTPONED #2 p9 bootloader-utils.git=0.5.3-alt2
Comment 5 Ivan Alekseev 2023-04-19 16:58:51 MSK
Алексей, здравствуйте.

По указанным шагам ошибка "/boot: Permission denied" не воспроизвелась. В то же время, мой результат не соответствует ожидаемому - в _inst создается только папка lib:

host-48 linux-be-m1000 # make \
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
INSTALL_PATH=`pwd`/_inst/boot \
INSTALL_MOD_PATH=`pwd`/_inst \
install modules_install
sh ./arch/arm64/boot/install.sh 5.10.101-gb5513a086915 \
arch/arm64/boot/Image System.map "/root/linux-be-m1000/_inst/boot"
cp: невозможно создать обычный файл '/root/linux-be-m1000/_inst/boot/config-5.10.101-gb5513a086915': Нет такого файла или каталога
cp: невозможно создать обычный файл '/root/linux-be-m1000/_inst/boot/vmlinuz-5.10.101-gb5513a086915': Нет такого файла или каталога
cp: невозможно создать обычный файл '/root/linux-be-m1000/_inst/boot/System.map-5.10.101-gb5513a086915': Нет такого файла или каталога
  INSTALL arch/arm64/lib/xor-neon.ko
  INSTALL crypto/async_tx/async_memcpy.ko
...
  INSTALL sound/usb/snd-usbmidi-lib.ko
  DEPMOD  5.10.101-gb5513a086915

host-48 linux-be-m1000 # l _inst/
итого 12
drwxr-xr-x  3 root root 4096 апр 19 16:21 lib/
drwxr-xr-x  3 root root 4096 апр 19 16:21 ./
drwxr-xr-x 26 root root 4096 апр 19 16:21 ../

- Стенд: виртуальная машина с системой, установленной из образа alt-workstation-9.2-aarch64.iso и обновленной до p9.

- Версия пакета: bootloader-utils-0.5.3-alt2.noarch

Подскажите, пожалуйста, актуальные шаги для воспроизведения ошибки.