为什么编译Linux内核需要大量存储空间?

问题描述 投票:0回答:1

我正在按照本教程here中的描述在自定义Linux内核上实现系统调用。我的问题是:

  1. 为什么在实施新的系统调用时为什么必须编译新的自定义内核?首次安装时是否可以将系统调用添加到原始内核?
  2. 为什么Linux内核的编译过程会占用大量空间? (在我的情况下为20GB)
linux linux-kernel operating-system system-calls
1个回答
2
投票

为什么在实现新的系统调用时为什么必须编译新的自定义内核?

因为不可能将新的系统调用热修补到正在运行的内核中。以同样的方式,如果不修改源代码就无法向二进制软件中添加新功能。正确执行此操作的唯一方法是获取内核源代码,对其进行修改,对其进行配置,然后将其编译为全新的内核。

首次安装时是否可以向原始内核添加系统调用?

没有您的“原始内核”包装在您的特定发行版会自动为您安装的软件包中。

为什么编译Linux内核的过程会占用很多空间?

因为您很可能会编译

很多

无用的驱动程序。 Linux内核为各种设备提供了数千种不同的驱动程序。如果您进行完整的编译,则会编译很多不需要的东西。您可以做的是:
    复制当前内核中的配置,以便在编译时保持相同。有关更多信息,请参见this post
  • 或用make localmodconfig配置内核,它仅允许编译系统中当前加载的模块。
  • © www.soinside.com 2019 - 2024. All rights reserved.