这个单体代码库的内容是什么?
我了解处理器架构支持、安全性和虚拟化,但我无法想象超过 600,000 行左右。
内核代码库中包含驱动程序的历史和当前原因是什么?
这 15 多万行是否包括每个硬件的每个驱动程序?如果是这样,那就引出了一个问题,为什么驱动程序嵌入在内核中,而不是从硬件 ID 自动检测和安装的单独软件包?
对于存储受限或内存受限的设备,代码库的大小是否是一个问题?
如果所有这些都被嵌入,它似乎会使空间受限的 ARM 设备的内核大小膨胀。预处理器是否剔除了很多行?说我疯了,但我无法想象一台机器需要那么多逻辑来运行我所理解的内核角色。
是否有证据表明,由于其看似不断增长的性质,规模将在 50 多年后成为问题?
包括驱动程序意味着它会随着硬件的制造而增长。
编辑:对于那些认为这是内核本质的人,经过一些研究,我意识到并非总是如此。内核不需要这么大,因为 Carnegie Mellon 的微内核Mach 被列为“通常不到 10,000 行代码”的例子
当我有一个以 root 身份运行的进程时,我得到权限错误,产生一个子进程作为 www-data,然后访问一个属于 root 的目录,以及一个属于 www-data 的子文件夹,它有一个指向目录的符号链接它由 www-data 组中的用户拥有,然后具有....你得到了这个想法。我怎么知道它在这个难以置信的复杂链中哪里失败了?我得到的只是权限被拒绝
如果没有陷入这种特定情况的细节,如何开始在 unix 上调试这样的问题?
我只想说
debug_permissions.sh www-data /my/long/symlink/chain```
and I want it to go through and tell me where the terminal point is (where www-data fails to have permissions)
I know there is a tool
``` namei -l /path/```
but that isn't very helpful because it doesn't let me run as another user (or at least I don't know how)
If I run
```sudo su www-data```
I get …Run Code Online (Sandbox Code Playgroud)