我配置了一个 KVM 虚拟机 (VM),它有 8 个处理器核心和 256 MB RAM,没有交换空间。一个基于文本的极简 Ubuntu Saucy 13.10 amd64 已经完成。安装了构建/重新编译 3.11.0 内核所需的基本软件包。
- 构建内核的预期架构是 ARCH=x86_64。
- 运行的内核是 amd64 3.11.0-18-generic。
- Gcc 是版本 4.8.1(Ubuntu/Linaro 4.8.1-10ubuntu9)。
执行命令时:
fakeroot make-kpkg -j 8 --initrd --append-to-version=-custom kernel_image kernel_headers"
最后结束于:
make: *** [debian/stamp/build/kernel] Error 2
控制台输出的第一个错误是:
CC drivers/gpio/gpio-stmpe.o
{standard input}: Assembler messages:
{standard input}:2242: Warning: end of file not at end of a line; newline inserted
{standard input}:4413: Error: unknown pseudo-op: `.l'
{standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
gcc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
make[3]: *** [net/ipv6/udp.o] Error 4
make[2]: *** [net/ipv6] Error 2
make[2]: *** Waiting for unfinished jobs....
我的第一个想法是随机存取存储器(RAM)的数量被配置得太低(256MB)。
更新 #1
查看了控制台之后,我确信构建机器的 RAM 太少:
Out of memory: Kill process 8128 (cc1) score 117 or sacrifice child
Killed process 8128 (cc1) total-vm:102432kB, anon-rss:23184kB, file-rss:0kB
更新 #2
增加到 384MB、512 甚至 640MB 的 RAM 都不足以停止“内存不足”错误消息。
是什么最低限度数量需要 RAM到构建内核?
答案1
768MBRAM 足以编译 ARCH=x86_64 的 3.11.0 内核。
请注意 640MB 是不够的。
在这种情况下,.config 文件被修改为 localmodconfig,后来一些选项被禁用,而其他选项被启用。生成的 .config 文件大小为 86458 字节。