
Mientras aprendía a construir e instalar un kernel personalizado (para hackear el kernel), me encontré con una afirmación contradictoria.
En estorespuesta de StackExchange, el autor afirma:
en las siguientes instrucciones, las rutas dentro del árbol de código fuente toman la forma [src]/lo que sea, donde [src] es el directorio en el que instaló el código fuente, por ejemplo, /usr/src/linux-3.13.3. Probablemente quieras hacer esto desde root ya que el árbol fuente debe permanecer seguro en términos de permisos de escritura (debe ser propiedad de root).
Mientras que en el libro de referencia, mencionó:El kernel de Linux en pocas palabras, Greg Kroah-Hartman dice:
Esta advertencia es lo más importante que debe recordar mientras sigue los pasos de este libro. Todo lo que se incluye en este libro (descargar el código fuente del kernel, descomprimirlo, configurar el kernel y compilarlo) debe realizarse como un usuario normal en la máquina. Sólo los dos o tres comandos necesarios para instalar un nuevo kernel deben realizarse como superusuario (root).
y
El código fuente del kernel tampoco debe colocarse nunca en el directorio/usr/src/linux/, ya que esa es la ubicación del kernel en el que se construyeron las bibliotecas del sistema, no su nuevo kernel personalizado. No realice ningún desarrollo del kernel bajo el árbol de directorios /usr/src/, sino sólo en un directorio de usuario local donde no le pueda pasar nada malo al sistema.
Ambas fuentes son bastante antiguas, ¿cuál es el enfoque correcto hoy en día?
Respuesta1
/usr
es el lugar equivocado para cualquier cosa "personalizada":
hombre aquí:
/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 jerarquía de archivos:
/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
confiaba /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.
Por lo tanto, las fuentes del kernel solo deben /usr/src
ser referenciadas, no modificadas.
Muestra Documentation/admin-guide/README.rst
la O=
opción para que pueda convertir una compilación en un asunto de solo lectura en/usr/src/linux-VERSION
cd /usr/src/linux-4.X
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
Así también el archivo .config se crea en /home.