尝试修改Linux内核是否合理?

尝试修改Linux内核是否合理?,linux,unix,Linux,Unix,所以我想尝试一个新概念,它涉及到对Linux内核的深度修改,我想知道它是否值得尝试,或者它是否太复杂?是的,它很复杂,但是如果你有一个新概念,并且你认为在内核之上构建它是一个好主意,那么它可能很值得花时间 如果你仍然被Linux内核所拖累,那么总是有内核…你能完成的大部分工作都应该可以通过内核模块来完成。如果你真的有什么大计划,那么你可以试着去做。嘿,它是开源的,没有人会告诉你不:)只要确保你经常备份。在没有更多信息的情况下,听起来你建议的更好描述是修改内核,而不是分叉 你的雄心壮志有哪些方面需

所以我想尝试一个新概念,它涉及到对Linux内核的深度修改,我想知道它是否值得尝试,或者它是否太复杂?

是的,它很复杂,但是如果你有一个新概念,并且你认为在内核之上构建它是一个好主意,那么它可能很值得花时间


如果你仍然被Linux内核所拖累,那么总是有内核…

你能完成的大部分工作都应该可以通过内核模块来完成。如果你真的有什么大计划,那么你可以试着去做。嘿,它是开源的,没有人会告诉你不:)只要确保你经常备份。

在没有更多信息的情况下,听起来你建议的更好描述是修改内核,而不是分叉


你的雄心壮志有哪些方面需要分叉?分叉是一种本质上主要由政治术语定义的东西,即重命名项目、设置不同的战略方向等等。

与任何真正开放的软件一样,分叉内核就像从版本控制库分支并开始开发自己的版本一样简单。同样像任何一个真正开放的软件一样,如果你要用叉子叉它,最好有一个坚实的理由来叉它。如果你最终打算合并回去,那么你实际上不是在分叉,而是在分支,然后要求合并。记住在这种情况下要定期更换


不过,主要的一点是,这将是困难的。。。Linux内核是一个非常庞大而复杂的软件。除非删除所有无法获得更新GPLv3权限的GPLv2代码,否则您将无法使用GPLv2,因此许可必须保持不变。但是如果你想对Linux内核进行实质性的修改,因为你认为你可以做得更好,那么绝对没有人会阻止你。添加新的驱动程序,修改图形的工作方式,删除旧的API,做任何你想做的事情。一旦你有事情要证明,人们就会开始注意,尤其是如果你做得比现在更好的话。你可能最终会得到一个好结果:你的工作最终会重新融入主线。

分叉开源软件应该被视为最后的手段。您应该首先尝试做的是创建内核的一个分支,并将其提交合并。这将使每个人的生活都变得更加轻松。

IIRC维护修改后的Linux内核的正确方法是像Andrew Morton那样的补丁集。

我想继续讨论关于难度的问题。如果您只想添加一个系统调用来提供有限的附加功能,比如调整文件描述符,那么这是任何受过培训的程序员都可以做到的。如果您想处理实时性、性能和进程处理,那么请注意,由于您深入内核,这些操作可能非常困难

许多本科操作系统课程要求添加系统调用或向构造中添加一些琐碎的字段/参数。对于一些琐碎的东西,大约20小时,对于一些简单但有用的东西,60小时。

“深度修改”将给你带来一个两难境地:你是跟踪新的Linux内核并合并到你的更改中,还是坚持使用你最初针对的内核并进行关键补丁修复

除非您的更改可以合并到主线内核中,否则您将面临上述问题。你能坚持这样的努力吗?它值得吗?

如果其他人已经在做类似的事情,那么去查阅档案。如果没有,请在那里宣布您计划做什么,并询问最简单的实现方法(内核模块等)。创建您自己的git存储库来进行更改,并允许其他感兴趣的人从您的回购中提取。如果您的工作结果是成功的,请让维护人员提取您的更改并将其添加到主线


当然不是不合理的,但是只有你知道你是否值得花时间去做那些深刻的修改。

你应该考虑你的想法是否真的需要在内核空间中完成,或者它是否可以有效地在用户空间中完成。这本身就是一个合理的问题(当然,还有想法的细节)

我经常看到人们将与内核相关的想法发布到LKML中,这些想法实际上可以完全在用户空间中完成,有时更容易、更有效