SD卡上的Rootfs

时间:2014-04-23 23:35:46

标签: linux-kernel filesystems buildroot rootfs initrd

我有一个设备,我有一个3.10 linux内核启动到busybox shell(initramfs)

当我解压缩SD卡上的busybox文件系统映像并将root用户从root = / dev / ram修改为/ dev / mmcblck0p1时,它仍会启动到shell 所以busybox工作正常,但如果我尝试使用任何其他FS,内核会崩溃......

我尝试使用debootstrap(https://help.ubuntu.com/community/DebootstrapChroot)生成rootfs,并在SD卡上提取新的rootfs。我收到一条错误消息“无法执行/ sbin / init” 我确实检查了文件是否存在并检查了权限,这对我来说很好。

可能是什么问题?

W.R.T rootfs我特别新。我假设可以安装SD卡上的任何FS,但看起来并非如此。我猜不管/ sbin / init做什么都取决于设备?

我想做什么? ---> 我需要使用一些包和库(gcc python等)创建一个rootfs。一般的方法是什么?我甚至尝试过buildroot,但是我无法在目标上获得gcc。在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也具有相应的权限!

1 个答案:

答案 0 :(得分:0)

请考虑以下错误:“request_module:runaway loop modprobe binfmt-464c”

你很可能尝试使用64b二进制文件(/sbin/init,其余的)只使用32b内核。重新编译内核以支持64b或在SD卡上安装32b用户空间。

其他要检查的事项:

  1. 确认内核中确实启用了elf支持(通常是,但可以禁用它)。
  2. Google发现错误并看到人们遇到了哪些问题。