2

我用 YOCTO 为 KARO TX6S-8035 目标构建了一个嵌入式 linux。我使用 Mfgtools-TX6-2018-01 工具将图像闪存到板上,但是当我启动设备时出现以下错误: Kernel panic - not syncing: Requested init /linuxrc failed (error -2)。我怎样才能解决这个问题?

这是 U-BOOT 中 printenv 的结果: printenv

And the serial output from the board: 串行输出

4

2 回答 2

1

内核正在寻找 init 程序,但找不到它。您的图像很可能已损坏。更多信息在这里:什么是 linuxrc 目的,它在 rootfs 中是否需要?

我会尝试:

  1. 刷新图像
  2. 检查图像以确保 linuxrc 存在
  3. 将问题发布到meta-freescale 邮件列表

另外,我不知道您使用的是什么设置,但我会查看FSL Community BSP。其他人很有可能正在为该平台构建。

于 2018-03-19T18:38:00.397 回答
0

内核恐慌 - 不同步:请求的 init /linuxrc 失败(错误 -2)

就我而言,我使用busybox 创建initrd。/linuxrc 执行错误,因为找不到动态库。

挂载initrd后执行以下脚本

file linuxrc
  • linuxrc:ELF 64 位 LSB 可执行文件,ARM aarch64,版本 1 (SYSV),动态链接,解释器/lib/ld-linux-aarch64.so.1,用于 GNU/Linux 3.7.0,已剥离

修复选项1:

将库复制到 initrd。

mkdir -p $WORKSPACE/initrd
mount $WORKSPACE/ramdisk.img $WORKSPACE/initrd -t ext2 -o loop=/dev/loop0
pushd $WORKSPACE/initrd/
cp -rf /opt/buildtools/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/lib ./
cp -rf /opt/buildtools/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/lib64 ./
aarch64-none-linux-gnu-strip $WORKSPACE/initrd/lib/*
aarch64-none-linux-gnu-strip $WORKSPACE/initrd/lib64/*
aarch64-none-linux-gnu-strip $WORKSPACE/initrd/bin/busybox
popd

umount $WORKSPACE/initrd
gzip -9 $WORKSPACE/ramdisk.img

修复选项2:

静态构建busybox。

make -j16 -C $WORKSPACE/$BUSYBOX ARCH="arm64" LDFLAGS="--static" CROSS_COMPILE="aarch64-none-linux-gnu-" install
  • busybox-1.32.1/_install/bin/busybox:ELF 64 位 LSB 可执行文件,ARM aarch64,版本 1 (GNU/Linux),静态链接,用于 GNU/Linux 3.7.0,已剥离
于 2021-02-09T01:25:48.840 回答