为什么编译 Linux 内核需要大量存储空间 space?
Why does compiling the Linux kernel require a lot of storage space?
我正在尝试按照本教程 here 中所述在自定义 Linux 内核上实现系统调用。
我的问题是:
- 为什么我们在实现新的系统调用时必须编译新的自定义内核?是否可以在首次安装时向原始内核添加系统调用?
- 为什么编译Linux内核的进程占用了很多space? (在我的情况下最多 20gb)
Why do we have to compile a new custom kernel when implementing a new system call?
因为无法将新的系统调用热修补到 运行 内核中。同样,如果不修改其源代码,就不可能向二进制软件添加新功能。唯一正确的方法是获取内核源代码,对其进行修改、配置,然后将其编译为一个全新的内核。
Is it possible to add a system call to the original kernel when first installed?
没有。您的 "original kernel" 已经编译 在您的特定发行版自动为您安装的软件包中。
Why does the process of compiling Linux kernel take up a lot of space?
因为您很可能正在编译很多 无用的驱动程序。 Linux 内核为各种设备提供了数千种不同的驱动程序。如果你做一个完整的编译,你会编译很多不需要的东西。您可以做的是:
- 从你当前的内核中复制配置,以便编译时相同。有关详细信息,请参阅 this post。
- 或者用
make localmodconfig
配置内核,这样只允许编译当前加载到您系统中的模块。
我正在尝试按照本教程 here 中所述在自定义 Linux 内核上实现系统调用。
我的问题是:
- 为什么我们在实现新的系统调用时必须编译新的自定义内核?是否可以在首次安装时向原始内核添加系统调用?
- 为什么编译Linux内核的进程占用了很多space? (在我的情况下最多 20gb)
Why do we have to compile a new custom kernel when implementing a new system call?
因为无法将新的系统调用热修补到 运行 内核中。同样,如果不修改其源代码,就不可能向二进制软件添加新功能。唯一正确的方法是获取内核源代码,对其进行修改、配置,然后将其编译为一个全新的内核。
Is it possible to add a system call to the original kernel when first installed?
没有。您的 "original kernel" 已经编译 在您的特定发行版自动为您安装的软件包中。
Why does the process of compiling Linux kernel take up a lot of space?
因为您很可能正在编译很多 无用的驱动程序。 Linux 内核为各种设备提供了数千种不同的驱动程序。如果你做一个完整的编译,你会编译很多不需要的东西。您可以做的是:
- 从你当前的内核中复制配置,以便编译时相同。有关详细信息,请参阅 this post。
- 或者用
make localmodconfig
配置内核,这样只允许编译当前加载到您系统中的模块。