蜗窝科技

请教一个initramdisk的问题

蜗窝讨论区存档 · Linux kernel技术问答 · 楼主 ghostpipi · 2017-07-19 · 2 帖

本文是原「蜗窝讨论区」的历史存档(2017-07-19),来自版块「Linux kernel技术问答」,共 2 帖。讨论区已停止服务,此处仅供查阅。

ghostpipi · 2017-07-19 11:23

我自己做了一个根文件系统,使用命令“sudo find . | sudo cpio -o -Hnewc | sudo gzip -9 > ../initramfs_data.cpio.gz”压缩成cpio.gz,大小有58.6M

在linux内核里,版本4.9,配置了initramdisk路径,编译出image,使用mkimage把image和dtb生成FIT文件,然后通过网络在板卡上启动linux

启动到是都正常,但是进入系统后,根文件系统下有的文件内容都是0,或者是别非法值,或者有些程序都不能使用,例如awk,一运行,就提示cannot execute binary file: Exec format error,也就是说不是可执行文件,貌似文件内容被改变了

请各位能否指点一二,这是什么原因?

wowo · 2017-07-19 22:13

ghostpipi 写道: 我自己做了一个根文件系统,使用命令“sudo find . | sudo cpio -o -Hnewc | sudo gzip -9 > ../initramfs_data.cpio.gz”压缩成cpio.gz,大小有58.6M

在linux内核里,版本4.9,配置了initramdisk路径,编译出image,使用mkimage把image和dtb生成FIT文件,然后通过网络在板卡上启动linux

启动到是都正常,但是进入系统后,根文件系统下有的文件内容都是0,或者是别非法值,或者有些程序都不能使用,例如awk,一运行,就提示cannot execute binary file: Exec format error,也就是说不是可执行文件,貌似文件内容被改变了

请各位能否指点一二,这是什么原因?

我觉得可以从下面两个步骤去检查: 1. 怀疑文件坏了,就把initramfs_data.cpio.gz解出来,检查里面的文件是否正常,如果正常,可能是ramdisk的问题,进行第2步检查。 2. 系统启动后,检查对应的二进制文件,查看是否正常(可以和host中的文件对比)。如果正常(会正常吗?),有些奇怪;如果不正常(会不正常吗?),也挺奇怪(往memory上怀疑一下,嘴一个memory的读写测试)。