/ sbin / init存在但无法执行(错误-13)

时间:2018-06-10 19:10:36

标签: init u-boot

我正在将我的项目(https://github.com/warpme/minimyth2)重新编译为rpi3(aarch64)。 我已经编译了所有组件,现在我正在尝试在rpi3上启动它。

我正在使用arm archlinux中的u-boot脚本替换内核映像(Image.gz)和编译中的rootfs

内核启动。 我也在控制台上看到,内核安装OK第二个分区(我的rootfs内容在这里)。

但后来内核日志说:

Starting init: /sbin/init exists but couldn’t execute it (error -13)
Starting init: /sbin/sh exists but couldn’t execute it (error -13)

相应于https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/include/uapi/asm-generic/errno-base.h?h=v4.16.14“错误-13”表示EACCES 13 /* Permission denied */.

我仔细检查过:两个文件都是root:root和755(它们的依赖关系)。还有什么可以导致EACCES?

u-boot脚本如下:

# Set root partition to the second partition of boot device
part uuid ${devtype} ${devnum}:2 uuid

setenv bootargs console=ttyS1,115200 console=tty0 root=PARTUUID=${uuid} rw rootwait debug loglevel=7 smsc95xx.macaddr="${usbethaddr}"

if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /Image; then
  if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /dtbs/${fdtfile}; then
    if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /initramfs-linux.img; then
      booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
    else
      booti ${kernel_addr_r} - ${fdt_addr_r};
    fi;
  fi;
fi

所以我认为rootfs安装为rw

如果有人想查看我的文件,这里有boot和rootfs分区内容:

hxxp://warped.inet2.org/boot.tar.bz2 hxxp://warped.inet2.org/root.tar.bz2

总结:

在rootfs安装阶段内核

1 \

EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)

2 \ kernel能够找到init(并且由于内核声明

而回退到sh,因为初始化执行失败)

Starting init: /sbin/init exists but couldn't execute it (error -13) Starting init: /sbin/sh exists but couldn’t execute it (error -13)

3 \将"rootflags=exec"添加到内核命令行会导致root挂载失败。

对我来说,似乎我的内核配置因某种程度而被破坏,因为它能够挂载但无法在其上执行。

附加我的内核cfg http://warped.inet2.org/kernel-config.tar.bz2)(请参阅linux-4.16.13-arm64-armv8.config)

有人可以查看它并验证这样的配置是否足以在没有任何initrd的情况下挂载rootfs? (确认:我想直接从内核映像安装SD卡ext4 rootfs)。

或者:有人可以为我提供最小的aarch64内核配置,足以使用通用4.16内核的U-boot rpi3,在SD ext4分区上使用rootfs并且没有任何initrd吗?

(PS:我的内核配置基于archlinux aarch64多平台内核,99.9%等于archlinux arm)

(下面是截图表单内核日志) boot screenshot

1 个答案:

答案 0 :(得分:0)

看起来问题出现在glibc中。 我用2.17构建,尽管它被称为“支持aarch64的第一个glibc” - 它对我不起作用。 将glibc升级到2.27解决了问题: - )

大家为什么试图帮助我这个!