This service is available only in Japanese-language.

MMUレス Linuxの対応可否

Yocto はMMUレス(non-MMU、no-MMU) Linux(以前はuClinuxと呼ばれてたもの)に対応してるのでしょうか?
MMUのないマイコン系(例えばCortex-M7)向けLinuxビルドにYoctoが使えるのか知りたいです。
Cライブラリに uClibc を指定はできますが...。

YoctoProjectの検証対象アークテクチャは、arm/arm64/mips/mips64/x86/x86-64/ppc/ppc64 、qemuとしてサポートされいるものは前述のアーキテクチャに加えてriscv32/riescv64となっています。
https://git.yoctoproject.org/poky/tree/meta/conf/machine/include/arm/armv7m
が提供されていることから、MMUレスのSoCへの対応は可能と考えます。
MMUレスに対応したuClibcに関して、Yocto2.2(2016/10リリース)までサポートされていましたが、Yocto2.3以降は非サポートとなっていますが、MMUレスに対応したlibcとしてmuslが利用可能となっています。

Yocto 4.0.2 での Cortex-M7 + Musl で、openssl 3.0.5 のビルドで下記エラーになります。
解決方法をご存知でしょうか?
meta-hoge/conf/machine/hoge.conf で
require conf/machine/include/arm/armv7m/tune-cortexm7.inc
としてます。

/path/to/build_hoge/tmp/work/armv7m-poky-linux-musleabi/openssl/3.0.5-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-musleabi/../../libexec/arm-poky-linux-musleabi/gcc/arm-poky-linux-musleabi/11.3.0/ld: error: libcrypto.a(libcrypto-lib-armv4cpuid.o): conflicting architecture profiles A/M

Yoctoを使わず、
musl-cross-make
https://github.com/richfelker/musl-cross-make
で作成したクロスコンパイラーだと、openssl ビルドできます。

> conflicting architecture profiles A/M
openssl_%.bbappend で
EXTRA_OECONF:append:armv7m = " no-asm"
と記述することでビルドできました。

python3-ctypes が必要とする libffi 3.4.2 がビルドエラーになります。
src/arm/sysv.S のアセンブリコードが armv7m(Cortex-M7のCPU)未対応のためです。

暫定として、エラー箇所を
#ifndef __ARM_ARCH_7M__
#endif
で囲ってビルド通しました。

libffi の次バージョンで対応されること、
または、yocto 4.0.3 でパッチ提供されることを期待します。

yocto4.0.3 ですが、まもなくリリースとなりますが、残念ながらパッチは提供されていません。
libffi-native 向けのレシピの修正は4.0.3向けに入っていますが……
https://git.yoctoproject.org/poky/commit/?h=kirkstone&id=cc75d77bc93017b...

コンフィグレーションの追加など、ビルドシステムで対応するパッチは、openembedded-core@lists.openembedded.org に送付しますが、ソースコードレベルでのパッチの場合は、UpStream Firstの原則でlibffiに送るのが良いかと。

musl ですが、ARMのMMUレスには現時点で非対応のようです...。
musl ソース内の WHATSNEW の 1.1.11 release notes に“sh2 nommu target support”とありますが、これ以降 nommu サポートのターゲット追記がありません。