
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/include
estava confiando /usr/src/linux
antes:
/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/src
ser referenciadas, não modificadas.
O Documentation/admin-guide/README.rst
mostra 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.