Linux kernel SD卡上的Rootfs

Linux kernel SD卡上的Rootfs,linux-kernel,filesystems,buildroot,rootfs,initrd,Linux Kernel,Filesystems,Buildroot,Rootfs,Initrd,我有一个设备,上面有一个3.10 linux内核,可以引导到busybox shell(initramfs) 当我在SD卡上提取busybox文件系统映像,并将root从root=/dev/ram修改为/dev/mmcblck0p1时,它仍然会引导到shell 因此,busybox工作正常,但如果我尝试使用任何其他FS,内核将崩溃 我尝试使用debootstrap()生成rootfs,并在SD卡上提取新的rootfs。我收到一个错误,上面写着“未能执行/sbin/init” 我确实检查了文件是否

我有一个设备,上面有一个3.10 linux内核,可以引导到busybox shell(initramfs)

当我在SD卡上提取busybox文件系统映像,并将root从root=/dev/ram修改为/dev/mmcblck0p1时,它仍然会引导到shell 因此,busybox工作正常,但如果我尝试使用任何其他FS,内核将崩溃

我尝试使用debootstrap()生成rootfs,并在SD卡上提取新的rootfs。我收到一个错误,上面写着“未能执行/sbin/init” 我确实检查了文件是否存在,还检查了权限,我觉得不错

有什么问题吗

我是新来的。我假设SD卡上的任何FS都可以挂载,但看起来情况并非如此。我猜/sbin/init所做的任何事情都依赖于设备

我想做什么?--> 我需要用几个包和库(gcc-python等)创建一个rootfs,正常的方法是什么?我甚至尝试过buildroot,但我无法达到目标。在buildroot的/bin/中不可能有gcc吗

--更新--

我正在将SD卡格式化为ext4格式,下面是fdisk的输出

Disk /dev/sdb1: 7945 MB, 7945588224 bytes
255 heads, 63 sectors/track, 965 cylinders, total 15518727 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc2aa4908

Device Boot      Start         End      Blocks   Id  System
下面是内核日志,我在SD卡上有一个文件系统。存储卡驱动程序工作正常,我已经验证过了。如果我在SD卡上有一个busybox文件系统,那么一切都可以正常工作。当我使用任何其他文件系统时,我会得到以下信息

6EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
6VFS: Mounted root (ext4 filesystem) on device 179:1.
6Freeing unused kernel memory: 84K (c0f00000 - c0f15000)
3request_module: runaway loop modprobe binfmt-464c
4kworker/u2:4 (145) used greatest stack depth: 6132 bytes left
3Failed to execute /sbin/init.  Attempting defaults...
3request_module: runaway loop modprobe binfmt-464c
3request_module: runaway loop modprobe binfmt-464c
0Kernel panic - not syncing: No init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.
选中时,也会有具有相应权限的/sbin/init

考虑此错误:“请求_模块:失控循环modprobe binfmt-464c”

很可能您正试图使用64b二进制文件(
/sbin/init
和其他)和仅32b的内核。要么重新编译内核以支持64b,要么在sd卡上安装32b的用户空间

其他需要检查的事项:

  • 确认在内核中确实启用了elf支持(通常是这样,但可以禁用它)
  • 谷歌搜索那个错误,看看人们在这方面遇到了什么样的问题

  • SD卡是用什么文件系统格式化的?您需要在帖子中包含控制台输出,以便我们可以看到引导失败的地方。您需要确保内核或在initramfs中加载的模块中有一个MMC驱动程序。内核引导参数需要指示文件系统类型。如果您发布了SD的fdisk打印输出,那就太好了。@oakad ext4filesystem@JonathanBen-Avraham是,在原始post itslefPost中编辑,在fdisk中发布“p”(打印)命令的输出。根文件系统是否位于SD的第一个分区中?因为第一个分区是内核试图装载的分区。你确定U-Boot不在第一个分区中,文件系统在第二个分区中吗?我检查了/sbin/init,它是一个32位elf+我的内核也是一个3.10内核32位。我使用的用户空间是UbuntuRaring的用户空间,但3.10内核完全不同。这可能是个问题吗?然后检查内核配置。它显然无法加载elf可执行文件。