Linux kernel 内核死机-不同步:请求的init/linuxrc失败(错误-2)

Linux kernel 内核死机-不同步:请求的init/linuxrc失败(错误-2),linux-kernel,embedded-linux,yocto,u-boot,imx6,Linux Kernel,Embedded Linux,Yocto,U Boot,Imx6,我为KaroTX6S-8035目标构建了一个带有YOCTO的嵌入式linux。我使用 Mfgtools-TX6-2018-01用于将图像闪存到电路板中的工具,但当我启动设备时,出现以下错误:内核死机-不同步:请求的init/linuxrc失败(错误-2)。 我怎样才能解决这个问题 以下是U-BOOT的printenv结果: 和主板的串行输出:内核正在查找init程序,但找不到它。很可能是您的图像已损坏。更多信息请点击此处: 我会尝试: 重新刷新图像 检查图像以确保linuxrc存在 将问题张贴

我为KaroTX6S-8035目标构建了一个带有YOCTO的嵌入式linux。我使用 Mfgtools-TX6-2018-01用于将图像闪存到电路板中的工具,但当我启动设备时,出现以下错误:内核死机-不同步:请求的init/linuxrc失败(错误-2)。 我怎样才能解决这个问题

以下是U-BOOT的printenv结果:


和主板的串行输出:

内核正在查找init程序,但找不到它。很可能是您的图像已损坏。更多信息请点击此处:

我会尝试:

  • 重新刷新图像
  • 检查图像以确保linuxrc存在
  • 将问题张贴到

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

    内核死机-不同步:请求的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//u install/bin/busybox:ELF 64位LSB可执行文件,ARM aarch64,版本1(GNU/Linux),静态链接,适用于GNU/Linux 3.7.0,剥离
    我将“init=sbin/init”添加到u-boot环境中。