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

时间:2009-05-22 12:06:45

标签: linux unix

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

10 个答案:

答案 0 :(得分:8)

在没有进一步信息的情况下,听起来像你所建议的更好地描述为修改内核,而不是分叉。

你的野心的哪个方面需要分叉?分叉是一个本质主要用政治术语定义的东西 - 即重命名项目,设定不同的战略方向等等。

答案 1 :(得分:5)

我想坚持关于困难的问题。如果您只是想添加一个系统调用以提供有限的附加功能,如调整文件描述符,那么这是任何训练有素的程序员都可以做的事情。如果你想玩实时,性能,流程处理,那么要注意这些可能非常困难,因为你进入内核有多深。

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

答案 2 :(得分:4)

与任何真正开放的软件一样,分支内核就像从版本控制存储库分支一样简单,并开始在您自己的版本上工作。也像任何真正开放的软件一样,如果你要分叉它,最好有一个坚实的原因来分叉。如果你最终计划合并,那么你真的不会分叉,而是你分支然后要求它合并。请记住在那个例子中定期更换。

但重点是,它很难...... Linux内核是一个非常庞大而复杂的软件。除非您删除了无法获得更新到GPLv3的许可的所有GPLv2代码,否则您将无法使用GPLv2,因此许可必须保持不变。但是如果你想对Linux内核进行大量的修改,因为你认为你可以做得更好,那么绝对没有人阻止你。添加新的驱动程序,修改图形的工作方式,删除旧的API,做任何你想做的事情。一旦你需要证明一些事情,人们就会开始关注,特别是如果你做得比目前做的更好。你可能会得到最终的好结果:你的工作最终会合并回主线。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

“深度修改”会让您陷入两难境地:您是否跟踪了新的Linux内核并合并了您的更改,或者您是否坚持使用您最初定位的内核并重新修补关键修补程序?

除非您的更改可以合并到主线内核中,否则您将面临上述情况。你能维持这种努力,值得吗?

答案 5 :(得分:2)

转到LKLM并检查档案是否有其他人正在处理类似的事情。如果没有,请宣布您打算做什么,并询问最简单的方法(内核模块等)。创建自己的git存储库以进行更改,并允许其他有兴趣的人从您的仓库中提取。如果您的工作成功,请让维护人员提取您的更改并将其添加到主线。

这样做当然不是没有道理,但只有你知道是否值得花时间进行深度修改

答案 6 :(得分:1)

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

如果你仍然被Linux内核推迟,那么总会有Minix内核......

答案 7 :(得分:1)

IIRC维护修改后的Linux内核的正确方法是补丁集,如Andrew Morton的mm

答案 8 :(得分:0)

您可以完成的大部分内容都应该适用于内核模块。如果你真的有大计划,那么你可以尝试分叉。嘿,它的开源,没有人会告诉你没有:)只要确保你经常备份。

答案 9 :(得分:0)

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

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