我正在按照本教程here中的描述在自定义Linux内核上实现系统调用。我的问题是:
为什么在实现新的系统调用时为什么必须编译新的自定义内核?
因为不可能将新的系统调用热修补到正在运行的内核中。以同样的方式,如果不修改源代码就无法向二进制软件中添加新功能。正确执行此操作的唯一方法是获取内核源代码,对其进行修改,对其进行配置,然后将其编译为全新的内核。
首次安装时是否可以向原始内核添加系统调用?
没有您的“原始内核”包装在您的特定发行版会自动为您安装的软件包中。为什么编译Linux内核的过程会占用很多空间?
因为您很可能会编译
很多
无用的驱动程序。 Linux内核为各种设备提供了数千种不同的驱动程序。如果您进行完整的编译,则会编译很多不需要的东西。您可以做的是:make localmodconfig
配置内核,它仅允许编译系统中当前加载的模块。