Armadilloフォーラム

Linuxカーネルのビルド作業で'usr'レシピで失敗

kdhiro

2021年4月30日 12時59分

Armadillo-640の製品マニュアルのP.100のビルドコマンドの実行の際に、
'usr'のレシピで失敗しましたと下記のようなメッセージが出ました。解決
方法を教えて頂きたくお願い致します。

root@atde7:/home/atmark/DT/linux-v4.14-at32# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
scripts/kconfig/conf --silentoldconfig Kconfig
SYSHDR arch/arm/include/generated/uapi/asm/unistd-common.h
SYSHDR arch/arm/include/generated/uapi/asm/unistd-oabi.h
以降省略

./scripts/gen_initramfs_list.sh: Cannot open 'initramfs_a600.cpio.gz'
usr/Makefile:60: ターゲット 'usr/initramfs_data.cpio.gz' のレシピで失敗しました
make[1]: *** [usr/initramfs_data.cpio.gz] エラー 1
Makefile:1054: ターゲット 'usr' のレシピで失敗しました
make: *** [usr] エラー 2

コメント

at_ohsawa

2021年4月30日 13時19分

> ./scripts/gen_initramfs_list.sh: Cannot open 'initramfs_a600.cpio.gz'
> usr/Makefile:60: ターゲット 'usr/initramfs_data.cpio.gz' のレシピで失敗しました

エラーにあるとおり、initramfs _a600.cpio.gzのシンボリックリンクを張っていないのか
シンボリックリンクの張る先を間違っているのか、張る先に実体のファイルが無い、make
を実行しているユーザーから、このファイルに対してアクセスする権限が無い、のどれかだと思います。

製品マニュアルの「10.2.1. 手順:Linuxカーネルをビルド」の2を改めて確認してください。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

kdhiro

2021年5月7日 10時53分

再度、マニュアルを確認し、実行したところ、エラーが下記のように変わりました。

root@atde7:/home/linux-v4.14-at32# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-LOADADDR=0x82000000 uImage
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
CHK include/config/kernel.release
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
CHK include/generated/uapi/linux/version.h
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
CHK include/generated/utsrelease.h
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
CC kernel/bounds.s
/bin/sh: 1: arm-linux-gnueabihf-LOADADDR=0x82000000gcc: not found
Kbuild:21: ターゲット 'kernel/bounds.s' のレシピで失敗しました
make[1]: *** [kernel/bounds.s] エラー 127
Makefile:1098: ターゲット 'prepare0' のレシピで失敗しました
make: *** [prepare0] エラー 2

対応策を教えて頂きたく。お願い致します。

at_makoto.sato

2021年5月7日 11時29分

佐藤です。

> 再度、マニュアルを確認し、実行したところ、エラーが下記のように変わりました。
>
> root@atde7:/home/linux-v4.14-at32# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-LOADADDR=0x82000000 uImage
上記のコマンドですが、arm-linux-gnueabihf- と LOADADDR の間にスペースが必要です。
以下のように実行してください。

root@atde7:/home/linux-v4.14-at32# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x82000000 uImage

at_ohsawa

2021年5月7日 11時30分

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x82000000 uImage

上記の通りLOADADDRの前にはスペースが必要です。

kdhiro

2021年5月7日 11時50分

ありがとうございます。解決できました。
過去のフォーラムのLinuxカーネルビルドエラーにあったものと同様なマニュアルの
改行部分の見誤り(スペース忘れ、改行されたinitramfs_a600.cpio.gzの記入漏れ)だったと思われます。