我有一个设备,上面有一个3.10 linux内核,正在引导到busybox shell(initramfs)
当我提取SD卡上的busybox文件系统映像,并将root从root=/dev/ram修改为/dev/mmcblck0p1时,它仍然启动到shell所以busybox工作得很好,但如果我尝试使用任何其他FS,内核就会崩溃。。。
当我尝试使用debotstrap生成rootfs时(https://help.ubuntu.com/community/DebootstrapChroot)并且在SD卡上提取新的根。我收到一个错误,上面写着"执行/sbin/init失败"我确实检查了文件是否存在,还检查了权限,它对我来说很好。
可能是什么问题?
W.R.T根我特别新。我假设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具有适当的权限!
考虑这个错误:"request_module:runaway loop modprobe binfmt-464c"
很可能您正在尝试使用64b二进制文件(/sbin/init
和其他)和仅32b内核。重新编译内核以支持64b,或者在sd卡上安装32b用户空间。
其他需要检查的事项:
- 确认内核中确实启用了elf支持(通常是这样,但也可以禁用它)
- 用谷歌搜索这个错误,看看人们对此有什么问题