OpenWRT make is failing because kernel is asking for config options interactively

4.9k views Asked by At

I am on the chaos calmer repo and I have a custom kernel configuration that I need used.

The kernel configuration file is located at

/opt/OpenWRT/target/linux/x86/config-3.18

I've tried running make kernel_oldconfig, but that does not solve the issue.

I've tried running make kernel_menuconfig and that fails to rectify the problem too.

Error messages when running make:

$ 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

The only way to get past this issue is to use make V=s -j1 and go through the menu interactions. I hate to have to rely on one processor to compile an entire buildroot.

This only occurs when I use my custom kernel config, the default kernel runs fine with make.

I copied (overwrote) the config-3.18 file in the target/linux/x86/ directory.

Kernel is for a specific 32-bit x86 architecture (not generic).

This is verbose output:

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) 

Any ideas?

EDIT: Solved when writing this question....

2

There are 2 answers

0
NuclearPeon On BEST ANSWER

I thought I had written the CONFIG_... lines to the kernel before, but apparently they weren't saved, they got overwritten, or some other issue.

I solved the error by inserting this into the last line of the config-3.18 file:

CONFIG_X86_DECODER_SELFTEST=n

It may not make a difference, but I also ran make kernel_menuconfig, loaded and then saved the configuration file, just in case running menuconfig did any automagic.

0
Nam Pham On

There is one more kernel configuration file you need to care about:

/opt/OpenWRT/target/linux/generic/config-3.18

This for all platforms.