“无法执行/ init(错误-7)”是什么意思?

时间:2019-11-14 19:08:36

标签: linux-kernel

Linux内核版本:4.18.0-17

我正在将一些4.15内核定制移植到4.18,但是我的4.18内核无法启动。启动并运行一个可用的4.18内核(即合并4.15修改之前的起点)。

错误消息是:

执行/ init失败(错误-7) 启动init:/ bin / sh存在,但无法执行(错误-7)

“ errno 7”是“ E2BIG 7参数列表太长”

在启动初始化过程的内核上下文中这是什么意思?

1 个答案:

答案 0 :(得分:0)

如果内核命令行和根文件系统与您提供的用于引导的内核版本完全相同,则最可能的原因是get_user_pages_remote()在此处失败:https://elixir.bootlin.com/linux/v4.18/source/fs/exec.c#L194 这意味着您所做的更改之一破坏了内存管理。

要到达此处,只需跟踪try_to_run_init_process(),该程序将运行init到从其调用的所有可以返回E2BIG的函数。这是唯一不依赖初始化参数列表或环境大小的呼叫站点-https://elixir.bootlin.com/linux/v4.18/source/init/main.c#L1001

话虽如此,我首先要确保内核命令行和根文件系统相同。