我运行的是 Ubuntu 11.10,它附带了内核版本3.0.0-14
。我从分支下载并构建了一个内核3.1.0
。安装新内核后,我发现我的/boot/initrd.img-3.1.0
文件很大。它是 114MB,而我的/boot/initrd.img-3.0.0-14-generic
大约是 13MB。我想摆脱臃肿,这显然是不必要的。
在构建新内核时,我复制了我的/boot/config-3.0.0-14-generic
到.config
构建目录中,以保留原始内核的配置。我运行了make oldconfig
,为所有新选项选择了默认值,然后构建了内核。
查看每个 initrd cpio 存档中的文件大小,我发现 3.1.0 ramdisk 中的所有 .ko 模块的大小都大于 3.0.0-14。我假设我的配置文件中检查了不必要的调试标志,但我没有看到 3.0.0-14 配置文件中尚未启用的任何不同之处。
我/boot/config-3.0.0-14-generic
的在这里:
http://pastebin.com/UjH7nEqd
和我的/boot/config-3.0.1
在这里:
http://pastebin.com/HyT0M2k1
谁能解释所有不必要的膨胀从何而来?
答案1
make oldconfig
使用,make
和构建内核和模块时make install
,生成的模块将在文件中包含可用的调试信息。
使用INSTALL_MOD_STRIP
删除调试符号的选项:
make INSTALL_MOD_STRIP=1 modules_install
同样,构建 deb 包:
make INSTALL_MOD_STRIP=1 deb-pkg