request_module: runaway loop modprobe binfmt-464c问题解决

在裁剪内核时遇到了这个问题:request_module: runaway loop modprobe binfmt-464c.

在网上搜索到了下面这篇帖子:

Thanks for explaining this. I always thought my kernel supports ELF,
as I see this:

cat .config | grep ELF
CONFIG_ELF_CORE=y
CONFIG_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set

and in menuconfig

BINFMT_ELF [=y]
ELF_CORE [=y]
CORE_DUMP_DEFAULT_ELF_HEADERS [=n]
BINFMT_ELF_FDPIC [=n]
BINFMT_ELF [=y]
COMPAT_BINFMT_ELF [=n]

For everything expect the last "COMPAT_BINFMT_ELF" I have a
description in menuconfig.
Is this really the problem ?

Best regards

2011/1/10 Denys Vlasenko <vda.linux at googlemail.com>:
> On Monday 10 January 2011 08:08, Arno Steffen wrote:
>> In an embedded system it is recommended to set CONFIG_DESKTOP=n.
>> While busybox is working with CONFIG_DESKTOP=y, I get an error message
>> while booting
>> "request_module: runaway loop modprobe binfmt-464c"
>
> 464c is letters L and F. They come from this kernel code:
>
>                if (retval != -ENOEXEC || bprm->mm == NULL) {
>                        break;
> #ifdef CONFIG_MODULES
>                } else {
> #define printable(c) (((c)=='\t') || ((c)=='\n') || (0x20<=(c) && (c)<=0x7e))
>                        if (printable(bprm->buf[0]) &&
>                            printable(bprm->buf[1]) &&
>                            printable(bprm->buf[2]) &&
>                            printable(bprm->buf[3]))
>                                break; /* -ENOEXEC */
>                        request_module("binfmt-%04x", *(unsigned short *)(&bprm->buf[2]));
> #endif
>                }
>
> ELF executables start with 0x7f,'E','L','F' bytes - that's where L and F come from.
>
> You have ELF support compiled as a module.
>
> modprobe is started by kernel in order to load it.
> But modprobe is an ELF executable.
> Kernel needs to load ELF support module for it.
> modprobe is started by kernel in order to load it.
> But modprobe is an ELF executable.
> Kernel needs to load ELF support module for it.
> modprobe is started by kernel in order to load it.
> But modprobe is an ELF executable.
> Kernel needs to load ELF support module for it.
> modprobe is started by kernel in order to load it.
> But modprobe is an ELF executable.
> Kernel needs to load ELF support module for it.
> modprobe is started by kernel in order to load it.
> But modprobe is an ELF executable.
> Kernel needs to load ELF support module for it.
> At this point we trigger this:
>
>        max_modprobes = min(max_threads/2, MAX_KMOD_CONCURRENT);
>        atomic_inc(&kmod_concurrent);
>        if (atomic_read(&kmod_concurrent) > max_modprobes) {
>                /* We may be blaming an innocent here, but unlikely */
>                if (kmod_loop_msg++ < 5)
>                        printk(KERN_ERR
>                               "request_module: runaway loop modprobe %s\n",
>                               module_name);
>                atomic_dec(&kmod_concurrent);
>                return -ENOMEM;
>        }
>
>
>> I searched for solution in net, but found only something regarding 32
>> and 64bit OS.
>> Si I have no clue, what's the problem here.
>>
>> Used current busybox 1.18.1, compiled for arm.
>
> Recompile your kernel so that ELF support is built in.
>
> --
> vda
>
通过帖子中的这句:
464c is letters L and F.
然后,结合错误提示大概可以知道是可能是内核对二进制elf格式文件不支持,
通过这个提示想起去掉的内核选项:
Userspace binary formats  --->
Kernel support for ELF binaries
重新选上该选项,编译, 下载, 运行,
问题得以解决!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值