/usr/src 是自定义内核的有效位置吗?

/usr/src 是自定义内核的有效位置吗?

在学习如何构建和安装自定义内核(用于内核黑客)时,我遇到了一个矛盾的说法。

在这个堆栈交换答案,作者指出:

在下面的说明中,源代码树内的路径采用 [src]/whatever 的形式,其中 [src] 是安装源代码的目录,例如 /usr/src/linux-3.13.3。您可能想要执行此操作 su root,因为源树应该在写入权限方面保持安全(它应该由 root 拥有)。

他在参考书中提到:Linux 内核简述,格雷格·克罗哈特曼 说:

在执行本书中的步骤时,要记住此警告是最重要的事情。本书中的所有内容——下载内核源代码、解压缩、配置内核和构建它——都应该以机器上的普通用户身份完成。仅应以超级用户 (root) 身份执行安装新内核所需的两到三个命令。

内核源代码也不应该放置在 /usr/src/linux/ 目录中,因为这是构建系统库所针对的内核的位置,而不是新的自定义内核的位置。根本不要在 /usr/src/ 目录树下进行任何内核开发,而只能在本地用户目录中进行,这样系统不会发生任何不良情况。

这两个来源都相当古老,现在正确的方法是什么?

答案1

/usr任何“自定义”的地方都是错误的:

男子:

   /usr/src
          Source  files  for different parts of the system, included with some packages for reference purposes.  Don't work
          here with your own projects, as files below /usr should be read-only except when installing software (optional).

   /usr/src/linux
          This was the traditional place for the kernel source.  Some distributions put here the  source  for  the  default
          kernel they ship.  You should probably use another directory when building your own kernel.

man 文件层次结构:

   /usr/
       Vendor-supplied operating system resources. Usually read-only, but this is not required. Possibly shared between
       multiple hosts. This directory should not be modified by the administrator, except when installing or removing
       vendor-supplied packages.

/usr/include之前依赖的是/usr/src/linux

   /usr/include/linux
          This  contains  information which may change from system release to system release and used to be a symbolic link
          to /usr/src/linux/include/linux to get at operating-system-specific information.

所以内核源码只属于/usr/src引用,不属于修改。

显示Documentation/admin-guide/README.rst了该O=选项,以便您可以将构建转变为只读事件/usr/src/linux-VERSION

   cd /usr/src/linux-4.X
   make O=/home/name/build/kernel menuconfig
   make O=/home/name/build/kernel

同样,.config 文件也会在 /home 下创建。

相关内容