我正在将我的项目(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
答案 0 :(得分:0)
看起来问题出现在glibc中。 我用2.17构建,尽管它被称为“支持aarch64的第一个glibc” - 它对我不起作用。 将glibc升级到2.27解决了问题: - )
大家为什么试图帮助我这个!