【发布时间】:2020-08-31 05:24:11
【问题描述】:
我正在尝试在自定义 Linux 内核上实现系统调用,如本教程 here 中所述。
我的问题是:
- 为什么在实现新的系统调用时必须编译新的自定义内核?首次安装时是否可以向原始内核添加系统调用?
- 为什么编译Linux内核的过程会占用大量空间? (在我的情况下最多 20GB)
【问题讨论】:
标签: linux linux-kernel operating-system system-calls
我正在尝试在自定义 Linux 内核上实现系统调用,如本教程 here 中所述。
我的问题是:
【问题讨论】:
标签: linux linux-kernel operating-system system-calls
为什么我们在实现新的系统调用时必须编译一个新的自定义内核?
因为不可能将新的系统调用热补丁到正在运行的内核中。同样,如果不修改其源代码,就不可能向二进制软件添加新功能。正确执行此操作的唯一方法是获取内核源代码,对其进行修改、配置,然后将其编译为全新的内核。
是否可以在首次安装时向原始内核添加系统调用?
没有。您的“原始内核”已经编译在您的特定发行版自动为您安装的包中。
为什么编译Linux内核的过程会占用大量空间?
因为您很可能会编译很多无用的驱动程序。 Linux 内核为各种设备提供了数千种不同的驱动程序。如果你做一个完整的编译,你会编译很多不需要的东西。你可以做的是:
make localmodconfig 配置内核,它只允许编译当前加载到系统中的模块。【讨论】: