c - 用于内核开发的 LInux 与 BSD

标签 c linux linux-kernel

<分区>

我最近更新了我生疏的 C 技能,并且我一直试图找到一个项目来尝试它们,所以我选择了内核开发(毕竟,C 是一种系统语言)。所以,我想知道从 Linux 还是其中一个 BSD 开始哪个更容易? Linux 有更大的用户群(所以我可能会得到更多的支持),但它也有一个庞大的代码库(我上次检查时有 900 万行),BSD 是否更容易入手,因为它们将用户群和内核合二为一大型代码库?另外,是否最好开始阅读内核源代码?而且,除了 SMP 和新驱动程序之外,他们是否正在尝试实现新功能?

最佳答案

不幸的是,我只能为自己谈论 Linux 内核黑客攻击。目前我正在实习,我正在研究内核,而我以前从未这样做过。但是由于多种原因,我能够在很短的时间内学到很多东西(我想再次指出,我不知道 BSD 社区涵盖了多少内容):

  • 教程。 Linux 社区很大,因此您会发现很多关于内核黑客攻击的初学者信息。我觉得开始的标准是 this guide .如果您阅读它,您会发现,即使是内核黑客攻击也是从 hello world 开始的;)
  • Linux Cross Reference .一个很棒的工具。它涵盖了完整的 Vanilla 源代码,并向您展示了每个函数/结构/定义/任何定义和实现的位置,因此无需再搜索一些东西
  • Linux 的模块化构建(我假设 BSD 也是如此)显然,您将无法浏览 9 行代码。但是您可以从一个小的可加载内核模块开始,然后再深入。可能先看看其他模块,hack它们,最后再深入挖掘直接编译出来的东西
  • 庞大的社区规模。不仅是内核邮件列表,还有大量像这样的论坛或问答网站,如果您不知道该怎么做,您一定可以在其中获得帮助;)

只是我的 2 美分 ;)

关于c - 用于内核开发的 LInux 与 BSD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523744/

相关文章:

c - 如何使用 linux 内核中的 lockdep 功能进行死锁检测

c - 本地时间返回空

c - 在没有 <string.h> 的情况下将一个字符串设置为等于另一个字符串

c - C中的按位异或运算

linux - 手动安装gcc

linux-kernel - 内核虚拟内存页面是否可交换

c - 修改用户输入文件路径以扫描C中同一目录中的文件

linux - 卡在 LFS @ 5.7.1 "Glibc Installation"

linux - 我用 0 初始化数组时做错了什么?

linux-kernel - 什么是 base_reachable_time(ARP 相关)proc 条目