OpenWRT make 失败,因为内核以交互方式请求配置选项
OpenWRT make is failing because kernel is asking for config options interactively
我在 chaos calmer
存储库中,我有一个需要使用的自定义内核配置。
内核配置文件位于
/opt/OpenWRT/target/linux/x86/config-3.18
我试过 运行 make kernel_oldconfig
,但这并没有解决问题。
我试过 运行 make kernel_menuconfig
也未能解决问题。
运行 时的错误消息:
$ make
make[1] world
make[2] target/compile
make[3] -C target/linux compile
make -r world: build failed. Please re-run make with -j1 V=s to see what's going on
/opt/OpenWRT/include/toplevel.mk:181: recipe for target 'world' failed
make: *** [world] Error 1
解决此问题的唯一方法是使用 make V=s -j1
并完成菜单交互。我讨厌不得不依赖一个处理器来编译整个 buildroot。
这仅在我使用自定义内核配置时发生,默认内核在 make
下运行良好。
我复制(覆盖)了 target/linux/x86/
目录中的 config-3.18
文件。
内核用于特定的 32 位 x86 架构(非通用)。
这是详细输出:
net/sched/Kconfig:43: warning: menuconfig statement without prompt
*
* Restart config...
*
*
* Kernel hacking
*
Magic SysRq key (MAGIC_SYSRQ) [Y/n/?] y
Enable magic SysRq key functions by default (MAGIC_SYSRQ_DEFAULT_ENABLE) [0x1] 0x1
Kernel debugging (DEBUG_KERNEL) [Y/?] y
Debug shared IRQ handlers (DEBUG_SHIRQ) [N/y/?] n
Panic on Oops (PANIC_ON_OOPS) [N/y/?] n
panic timeout (PANIC_TIMEOUT) [0] 0
Collect scheduler debugging info (SCHED_DEBUG) [N/y/?] n
Collect scheduler statistics (SCHEDSTATS) [N/y/?] n
Detect stack corruption on calls to schedule() (SCHED_STACK_END_CHECK) [N/y/?] n
Collect kernel timers statistics (TIMER_STATS) [N/y/?] n
Stack backtrace support (STACKTRACE) [Y/?] y
kobject debugging (DEBUG_KOBJECT) [N/y/?] n
Verbose BUG() reporting (adds 70K) (DEBUG_BUGVERBOSE) [N/y/?] n
Debug linked list manipulation (DEBUG_LIST) [N/y/?] n
Debug priority linked list manipulation (DEBUG_PI_LIST) [N/y/?] n
Debug SG table operations (DEBUG_SG) [N/y/?] n
Debug notifier call chains (DEBUG_NOTIFIERS) [N/y/?] n
Debug credential management (DEBUG_CREDENTIALS) [N/y/?] n
Force extended block device numbers and spread them (DEBUG_BLOCK_EXT_DEVT) [N/y/?] n
Notifier error injection (NOTIFIER_ERROR_INJECTION) [N/m/y/?] n
Fault-injection framework (FAULT_INJECTION) [N/y/?] n
Latency measuring infrastructure (LATENCYTOP) [N/y/?] n
Strict user copy size checks (DEBUG_STRICT_USER_COPY_CHECKS) [N/y/?] n
Remote debugging over FireWire early on boot (PROVIDE_OHCI1394_DMA_INIT) [N/y/?] n
Enable debugging of DMA-API usage (DMA_API_DEBUG) [N/y/?] n
Test module loading with 'hello world' module (TEST_LKM) [N/m/?] n
Test user/kernel boundary protections (TEST_USER_COPY) [N/m/?] n
Test BPF filter functionality (TEST_BPF) [N/m/?] n
Test firmware loading via userspace interface (TEST_FIRMWARE) [N/m/y/?] n
udelay test driver (TEST_UDELAY) [N/m/y/?] n
Filter access to /dev/mem (STRICT_DEVMEM) [Y/n/?] y
Enable verbose x86 bootup info messages (X86_VERBOSE_BOOTUP) [Y/n/?] y
Early printk (EARLY_PRINTK) [Y/n/?] y
Early printk via EHCI debug port (EARLY_PRINTK_DBGP) [N/y/?] n
Export kernel pagetable layout to userspace via debugfs (X86_PTDUMP) [N/y/?] n
Write protect kernel read-only data structures (DEBUG_RODATA) [N/y/?] n
Set loadable kernel module data as NX and text as RO (DEBUG_SET_MODULE_RONX) [N/y/?] n
Testcase for the NX non-executable stack feature (DEBUG_NX_TEST) [N/m/?] n
Enable doublefault exception handler (DOUBLEFAULT) [Y/n/?] y
Set upper limit of TLB entries to flush one-by-one (DEBUG_TLBFLUSH) [N/y/?] n
Enable IOMMU stress-test mode (IOMMU_STRESS) [N/y/?] n
x86 instruction decoder selftest (X86_DECODER_SELFTEST) [N/y/?] (NEW)
有什么想法吗?
编辑:写这个问题时解决了....
我以为我之前已经将 CONFIG_...
行写入内核,但显然它们没有被保存,它们被覆盖了,或者其他一些问题。
我通过将此插入 config-3.18
文件的最后一行解决了错误:
CONFIG_X86_DECODER_SELFTEST=n
这可能没什么区别,但我也 运行 make kernel_menuconfig
,加载并保存了配置文件,以防万一 运行 menuconfig 做了任何自动操作。
您还需要关心一个内核配置文件:
/opt/OpenWRT/target/linux/generic/config-3.18
这适用于所有平台。
我在 chaos calmer
存储库中,我有一个需要使用的自定义内核配置。
内核配置文件位于
/opt/OpenWRT/target/linux/x86/config-3.18
我试过 运行 make kernel_oldconfig
,但这并没有解决问题。
我试过 运行 make kernel_menuconfig
也未能解决问题。
运行 时的错误消息:
$ make
make[1] world
make[2] target/compile
make[3] -C target/linux compile
make -r world: build failed. Please re-run make with -j1 V=s to see what's going on
/opt/OpenWRT/include/toplevel.mk:181: recipe for target 'world' failed
make: *** [world] Error 1
解决此问题的唯一方法是使用 make V=s -j1
并完成菜单交互。我讨厌不得不依赖一个处理器来编译整个 buildroot。
这仅在我使用自定义内核配置时发生,默认内核在 make
下运行良好。
我复制(覆盖)了 target/linux/x86/
目录中的 config-3.18
文件。
内核用于特定的 32 位 x86 架构(非通用)。
这是详细输出:
net/sched/Kconfig:43: warning: menuconfig statement without prompt
*
* Restart config...
*
*
* Kernel hacking
*
Magic SysRq key (MAGIC_SYSRQ) [Y/n/?] y
Enable magic SysRq key functions by default (MAGIC_SYSRQ_DEFAULT_ENABLE) [0x1] 0x1
Kernel debugging (DEBUG_KERNEL) [Y/?] y
Debug shared IRQ handlers (DEBUG_SHIRQ) [N/y/?] n
Panic on Oops (PANIC_ON_OOPS) [N/y/?] n
panic timeout (PANIC_TIMEOUT) [0] 0
Collect scheduler debugging info (SCHED_DEBUG) [N/y/?] n
Collect scheduler statistics (SCHEDSTATS) [N/y/?] n
Detect stack corruption on calls to schedule() (SCHED_STACK_END_CHECK) [N/y/?] n
Collect kernel timers statistics (TIMER_STATS) [N/y/?] n
Stack backtrace support (STACKTRACE) [Y/?] y
kobject debugging (DEBUG_KOBJECT) [N/y/?] n
Verbose BUG() reporting (adds 70K) (DEBUG_BUGVERBOSE) [N/y/?] n
Debug linked list manipulation (DEBUG_LIST) [N/y/?] n
Debug priority linked list manipulation (DEBUG_PI_LIST) [N/y/?] n
Debug SG table operations (DEBUG_SG) [N/y/?] n
Debug notifier call chains (DEBUG_NOTIFIERS) [N/y/?] n
Debug credential management (DEBUG_CREDENTIALS) [N/y/?] n
Force extended block device numbers and spread them (DEBUG_BLOCK_EXT_DEVT) [N/y/?] n
Notifier error injection (NOTIFIER_ERROR_INJECTION) [N/m/y/?] n
Fault-injection framework (FAULT_INJECTION) [N/y/?] n
Latency measuring infrastructure (LATENCYTOP) [N/y/?] n
Strict user copy size checks (DEBUG_STRICT_USER_COPY_CHECKS) [N/y/?] n
Remote debugging over FireWire early on boot (PROVIDE_OHCI1394_DMA_INIT) [N/y/?] n
Enable debugging of DMA-API usage (DMA_API_DEBUG) [N/y/?] n
Test module loading with 'hello world' module (TEST_LKM) [N/m/?] n
Test user/kernel boundary protections (TEST_USER_COPY) [N/m/?] n
Test BPF filter functionality (TEST_BPF) [N/m/?] n
Test firmware loading via userspace interface (TEST_FIRMWARE) [N/m/y/?] n
udelay test driver (TEST_UDELAY) [N/m/y/?] n
Filter access to /dev/mem (STRICT_DEVMEM) [Y/n/?] y
Enable verbose x86 bootup info messages (X86_VERBOSE_BOOTUP) [Y/n/?] y
Early printk (EARLY_PRINTK) [Y/n/?] y
Early printk via EHCI debug port (EARLY_PRINTK_DBGP) [N/y/?] n
Export kernel pagetable layout to userspace via debugfs (X86_PTDUMP) [N/y/?] n
Write protect kernel read-only data structures (DEBUG_RODATA) [N/y/?] n
Set loadable kernel module data as NX and text as RO (DEBUG_SET_MODULE_RONX) [N/y/?] n
Testcase for the NX non-executable stack feature (DEBUG_NX_TEST) [N/m/?] n
Enable doublefault exception handler (DOUBLEFAULT) [Y/n/?] y
Set upper limit of TLB entries to flush one-by-one (DEBUG_TLBFLUSH) [N/y/?] n
Enable IOMMU stress-test mode (IOMMU_STRESS) [N/y/?] n
x86 instruction decoder selftest (X86_DECODER_SELFTEST) [N/y/?] (NEW)
有什么想法吗?
编辑:写这个问题时解决了....
我以为我之前已经将 CONFIG_...
行写入内核,但显然它们没有被保存,它们被覆盖了,或者其他一些问题。
我通过将此插入 config-3.18
文件的最后一行解决了错误:
CONFIG_X86_DECODER_SELFTEST=n
这可能没什么区别,但我也 运行 make kernel_menuconfig
,加载并保存了配置文件,以防万一 运行 menuconfig 做了任何自动操作。
您还需要关心一个内核配置文件:
/opt/OpenWRT/target/linux/generic/config-3.18
这适用于所有平台。