/usr/src é um local válido para um kernel personalizado?

/usr/src é um local válido para um kernel personalizado?

Enquanto aprendia como construir e instalar um kernel personalizado (para hackear o kernel), me deparei com uma afirmação contraditória.

NissoResposta do StackExchange, o autor afirma:

nas instruções a seguir, os caminhos dentro da árvore de código-fonte assumem o formato [src]/qualquer que seja, onde [src] é o diretório em que você instalou o código-fonte, por exemplo, /usr/src/linux-3.13.3. Você provavelmente deseja fazer isso su root, pois a árvore de origem deve permanecer segura em termos de permissões de gravação (ela deve pertencer ao root).

Enquanto estava no livro de referência, ele mencionou:Kernel Linux em poucas palavras, Greg Kroah-Hartman diz:

Este aviso é a coisa mais importante a ser lembrada ao seguir as etapas deste livro. Tudo neste livro — baixar o código-fonte do kernel, descompactá-lo, configurar o kernel e compilá-lo — deve ser feito como um usuário normal na máquina. Apenas os dois ou três comandos necessários para instalar um novo kernel devem ser executados como superusuário (root).

e

O código-fonte do kernel também nunca deve ser colocado no diretório/usr/src/linux/, pois esse é o local do kernel no qual as bibliotecas do sistema foram construídas, e não o seu novo kernel personalizado. Não faça nenhum desenvolvimento de kernel na árvore /usr/src/directory, mas apenas em um diretório de usuário local onde nada de ruim pode acontecer ao sistema.

Ambas as fontes são bastante antigas, qual é a abordagem correta para isso hoje em dia?

Responder1

/usré o lugar errado para qualquer coisa "personalizada":

cara aqui:

   /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 hierarquia de arquivos:

   /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/includeestava confiando /usr/src/linuxantes:

   /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.

Portanto, as fontes do kernel só devem /usr/srcser referenciadas, não modificadas.

O Documentation/admin-guide/README.rstmostra a O=opção para que você possa transformar uma compilação em um caso somente leitura em/usr/src/linux-VERSION

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

Assim também o arquivo .config é criado em/home.

informação relacionada