技术解析

关于 Linux Kernel 的编译
0
2021-07-02 23:39:06
idczone
1.自己编译的内核(也删除了一些不需要的东西),内核的模块足足有 1 个 GB 那么大,比系统自带的内核大多了。
2.Enable Loadable Module Support 的本质是什么?将所有模块都编译到内核文件中?或者只允许访问特定的模块(估计是在编译内核时产生的内核模块列表)?会不会对 KVM 、 VMware 、 VirtualBox 这类依赖内核模块的软件产生影响?会不会对安装驱动程序( eg : NVIDIA/AMD 驱动)有影响?
估计你就删除了几个吧,如果编译一个普通 PC 配置的内核, kernel 中的驱动要去掉至少 90%
Enable Loadable Module Support 就是字面的意思。对 vmware virtualbox 当然有影响,他们本身就需要打开这个内核开关。

我 13 年台式机,所有硬件都支持上, kernel 为 5MB ,/lib/modules 目录 15M
你是如何弄到 1GB 那么大的...

我是在 gentoo 下,默认内核 config 加上一些支持,内核 6.3M , modules 1.8M

Loadable Module Support 就是允许内核按需加载预编译好的.ko 文件,而不用把所有模块都编译进内核。
建议先从发行版拷一份编译内核的配置文件,再在此基础上编译自己的内核。

你可以把系统的 config 文件来覆盖掉源码的 config 文件,那样编译的 kernel 就是匹配呢系统的 img
第二个意思是支持可装载模块,内核运行时可动态加载和卸载内核模块

你把调试符号也编进去了吧

果然是因为把调试符号编译进去了,砍掉一些内核调试选项后,文件小多了。

此外, Linux 内核的 Live Patching 怎么用?打算在内核中编译 Grsec 和 l7filter 的 Patch ,但又不是完全编译,只是将这几个 Patch 编译为可用的内核模块而已,我的机器编译内核比较慢。

ER-X 路由器的内核 3M 大小

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服