内核恐慌 - 不同步:请求的 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,已剥离