Montaje del núcleo con su configuración

Montaje del núcleo con su configuración

Introducción
cl-kernel
Construir el núcleo
Actualizar el núcleo
Ajuste de calculate-sources

INTRODUCCIÓN

Calculate Linux utiliza kernels LTS. La mayoría de los controladores se construyen como módulos, por lo que el núcleo es más pequeño sin sacrificar la funcionalidad. Se aplican diferentes opciones y parches en las versiones de escritorio y de servidor. A diferencia de los equivalentes proporcionados por Portage, el kernel predeterminado de Calcular Linux, sys-kernel / calculate-sources, se instala como un paquete normal. Una vez completada la compilación, normalmente se elimina el código fuente.

Puede modificar su núcleo para fines de optimización, si desea hacerlo más eficiente en recursos, agregue compatibilidad con un hardware específico, reduzca el uso de memoria o el consumo de energía, o simplemente para un arranque más rápido. También es una excelente oportunidad para entender mejor cómo funciona un sistema Linux.

CL-KERNEL

El script cl-kernel, proporcionado por sys-apps/calculate-toolkit, compila el kernel. Está escrito en Bash e integrado de forma transparente con Calculate plantillas.

calculate ~ # emerge sys-apps/calculate-toolkit

CARACTERÍSTICAS

1. Soporta todos los kernels, como sys-kernel/calculate-sources, sys-kernel/gentoo-sources, sys-kernel/vanilla-sources y otros;
2. Le permite crear un kernel con o sin initramfs;
3. Genera una plantilla de configuración basada en su kernel personalizado, que se utilizará más adelante;
4. Importa opciones preconfiguradas;
5. Ofrece la opción entre versiones múltiples del kernel mientras que la configuración existente permanece intacta;
6. Como parte de Calculate Utilities, valida las plantillas que se crearon para calculate-sources en el momento de la instalación;
7. Copias de seguridad de la configuración actual;
8. Está disponible en inglés, francés y ruso.

Antes de proceder a los pasos siguientes, asegúrese de que tiene suficiente espacio libre en disco. El código del kernel descomprime el directorio
/usr/src. Ver el espacio mediante la ejecución de:

calculate ~ # df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
devtmpfs 10M 0 10M 0% /dev
shm 5.9G 4.0K 5.9G 1% /dev/shm
tmpfs 5.9G 1.3M 5.9G 1% /run
/dev/sde4 137G 12G 119G 9% /
cgroup_root 10M 0 10M 0% /sys/fs/cgroup
/dev/sde5 629G 229G 394G 37% /home
none 5.9G 16K 5.9G 1% /run/user/1000
none 5.9G 0 5.9G 0% /run/user/0

Recuerde siempre tener una copia de seguridad en caso de fallo. Sólo debe experimentar con núcleos alternativos para evitar terminar con un sistema que no arranca, o en una versión no instalada de calculate-sources.

Haga una copia de respaldo de la configuración del núcleo actual

Es recomendable hacer una copia de respaldo de la configuración del núcleo de modo que no se pierdan las configuraciones anteriores. Después de todo, muchos usuarios invierten una considerable cantidad de tiempo en averiguar la mejor configuración para el sistema y por tanto no quieren perder definitivamente esa información.

Es fácil hacer una copia de respaldo de la configuración actual del núcleo:
root # cd /usr/src/linux
root # cp .config ~/kernel-config-`uname -r`

Asumiendo que el enlace simbólico a los núcleos del núcleo se ha definido correctamente, esto copia la configuración del núcleo actualmente utilizado al directorio de inicio de root, cambiando la configuración a kernel-config- seguido de la versión del núcleo Linux que está corriendo actualmente.

Ajuste el enlace simbólico a los nuevos fuentes del núcleo

El enlace simbólico /usr/src/linux debe siempre apuntar al directorio que contiene los fuentes del nucleo en el que está corriendo. Esto se puede hacer de tres formas distintas:
Instalar los nuevos fuentes del núcleo con USE=“symlink”
Ajustar el enlace con eselect
Actualizar el enlace simbólico de forma manual

Instalar los fuentes del núcleo con el ajustes USE para gestionar el enlace simbólico
Esto hará que /usr/src/linux apunte a los nuevos fuentes del núcleo instalados.

CONSTRUIR EL NÚCLEO

Seleccione un kernel entre los disponibles en el árbol de Portage. Puede ver la lista completa escribiendo:

calculate linux # eix -c sys-kernel/*sources
[N] sys-kernel/aufs-sources (~4.10.16(4.10.16)): Full sources including the Gentoo patchset for the linux kernel tree and aufs4 support
[N] sys-kernel/beaglebone-sources [2] (–): Official Sabayon Linux Standard kernel sources for beaglebone
[?] sys-kernel/calculate-sources [1] (4.9.28(4.9.28){tbz2}@18/05/17 4.11.3(4.11.3){tbz2}@27/05/17 -> 4.9.28(4.9.28)^bs{tbz2}): Calculate Linux kernel image
[N] sys-kernel/ck-sources (~4.11.3-r1(4.11.3-r1)): Con Kolivas’ high performance patchset and Gentoo’s genpatches for Linux 4.11
[?] sys-kernel/gentoo-sources (4.9.16(4.9.16)31/05/17 4.9.30(4.9.30)31/05/17 -> 3.4.113(3.4.113)^bs 3.10.95(3.10.95)^bs 3.10.104-r1(3.10.104-r1)^bs 3.12.52-r1(3.12.52-r1)^bs 3.12.66(3.12.66)^bs 4.1.15-r1(4.1.15-r1)^bs 4.1.35(4.1.35)^bs 4.1.37(4.1.37)^bs 4.4.52(4.4.52)^bs 4.9.6-r1(4.9.6-r1)^bs 4.9.16(4.9.16)^bs): Full sources including the Gentoo patchset for the 4.11 kernel tree
[N] sys-kernel/git-sources (~4.12_rc3(4.12_rc3)): The very latest -git version of the Linux kernel
[N] sys-kernel/hardened-sources (4.8.17-r2(4.8.17-r2)): Hardened kernel sources (kernel series 4.9)
[N] sys-kernel/mips-sources (–): Linux-Mips GIT sources for MIPS-based machines, dated 20161016
[N] sys-kernel/openvz-sources (2.6.32.111.12(2.6.32.111.12)): Kernel sources with OpenVZ patchset
[N] sys-kernel/pf-sources (~4.11_p3(4.11_p3)): Linux kernel fork with new features (-ck patchset (BFS), BFQ, TuxOnIce and UKSM)
[N] sys-kernel/raspberrypi-sources (–): Raspberry PI kernel sources
[N] sys-kernel/rt-sources (~4.9.20_p16(4.9.20_p16)): Full Linux 4.9 kernel sources with the CONFIG_PREEMPT_RT patch
[N] sys-kernel/sabayon-sources [2] (~4.11.3-r1(4.11)): Official Sabayon Linux Standard kernel sources
[N] sys-kernel/tuxonice-sources (~4.5.4(4.5.4)): TuxOnIce + Gentoo patchset sources
[N] sys-kernel/vanilla-sources (~4.11.3(4.11.3)): Full sources for the Linux kernel
[N] sys-kernel/xbox-sources (–): Full sources for the Xbox Linux kernel
[N] sys-kernel/zen-sources (–): The Zen Kernel Live Sources
[1] “calculate” /var/lib/layman/calculate
[2] “sabayon-distro” /var/lib/layman/sabayon-distro

Notas:
Aufs (abreviatura de un sistema de archivos avanzado de unificación multi-capa) implementa un montaje de unión para sistemas de archivos Linux. Aufs fue rechazado para la fusión en Linux principal.

calculate ~ # echo sys-kernel/calculate-sources ~amd64 ~x86 >> /etc/portage/package.keywords/custom
calculate ~ # USE=“symlink” emerge sys-kernel/calculate-sources

En primer lugar vamos a probar el llamado “vainilla” kernel, apoyado por Linus Torvalds sí mismo.

En Portage, el paquete está marcado como enmascarado. Desmárquelo antes de hacer otra cosa:
calculate ~ # echo sys-kernel/vanilla-sources ~amd64 ~x86 >> /etc/portage/package.keywords/custom
calculate ~ # USE=“symlink” emerge sys-kernel/vanilla-sources
Local copy of remote index is up-to-date and will be used.
Calculating dependencies… done!

Verifying ebuild manifests
Emerging (1 of 1) sys-kernel/vanilla-sources-4.11.3::gentoo

* IMPORTANT: 1 news items need reading for repository ‘gentoo’.
* Use eselect news read to view new items.

Segundo ejemplo:
calculate ~ # echo sys-kernel/aufs-sources ~amd64 ~x86 >> /etc/portage/package.keywords/custom
calculate ~ # USE=“symlink” emerge sys-kernel/aufs-sources

Tercer ejemplo:
calculate ~ # echo sys-kernel/gentoo-sources ~amd64 ~x86 >> /etc/portage/package.keywords/custom
calculate ~ # USE=“symlink” emerge sys-kernel/gentoo-sources

Calculating dependencies… done!

Verifying ebuild manifests
Emerging (1 of 1) sys-kernel/gentoo-sources-4.11.3::gentoo

Active el símbolo “USE” si desea utilizar controladores propietarios, es decir, nvidia-drivers, ati-drivers, virtualbox-bin o broadcom-sta. Una vez que el kernel esté listo, recompile los módulos ejecutando:
calculate ~ # emerge @module-rebuild

NOTAS: A día de hoy sys-kernel/vanilla-sources-4.11.3, sys-kernel/gentoo-sources-4.11.3 y sys-kernel/aufs-sources-4.11.3 dan problemas con x11-drivers/nvidia-drivers-381.22 y net-wireless/broadcom-sta-6.30.223.271-r4 después de instalarse. sys-kernel/gentoo-sources-4.9.30 error con drivers Nvidia
Más opciones:
Ejemplo.
calculate ~ # equery g sys-kernel/gentoo-sources
Especificar una versión en concreto:
calculate ~ # echo sys-kernel/gentoo-sources ~amd64 ~x86 >> /etc/portage/package.keywords/custom
calculate ~ # USE=“symlink” emerge =sys-kernel/gentoo-sources-4.9.30

Compruebe que el núcleo se ha convertido en disponible:
calculate ~ # cl-kernel --kver list
(verde) * 4.11.3
(verde) * 4.11.3-gentoo
(verde) * 4.10.16-aufs *
(rojo) * 4.9.28-calculate
(rojo) * 4.11.3-calculate

Preste atención a la lista. A diferencia de calculate-sources y alternativas, el núcleo de vainilla no se identifica expresamente como tal en esta salida. El asterisco rojo a la izquierda de la versión indica que el kernel instalado es más delgado comparado con el código original (no contiene la versión completa del código fuente). El asterisco de la derecha marca la versión del kernel predeterminada, definida en /usr/src/linux.


calculate ~ # eselect kernel list
Available kernel symlink targets:
[1] linux-4.9.16-gentoo
[2] linux-4.9.28-calculate *
[3] linux-4.9.30-gentoo
[4] linux-4.11.3-calculate
Esto muestra las fuentes del núcleo disponibles. El asterisco indica las fuentes elegidas.
Para cambiar las fuentes del núcleo, por ejemplo a la segunda entrada, se debe hacer lo siguiente:
calculate linux # eselect kernel set 2


CL-KERNEL
Convertir la configuración actual para el primer arranque.
Debe convertir la nueva versión del kernel a los ajustes actuales, para hacer esto:
Ejemplo:
cl-kernel --kver 4.11.3 --convert

Es importante que entienda el funcionamiento de cl-kernel, que difiere considerablemente de su implementación anterior.

  1. El script procesa el archivo de configuración del kernel que extrae de la plantilla relevante.
  2. Una vez compilado el kernel, cl-kernel crea una nueva plantilla personalizada basada en las últimas modificaciones generadas por el usuario.
  3. Como no se proporciona ningún archivo de configuración para kernels que no sean de Calculate (non-Calculate kernels), la plantilla de salida muestra las diferencias con las opciones predeterminadas, si utiliza un kernel de este tipo.
  4. Cuando se inicia con la opción “–convert”, cl-kernel toma después como base de la configuración actual del kernel (desde /boot o/proc) si “.config” no se encuentra en el directorio sources.
    El kernel se configura (con make menuconfig), compilado e instalado. Si no ha configurado CONFIG_BLK_DEV_INITRD, también se creará initramfs.

Tenga en cuenta que hay 2 archivos de configuración diferentes:

  1. make menuconfig - configuración principal para OpenWrt incluyendo todas las opciones de construcción y el paquete incluye - a menudo modificado (archivo .config)
  2. make kernel_menuconfig - configuración para el kernel - rara vez modificada (target / linux / / config *

Ejemplos:
cl-kernel --kver 4.11.3-gentoo --convert
cl-kernel --kver 4.11.3-calculate --convert
calculate ~ # cl-kernel --kver 4.9.30-gentoo --convert

calculate ~ # cl-kernel --kver 4.10.16-aufs --convert
* Will be used /boot/config-4.9.28-calculate kernel configuration
* Preparing the basic kernel configuration … [ ok ]
scripts/kconfig/conf --oldconfig Kconfig
.config:914:warning: symbol value ‘m’ invalid for NF_CT_PROTO_DCCP
.config:916:warning: symbol value ‘m’ invalid for NF_CT_PROTO_SCTP
.config:917:warning: symbol value ‘m’ invalid for NF_CT_PROTO_UDPLITE
.config:935:warning: symbol value ‘m’ invalid for NF_NAT_PROTO_DCCP
.config:936:warning: symbol value ‘m’ invalid for NF_NAT_PROTO_UDPLITE
.config:937:warning: symbol value ‘m’ invalid for NF_NAT_PROTO_SCTP
*

  • Restart config…
    *
    *
  • Gentoo Linux
    *
    Gentoo Linux support (GENTOO_LINUX) [Y/n/?] (NEW) y
    Y te salen muchísimas opciones




    Sino sabemos con certeza pulsamos Enter

dracut: * Creating image file ‘/boot/initramfs-4.10.16-aufs.img’*
dracut: * Creating initramfs image file ‘/boot/initramfs-4.10.16-aufs.img’ done*
* The boot parameters are being configured …
* Configuring the grub
* Installing the bootloader … [ ok ]
* Changing the I/O scheduler … [ ok ]
* Boot parameters configured!
* Kernel build time: 20 min 34 sec
* Creating the template 10-aufs-x86_64-4.10
* To rebuild kernel modules packages, please run:
*
* emerge -a @module-rebuild
* All done!

Después de terminar recuerde que debe actualizar los módulos requeridos haciendo:
emerge @module-rebuild

calculate ~ # emerge -a @module-rebuild

¡Hecho! Ahora reinicie su computadora y disfrute del nuevo kernel. Si ha no tocado nada más que ingresar los comandos que hemos cubierto aquí, su sistema debería estar funcionando sin problemas.


ACTUALIZAR EL NÚCLEO

Mire la primera línea de la plantilla, que creó anteriormente el cl-kernel desde el archivo de configuración del kernel:

head -n 1 /var/calculate/templates/kernel/10-vanilla-x86_64-4.11.3
# Calculate format=kernel name=.config os_install_arch_machine==x86_64&&merge(sys-kernel/vanilla-sources)>=4.11.3

La primera línea - es el encabezado de plantilla. En él se describe el formato de la plantilla, el nombre del archivo, se realiza una comprobación en la arquitectura del sistema, el nombre y la versión del kernel.

Desde plantilla muestra que va a trabajar para todas las versiones de núcleos de 4.11.3 y superior.

Para instalar el kernel 4.11.3 después de que el paquete de instalación será suficiente para llevar a cabo:

cl-kernel --kver=4.11.3

Parámetro ‘–kver’ se puede omitir, si el núcleo es seleccionado por defecto cuando los puntos de enlace /usr/src/linux simbólicos a él. Por lo que será, si el paquete se instala con el código fuente del núcleo, se especifica “symlink” (“enlace simbólico”) USE. Por ejemplo, después de realizar:

echo sys-kernel/vanilla-sources symlink >> /etc/portage/package.use/custom

En la transición a una versión más grande del kernel, por ejemplo 3.20 4.0.0, a menudo es necesario ver una lista de cambios entre la configuración del kernel (make oldconfig). Para ello:

cl-kernel --kver 4.0.0 --kver-old=3.19.1

AJUSTES DE CALCULATE-SOURCES

En el ejemplo de vanilla-sources hemos aprendido a establecer y cobrar una variedad de paquetes centrales. ¿Pero usted necesita poner una actualización del núcleo “en marcha” con la configuración de cambios y parches? ¡No hay nada más fácil!

1. Restablecer el núcleo USE “minimal” :

echo sys-kernel/calculate-sources -minimal >> /etc/portage/package.use/custom

2. Instalar el código fuente del kernel sin compilar:

USE="-vmlinuz" emerge sys-kernel/calculate-sources

3. Cambiar la configuración:

cl-kernel

En el último párrafo no se hace referencia a la versión del kernel, ya que el paquete de instalación reescribió el enlace simbólico /usr /src/linux. Puede comprobarlo ejecutando:

cl-kernel --kver list
* 3.19.0
* 3.18.7-calculate *

Si no está seguro, es mejor especificar claramente el núcleo:

cl-kernel --kver=3.18.7-calculate

Tenga en cuenta que la versión opuesta del núcleo, ya no roja y verde asterisco.

Mientras que el núcleo, si echa un vistazo a la plantilla de configuración del núcleo resultante: contendrá sólo los cambios realizados-diferencias con respecto a la versión original de la configuración del núcleo.

Ejemplo de después de desactivar ReiserFS apoyo:

var/calculate/templates/kernel/10-calculate-x86_64-3.18
# Calculate format=kernel name=.config os_install_arch_machine==x86_64&&merge(sys-kernel/calculate-sources)>=3.18
!CONFIG_REISERFS_FS=m

Tenga en cuenta que la re-ejecución de cl-kernel tiene en cuenta los cambios realizados por usted. Para restablecer ellos, retire la plantilla que ha creado.


BORRAR KERNELS ANTIGUOS

Ejemplo:
He desistalado los kernels antiguos con emerge -C kernel, pero al mostrar las entradas con eselect las sigue teniendo.
eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.21-gentoo-r3
[2] linux-2.6.22-gentoo-r2
[3] linux-2.6.22-gentoo-r3
[4] linux-2.6.22-gentoo-r5
[5] linux-2.6.22-gentoo-r6
[6] linux-2.6.22-gentoo-r7 *
[7] linux-2.6.22-gentoo-r8
[8] linux-2.6.22-suspend2-r1

Explicación y solución:
Lo que eselect hace es simplemente buscar entradas en /usr/src/. Por tanto, siempre listará todo lo que haya allí. Lo único que puedes hacer es borrar a mano los subdirectorios en /usr/src que no te sirvan.

Ahora viene la explicación de por qué están ahí dichos directorios si pertenecen a kernels antiguos que ya desinstalaste.

Portage tiene la política de no borrar nunca nada que no haya creado. En los directorios de los kernels que has compilado existen montones de archivos objeto (.o), además de tu .config. Estos no han sido creados por portage, sino por tí, al compilar tu kernel. Por tanto, portage no los puede eliminar, y los directorios van quedando ahí. Esto tiene su lógica, porque a nadie le gustaría ir a por una .config antigua y encontrarse conque portage decidió eliminarla.
Si de verdad quieres eliminar dichos directorios, tendrás que hacerlo a mano.
Dos consejos:
1.- cuando vayas a desinstalar un kernel, borra primero su directorio a mano, y el emerge -C tardará mucho menos en completarse
2.- cuando hagas eso, borra también el kernel de /boot y el dir de módulos correspondiente de /lib/modules/, o se irán amontonando.

IMPORTANTE:
Con nuevas versiones de los núcleos puede haber dificultades con el montaje de algunos módulos. Ejemplo con el módulo Broadcom-sta (=net-wireless/broadcom-sta-6.30.223.271-r4).
Si no utiliza broadcom-sta, elimine este paquete: emerge -C net-wireless/broadcom-sta