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

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

如果其他人已经在做类似的事情,请去LKLM并检查档案。 如果没有的话,在那里宣布你打算做什么,并询问最简单的方法来完成它(内核模块等)。 创建你自己的git仓库来进行更改,并允许其他有兴趣的人从你的仓库中取出。 如果你的工作取得了成功,请维护人员将你的修改添加到主线上。

这当然不是不合理的做法,但只有你会知道是否值得花时间进行这些深刻的修改

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

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

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

许多本科OS课程需要添加一个系统调用或添加一些琐碎的领域/参数到一个构造。 大约20小时的东西琐碎,60东西容易,但有用的。

像任何真正开放的软件一样,分叉内核就像从版本控制库分支一样简单,并开始在自己的版本上工作。 就像任何一个真正开放的软件一样,如果你要分手,最好有一个固定的原因。 如果你最终打算合并回来,那么你真的不是分手​​,而是分支,然后要求合并。 只记得在这种情况下定期更换。

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

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

“深度修改”会给您带来一个两难的困境:您是否跟踪新的Linux内核并将其合并到您的更改中,还是坚持最初定位的内核,并修补补丁?

除非你的改变可以被纳入主线内核,那么你将面临上述情况。 你能继续这样的努力吗?值得吗?

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

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

IIRC维护修改后的Linux内核的正确方法是像安德鲁·莫顿(Andrew Morton)所说的那样的补丁

你所能完成的大部分工作都可以通过内核模块来完成。 如果你真的有很大的计划,那么你可以尝试和分叉。 嘿,它的开源,没有人会告诉你没有:)只要确保你经常备份。

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

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