Instalación del kernel de Linux. Configuración y compilación del kernel de Linux. Desempaquetando la fuente del kernel

Buenas tardes, lectores e invitados. Continuando con el último post sobre, hoy quiero contarles, cómo construir y configurar su propio núcleo.

Por el post anterior, ya sabemos que núcleo de linux tiene características mínimas y soporte de hardware, pero si es necesario, podemos ampliar las capacidades del kernel con módulos del núcleo. lo que podría ser necesario construyendo o reconstruyendo su propio núcleo? Por ejemplo, para habilitar/deshabilitar nuevas características, o actualización del kernel antiguo a uno más nuevo con soporte para nuevas funciones, o solo para experimentos, como en nuestro ejemplo.

Obtención de fuentes de kernel y preparación para la configuración

Se puede hacer de varias formas obtener fuentes:

    1. Obtenga los archivos del código original de The Linux Kernel Archives, como archivos gzip o bzip2, con el comando:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.1.tar.bz2 cp linux-2.6.36.1.tar.bz2 /usr/src/
  1. Obtenga fuentes de los repositorios de distribución (por ejemplo: , CentOS i386) como un paquete binario deb o rpm (src.rpm) con parches del fabricante de la distribución. Por ejemplo: kernel-server:/tmp/123# fuente de búsqueda apt-cache | grep linux ketchup - utilidad de actualización para las fuentes del kernel de linux linux-patch-grsecurity2 - parche del kernel de grsecurity - nueva versión principal principal linux-wlan-ng-source - controlador de linux-wlan-ng linuxdoc-tools - convertir la fuente LinuxDoc SGML a otros formatos linux-patch-lustre - Parche del kernel de Linux para el sistema de archivos Lustre libcorelinux-dev - Clases básicas, patrones de diseño, IPC y subprocesos libcorelinux-doc - Clases básicas, patrones de diseño, IPC y subprocesos libcorelinux-examples - Clases básicas, patrones de diseño, IPC y subprocesos libcorelinuxc2a: clases básicas, patrones de diseño, IPC y subprocesos linux-patch-openswan: compatibilidad con IPSEC Linux kernel para Openswan selinux-policy-src: origen de la política de referencia de SELinux para la personalización user-mode-linux-doc: modo de usuario Linux (Documentación) linux-patch-xenomai - Parches del kernel de Linux para Xenomai linux-patch-debian-2.6.26 - Parches de Debian para la versión 2.6.26 del kernel de Linux linux-source-2.6.26 - Fuente del kernel de Linux para la versión 2.6 .26 con parches de Debian linux-tree-2.6.26 - Árbol fuente del kernel de Linux para crear imágenes del kernel de Debian Servidor de impresión:~# apt-get install linux-source-2.6.26 Leyendo listas de paquetes... Listo Construyendo árbol de dependencias Leyendo información de estado... Listo Se instalarán los siguientes paquetes adicionales: binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev make Paquetes sugeridos: binutils-doc bzip2-doc cpp-doc gcc- 4.3 -locales gcc-multilib manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc libgcc1-dbg libgomp1-dbg libmudflap0-dbg glibc-doc libncurses-dev ncurses -dev kernel-package libqt3-mt-dev make-doc NUEVOS paquetes a instalar: binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev linux-source-2.6.26 make updated 0, 13 paquetes nuevos instalados, 0 paquetes marcados para eliminación y 5 paquetes no actualizados. Debe descargar archivos de 50,2 MB/63,2 MB. Después de esta operación, la cantidad de espacio en disco ocupado aumentará en 89,4 MB. ¿Te gustaría continuar [S/N]? y Obtenido:1 http://ftp.debian.org lenny/main linux-libc-dev 2.6.26-26 Obtenido:2 http://ftp.debian.org lenny/main linux-source-2. 6.26 2.6.26-26 Se obtuvieron 50,2 MB en 1 min 49 s (460 kB/s) Selección del paquete binutils no seleccionado anteriormente. (Leyendo la base de datos... 16621 archivos y directorios actualmente instalados.) Desempaquetando el paquete binutils (del archivo.../binutils_2.18.1~cvs20080103-7_i386.deb)... Seleccionando el paquete bzip2 previamente no seleccionado. ..... Se desempaqueta el paquete make (desde archivo.../archives/make_3.81-5_i386.deb)... Se procesan los activadores man-db... El paquete binutils (2.18.1~cvs20080103-7 ) está configurado. .. ..... Configurando linux-source-2.6.26 (2.6.26-26) ... Configurando make (3.81-5) ... kernel-server:~# ls /usr /src/linux-source-2.6.26.tar.bz2

Me gustaría señalar que nombre del archivo fuente o paquete, se parece a esto: Linux-fuente-2.6.26 o núcleo-fuente-2.6.18. Del listado del segundo ejemplo, se puede ver que al instalar fuentes desde el repositorio, apt nos ofrece instalar otros paquetes relacionados, sin los cuales no se puede construir el kernel.

Entonces. Después obtener fuentes una de las formas anteriores (copiando el archivo (en el primer caso) e instalando el paquete (en el segundo caso)), entramos en el directorio /usr/src/- archivo con el mismo nombre linux-fuente-2.6.26.tar.bz2. A continuación, debemos descomprimir el archivo de melón con el comando: alquitrán -xjf linux .tar.bz2. Como resultado, obtenemos un árbol de directorios de fuentes del kernel ubicados en el directorio /usr/src/linux-2.6.36.1/. También se recomienda crear un enlace simbólico /usr/src/linux al directorio anterior:

Kernel-server:~# cd /usr/src/ kernel-server:/usr/src# ln -s linux-2.6.36.1 linux kernel-server:/usr/src# ls -l lin* lrwxrwxrwx 1 raíz src 14 de diciembre 3 16:31 linux -> linux-2.6.36.1 -rw-r--r-- 1 root src 70236745 3 de diciembre 15:57 linux-2.6.36.1.tar.bz2

Antes de intentar compilar y configurar, debe revisar el archivo Cambios ubicado en el directorio Documentación. Contiene, entre otras cosas, lista de paquetes necesarios para construir el kernel, con números de versión. Asegúrese de que estos paquetes estén instalados (si instaló las fuentes usando un administrador de paquetes, lo más probable es que los paquetes necesarios ya estén instalados).

El árbol de subdirectorios desempaquetado contiene el archivo Makefile. archivo MAKE contiene varios objetivos de compilación para configurar las opciones del kernel, compilar el kernel y sus módulos, instalar módulos y compilar paquetes RPM o deb. Las versiones más recientes de las fuentes del kernel le permiten usar make help para obtener ayuda breve para cada objetivo. En sistemas más antiguos, era necesario consultar la documentación o ver el archivo MAKE. A continuación se muestra parte de la salida de make help:

Kernel-server:/usr/src/linux-2.6.36.1# make help Limpieza de objetivos: clean - Eliminar la mayoría de los archivos generados pero mantener la configuración y suficiente soporte de compilación para crear módulos externos mrproper - Eliminar todos los archivos generados + configuración + varios archivos de copia de seguridad distclean - mrproper + eliminar la copia de seguridad del editor y los archivos de parche Objetivos de configuración: config - Actualizar la configuración actual utilizando un programa orientado a la línea nconfig - Actualizar la configuración actual utilizando un programa basado en el menú ncurses menuconfig - Actualizar la configuración actual utilizando un programa basado en el menú xconfig - Actualizar la configuración actual utilizando un gconfig front-end basado en QT - Actualice la configuración actual utilizando un oldconfig front-end basado en GTK - Actualice la configuración actual utilizando un .config proporcionado como base .......

Además, si por alguna razón es necesario aplicar un parche al kernel, entonces debe descargarse con anticipación y colocarse en el directorio /usr/src. Si no necesita parchear el kernel, puede proceder con seguridad a la configuración. El núcleo está parcheado de la siguiente manera:

Servidor-kernel: /usr/src/linux-2.6.36# gzip -cd ../patch-2.6.xx.gz | patch -p1 #o Servidor de impresión:/usr/src/linux-2.6.36# bzip2 -dc ../patch-2.6.xx.bz2 | parche-p1

Configuración

La configuración actual del kernel se almacena en un archivo .config. Este archivo se forma utilizando uno de los objetivos de configuración (el objetivo es, en términos simples, un comando ejecutado en la forma hacer objetivo):

El destino de configuración utiliza una interfaz de línea de comandos para responder muchas preguntas sobre la creación o actualización de un archivo .config. En mi opinión, en comparación con los propósitos que utilizan el menú, una pieza muy inconveniente.

clonconfig

Copie la configuración actual del kernel en el archivo .config. Este objetivo ha quedado en desuso y ha sido reemplazado en kernels más nuevos por . (útil para agregar nuevas funciones al kernel actual)

El destino menuconfig utiliza un programa basado en menús creado sobre ncurses para crear o actualizar un archivo .config. Solo tienes que responder a las preguntas de los elementos que quieres cambiar. Este enfoque ha reemplazado la configuración anterior. Se ejecuta en una ventana de terminal de forma remota o local.

Objetivo nconfig utiliza un programa controlado por menú construido sobre ncurses para crear o actualizar un archivo .config. Esta versión se basa en pero tiene un aspecto más moderno. Agregado después del lanzamiento del kernel de Linux 2.6.35. Solo tienes que responder a las preguntas de los elementos que quieres cambiar. Se ejecuta en una ventana de terminal de forma remota o local.

El objetivo xconfig utiliza un sistema de menú gráfico basado en el front-end QT utilizado por el escritorio KDE.

El destino gconfig usa un sistema de menú gráfico basado en el front-end GTK usado por el escritorio GNOME.

configuración antigua

El destino oldconfig le permite crear una configuración utilizando un archivo .config existente que creó anteriormente o desde otro sistema. Por ejemplo, puede copiar el archivo de configuración de su sistema desde /lib/modules/$(uname -r)/build/.config a /usr/src/linux. Una vez que haya hecho esto, puede usar uno de los objetivos del menú de configuración para realizar cambios si es necesario. Además, al ejecutar este comando, si se han agregado muchas funciones nuevas al nuevo núcleo, se harán muchas preguntas sobre la configuración de nuevos parámetros. (útil para agregar nuevas funciones al kernel actual)

Una vez más, se puede ver una lista de todos los objetivos de comando escribiendo hacer ayuda Entonces, comencemos a configurar. El más conveniente para la consola, en mi humilde opinión - .

Después de ejecutar el comando, recibí un mensaje terrible:

Kernel-server:/usr/src/linux-2.6.36.1# make menuconfig *** No se pueden encontrar las bibliotecas ncurses o los *** archivos de encabezado requeridos. *** "make menuconfig" requiere las bibliotecas ncurses. *** *** Instale ncurses (ncurses-devel) y vuelva a intentarlo. *** marca: *** Error 1 marca: *** Error 2

Falta algo, pensó Stirlitz (C) ... Probablemente un paquete que contiene el nombre maldiciones y dado que se trata de bibliotecas, lo más probable es que el paquete comience con lib. Entré en el repositorio:

Kernel-server:/usr/src/linux-2.6.36.1# apt-cache search ncurses | grep ^lib libcunit1-ncurses-dev - Biblioteca de pruebas unitarias para C (ncurses) -- archivos de desarrollo libcunit1-ncurses - Biblioteca de pruebas unitarias para C (ncurses) libncurses-gst - Enlaces Ncurses para GNU Smalltalk libkaya-ncurses-dev - Enlaces Ncurses para kaya libkaya-ncursesw-dev - Enlace de Ncurses para kaya libcurses-perl - Interfaz de Curses para Perl libcurses-widgets-perl - Interfaz de widget de Curses para Perl libruby-extras - un paquete de bibliotecas adicionales para Ruby libruby1.8-extras - un paquete de bibliotecas adicionales para Ruby 1.8 libtexttools-dev - Biblioteca Ada y C++ para escribir aplicaciones de consola libtexttools2.0.5 - Biblioteca Ada y C++ para escribir aplicaciones de consola libncurses-ruby1.8 - Extensión de ruby ​​​​para la biblioteca ncurses C libncurses-ruby1.9 - Extensión ruby ​​​​para la biblioteca ncurses C libncurses-ruby - Extensión ruby ​​​​para la biblioteca ncurses C lib64ncurses5-dev - Bibliotecas de desarrollador para ncurses (64 bits) lib64ncurses5 - Bibliotecas compartidas para el manejo de terminales (64 bits) libncurses5-dbg - bibliotecas de depuración/perfilado para ncurses libncurses5-dev - bibliotecas y documentos de desarrollador para ncurses libncursesw5-dbg - bibliotecas de depuración/perfilado para ncurses libncursesw5-dev - bibliotecas de desarrollador para ncursesw libcurses-ocaml-dev - enlaces OCaml para la biblioteca ncurses libcurses- ocaml: enlaces OCaml para la biblioteca ncurses libggi-target-terminfo: interfaz gráfica general TermInfo display target libncurses5: bibliotecas compartidas para control de terminal libncursesw5: bibliotecas para control de terminal (soporte para caracteres de doble byte)

Esta línea: libncurses5-dev - bibliotecas y documentos de desarrollador para ncurses me parecia necesario. Instalamos:

Kernel-server:/usr/src/linux-2.6.36.1# apt-get install libncurses5-dev Leyendo listas de paquetes... Listo Construyendo árbol de dependencias Leyendo información de estado... Listo NUEVOS paquetes a instalar: libncurses5-dev 0 actualizado , 1 paquete nuevo instalado, 0 paquetes marcados para eliminación y 5 paquetes no actualizados. Necesitas descargar 1546kB de archivos. Después de esta operación, la cantidad de espacio en disco ocupado aumentará en 6599 kB. Recibido:1 http://ftp.debian.org lenny/main libncurses5-dev 5.7+20081213-1 Recibido 1546kB en 4s (344kB/s) Selección del paquete libncurses5-dev no seleccionado previamente. (Leyendo la base de datos... 18098 archivos y directorios actualmente instalados). Desempaquetando el paquete libncurses5-dev (del archivo.../libncurses5-dev_5.7+20081213-1_i386.deb)... Procesando disparadores man-db... Paquete libncurses5-dev (5.7+20081213-1) se está configurando...

Listo, probemos :

¡Hurra! Vemos el codiciado menú de configuración del kernel. A continuación se muestran las diversas opciones que le permiten incluir componentes en el núcleo o crear módulos. Cuando se resalta una opción, puede usar la barra espaciadora para navegar por las opciones de ese componente. Para activar la opción, presione y deshabilitar -- norte para crear, si es posible, un módulo, haga clic en metro. Salir del menú: Esc Esc.

  • [*] El componente se incluirá en el kernel.
  • El componente no se incluirá en el kernel.
  • [M] El componente tendrá el estilo de un módulo.
  • < >El componente no se incluirá en el núcleo, pero se puede empaquetar como un módulo.

A continuación, daré una descripción de las secciones principales para configurar el cambio (se repondrá con el tiempo):

Capítulo parámetro Descripción
Configuración general Esta sección le permite agregar una cadena de identificación a su núcleo, así como una serie de atributos que no están relacionados con ninguna sección, pero que aún deben describirse.
Habilitar soporte de módulo cargable Esta sección contiene opciones para determinar si su kernel admitirá módulos y si se cargarán y descargarán automáticamente. La opción "Habilitar compatibilidad con módulos cargables" debe estar habilitada.
Tipo de procesador y características Esta sección contiene opciones de configuración específicas para este tipo de procesador. Aquí puede seleccionar el procesador y la familia de procesadores que serán compatibles con su kernel. Puede habilitar o deshabilitar la compatibilidad con el kernel para varias funciones proporcionadas por este procesador. Asegúrese de habilitar la compatibilidad con multiprocesamiento simétrico si su sistema tiene más de un procesador o si el procesador admite hiperprocesamiento. Además, para obtener un mejor rendimiento del subsistema de gráficos en sistemas con tarjetas de video AGP o PCI, se debe habilitar el soporte para MTRR.
Opciones de administración de energía Esta sección contiene opciones relacionadas con la administración de energía. Son especialmente importantes para las computadoras portátiles. Además de monitorear el estado de la energía, puedes encontrar allí herramientas para controlar y monitorear parámetros como la temperatura o el estado del ventilador de enfriamiento.
Opciones de bus (PCI, etc.) Esta sección contiene opciones para los buses de computadora compatibles con su sistema, como PCI, PCI Express y PC Card. Aquí puede habilitar la compatibilidad con el sistema de archivos /proc/pci, que se puede usar junto con el comando lspci de uso común.
Formatos de archivos ejecutables/Emulaciones Esta sección contiene opciones relacionadas con la compatibilidad con varios formatos de archivos binarios. El soporte para "ELF binario" debe estar habilitado. Además, puede habilitar el soporte para binarios de DOS para ejecutarlos bajo DOSEMU, así como otros binarios compatibles con contenedores apropiados, como Java ™, Python, Emacs-Lisp, etc. Finalmente, para sistemas de 64 bits que admiten 32- emulación de bits, es posible que desee habilitar la compatibilidad con aplicaciones de 32 bits.
redes La sección relativa a la configuración de red es bastante grande. Aquí puede habilitar la compatibilidad con sockets básicos, redes TCP/IP, filtrado de paquetes de red, enrutamiento y conexión en puente, así como compatibilidad con varios protocolos, como IPV6, IPX, Appletalk y X.25. Además, puede habilitar la compatibilidad con radio inalámbrica, infrarroja y de aficionados.
controladores de dispositivo Esta sección también es muy grande. Aquí puede habilitar la compatibilidad con una gran cantidad de dispositivos de hardware, incluidas unidades IDE/ATAPI o SCSI, o unidades flash. Habilite DMA para sus dispositivos IDE; de lo contrario, funcionarán en modo PIO más lento. Si desea tener soporte para múltiples dispositivos como RAID o LVM, las opciones correspondientes también deben estar habilitadas. Aquí también puede habilitar la compatibilidad con el puerto paralelo para que funcione con la impresora a través de esta interfaz. Aquí es donde configura la amplia gama de dispositivos de red admitidos para los diversos protocolos de red que configuramos anteriormente. Además, aquí encontrará opciones para admitir dispositivos de captura de audio y video, dispositivos USB e IEEE 1384 (Firewire), así como varios tipos de dispositivos de monitoreo de hardware. En la sección Dispositivos de caracteres, es posible que desee habilitar la impresión de puerto paralelo y la compatibilidad con la representación directa.
Controladores de firmware Esta sección contiene varias opciones relacionadas con la instalación y actualización del BIOS, como el uso de las funciones de Dell System Management en algunos sistemas Dell.
Sistemas de archivos Esta sección es para configurar los sistemas de archivos que desea admitir en su núcleo, compilados como módulos o no. También puede encontrar aquí sistemas de archivos para dispositivos de disco extraíbles (disquetes, CD y DVD), así como sistemas de archivos de red como NFS, SMB o CIFS. El soporte para varios tipos de secciones y codificaciones nacionales también se encuentra en esta sección.
piratería del núcleo Esta sección le permite habilitar el modo de depuración del kernel y seleccionar qué funciones adicionales se habilitarán.
opciones de seguridad Esta sección es para configurar las opciones de seguridad y habilitar y configurar SELinux (Security Enhanced Linux).
Opciones criptográficas En esta sección, puede configurar la compatibilidad con varios algoritmos de cifrado, como MD4, DES y SHA256.
rutinas de la biblioteca Aquí puede especificar una serie de algoritmos de cálculo de suma de comprobación (CRC) para que se incluyan en el núcleo o se compilen como módulos.

He dado una descripción muy breve de las secciones de configuración del kernel. Específicamente, sobre la elección de la configuración, probablemente haga una publicación separada, porque la actual ha crecido a un tamaño enorme. La mejor descripción de los ajustes de make menuconfig que encontré aquí Gentoo Handbook. De mí mismo, diré que sería lógico ejecutar make oldconfig (copiando así la configuración actual del sistema operativo instalado), y luego ejecutar make menuconfig y deshabilitar todas las funciones innecesarias (digamos que deshabilité el soporte para WiFi, archivo jfs sistemas que no necesito, etc.). Y, en general, soy partidario de la opinión de que es necesario participar en la optimización del kernel en casos muy extremos, cuando el rendimiento del sistema operativo se basa en las capacidades del hardware. En consecuencia, al reducir el tamaño del kernel (deshabilitar módulos innecesarios, incluirlos en el kernel + deshabilitar funciones innecesarias), puede agregar un 1-2% al rendimiento. Y en los servidores modernos, creo que esto (la reconfiguración del kernel) no es particularmente relevante.

Construyendo el núcleo

Ahora que hemos configurado el kernel, estamos listos para construirlo. Si no sabe cuál es el estado del árbol de compilación, ejecute make clean antes de comenzar a configurar un nuevo kernel. Para una limpieza más completa, ejecute make mrproper (esto eliminará el archivo .config así como algunos otros archivos usados ​​en el proceso de compilación, make mrproper ).

Como parte de la prueba de configuración, es recomendable dar al nuevo núcleo un nombre especial que le permita identificarlo fácilmente. Para ello, debe establecer el valor de Versión local y activar la opción Agregar automáticamente información de versión a la cadena de versión en la línea correspondiente de la sección Configuración general.

En principio, no se requieren permisos de root para construir el kernel, aunque instalando un nuevo kernel estos poderes son necesarios.

Para comenzar a construir el kernel 2.6, debe ejecutar make .

Para comenzar a construir el kernel 2.4, debe ejecutar 3 comandos:
hacer dep
hacer bzImagen
hacer módulos
El primero crea los archivos de dependencia necesarios. El segundo recoge el núcleo. Y el último colecciona módulos.

Instalación de un nuevo núcleo

Una vez construido el núcleo, debe instalarse. Antes de instalar, debe ejecutar make modules_install para instalar los módulos del núcleo en un nuevo subdirectorio /lib/modules. Después de instalar los módulos, debe ejecutar make install para instalar el nuevo kernel y el disco RAM inicial (disco RAM inicial) en el directorio /boot y actualizar la configuración del gestor de arranque.

Me gustaría llamar su atención sobre el hecho de que el disco RAM inicial necesario (disco RAM inicial o initrd) se crea automáticamente durante el proceso de compilación. Si necesita crearlo manualmente, puede hacerlo con el comando mkinitrd.

Después de ejecutar make install, el archivo de configuración del gestor de arranque debe actualizarse. Pero por alguna razón, se actualizó después del comando update-grub.

Sobre esto voy a terminar. Es un artículo muy grande. En un futuro próximo intentaré exprimirlo.

A veces es posible que necesite armar su propio núcleo de linux. Las razones de esto pueden ser las siguientes:

  • necesita un núcleo limpio, sin parches de distribución;
  • desea aplicar sus propios parches (de los cuales hay muchos);
  • desea ensamblar el kernel para su configuración de hardware, desechar el exceso y / o afilarlo para ciertas tareas;
  • desea incluir un controlador experimental o un sistema de archivos en el kernel que no está en el kernel "vainilla" núcleo (ej. ZFS o recaudador 4);
No hay nada difícil en ensamblar el núcleo. Solo es importante entender por qué se hace esto, y también no tocar aquellos parámetros que no comprende. En esta nota, describiré dos ejemplos de construcción de un núcleo en basado en Debian distribuciones. En el primer ejemplo, mostraré lo fácil que es construir un kernel limpio, lo que se llama un kernel "vainilla" (como el que lanza Linus Torvalds), y en el segundo, cómo aplicar sus propios parches y optimizar el kernel. Inmediatamente escribiré dos advertencias:
  • necesitará reconstruir el kernel cada vez que lo actualice (descargue un "parche de actualización", aplíquelo y compile el kernel);
  • el kernel reconstruido puede no funcionar si se utilizan algunos hacks en su sistema para asegurar la operatividad de uno u otro equipo;
  • si el núcleo está configurado incorrectamente, especialmente en el caso de parches analfabetos o irreflexivos, puede obtener un sistema que se ralentiza hasta el horror o perderlo por completo.
¡TODAS LAS ACCIONES QUE REALIZA BAJO SU PROPIO RIESGO!

Fácil compilación del kernel sin parches.

El código fuente del kernel de Linux se encuentra en kernel.org. también hay "parches de actualización". ¿Qué necesitamos? Descargando desde el sitio bola de alquitrán(archivo) con la última versión estable del kernel (al momento de escribir, esta es la versión 4.3 ). Descargamos de cualquier manera conveniente. A continuación, necesitamos herramientas para el montaje:

sudo apt install build-essential gcc kernel-package parche
sudo apt-get build-dep linux

Después de instalar todas las herramientas necesarias, descomprima el archivo con el código del kernel en cualquier directorio conveniente. Déjalo ser /inicio/usuario/KERNEL, Dónde "usuario"- nombre de usuario del sistema. A continuación, abra una terminal y vaya allí:

cd /inicio/usuario/KERNEL

Queda por construir el kernel:

fakeroot make-kpkg -j 3 --initrd --append-to-version=-custom kernel_image kernel_headers #-j 3

Número 3 después j- este es el número de núcleos de su procesador + 1. Es decir, para un dual-core es 3, para un 4-core es 5, y así sucesivamente.
-costumbre- aquí puede especificar un nombre conveniente para el núcleo para que sea más fácil distinguirlo del de distribución.
imagen_del_kernel Y kernel_headers son el propio núcleo y sus archivos de cabecera, respectivamente. encabezados necesario para construir controladores y módulos de kernel, así como para otros fines. Después de ejecutar este comando, comenzarán a aparecer varias preguntas de configuración del kernel. Como vamos a dejar todo en su estado predeterminado, simplemente presione Entrar hasta que comience la compilación. Dependiendo de la potencia de su computadora, el ensamblaje puede tomar de 15 a 20 minutos a varias horas. Después del montaje, en el directorio /Usuario doméstico habrá dos paquete de deuda: núcleo y encabezados. Instálelos con el comando:

sudo dpkg -i linux-image-4.3*deb linux-headers-4.3*deb
sudo update-grub

Y reiniciar. En el menú de GRUB, ahora será posible seleccionar un kernel diferente para iniciar el sistema.

Construyendo el kernel usando parches y configuración adicional.

Esta vez compilaremos un núcleo optimizado para trabajar con sonido y video, así como para una mayor capacidad de respuesta del sistema. Para ello, aplicaremos dos parches: el llamado parche en tiempo real ( RT PREVENTIVO) y un parche del compilador CCG para agregar opciones adicionales para las optimizaciones de la CPU. En primer lugar, ¿qué es un parche? Un parche es un archivo de texto creado por un programa diferencia, que contiene cambios de código en ciertas partes, que, al aplicar el parche, se ingresan en los lugares correctos. Porque parche RT sale con mucho retraso, su última versión es para núcleo 4.1. Sin embargo, esto no es tan importante. De la misma forma descargamos el kernel 4.1 desde kernel.org y lo descomprimimos en el directorio /inicio/usuario/KERNEL-PERSONALIZADO. Ahora descarga parches. Parche PREEMPT_RT y GCC. De los archivos descargados, necesitamos archivos con la extensión .patch, que deben colocarse en el directorio de origen del kernel. es decir, en /inicio/usuario/KERNEL-PERSONALIZADO. Antes de aplicar parches, debe asegurarse de que no habrá errores. Terminal abierto:

cd /home/usuario/KERNEL-CUSTOM
parche -p1 -i parche-4.1.13-rt15.patch --dry-run


Opción --ejecución en seco le permite simular la aplicación del parche, sin realizar cambios en los archivos. Si no se encontraron errores (ver captura de pantalla), aplique el parche sin la opción --ejecución en seco. Haz lo mismo con el segundo parche. ¡No aplique más de un parche al mismo tiempo! Ahora necesitamos configurar nuestro kernel. Tenemos las siguientes opciones a elegir:

hacer configuración- Las preguntas sobre la configuración de uno u otro subsistema del kernel se mostrarán en la terminal una por una. Proceso extremadamente largo y tedioso. Olvidémonos de eso :)
hacer configuración antigua- se utilizará la configuración del núcleo actualmente en ejecución. Dado que estamos construyendo el nuestro desde cero, este método también es inútil.
hacer defconfig- similar al anterior, solo los valores estarán por defecto. La forma en que fue establecido por los desarrolladores del kernel. Un análogo del primer método de ensamblaje.
hacer menuconfig- interfaz pseudo-gráfica basada en la biblioteca ncurses. Se mostrará en la pantalla una interfaz con un conveniente menú jerárquico. Controles con teclas de dirección, barra espaciadora y tecla TAB. Recomendado si está compilando el kernel en un sistema que no tiene un shell gráfico.
hacer gconfig GTK, recomendado en GNOME, Mate, Xfce, Cinnamon, Unity y otros entornos que utilizan GTK.
hacer xconfig- Basado en GUI Qt. Recomendado en KDE. Dado que mi sistema usa KDE, usaré este método. Además, hay un par de otros métodos, pero su aplicación no es diferente. Entonces, después de aplicar los parches, ejecute hacer xconfig y esto es lo que tenemos ante nosotros:


apagar primero dynticks. Para esto vamos a Subsistema de temporizador y elige Marcas periódicas del temporizador


Ahora lo más delicioso. Vamos a Tipo de procesadores y características, buscando un artículo familia de procesadores y especifique la serie de su procesador. Por ejemplo, si tienes Intel Core i5-4xxx, especificar Hasswell(4ª generación de procesador). Si no está seguro exactamente, puede seleccionar el elemento Optimizaciones nativas detectadas automáticamente por GCC. En este caso, al compilar, el compilador determinará qué admite su procesador e incluirá todas sus características.


Ve abajo y activa la opción. Kernel interrumpible completo (RT). Modo duro en tiempo real.


Desplácese hacia abajo y en el párrafo Frecuencia del temporizador establezca la frecuencia de interrupción del sistema en 1000 Hz


Apague completamente cualquier ahorro de energía. ¡Es importante! A la izquierda estamos buscando un artículo. Opciones de administración de energía y ACPI y desmarque ACPI. También desactive el ahorro de energía de la CPU.

Eso es todo. Si lo desea (y estudia detenidamente la documentación), puede realizar cambios adicionales en la configuración (deshabilitar controladores innecesarios, habilitar subsistemas adicionales, etc.). Ahora guarde la configuración a través de Guardar archivo, cierre el configurador y construya el kernel:

fakeroot make-kpkg -j 3 --initrd --append-to-version=-rt-custom kernel_image kernel_headers #-j 3
sudo update-grub

En mi computadora con un procesador Intel Core i3-550 (3.2 GHz), la ganancia de rendimiento fue bastante notable. Pero lo más importante, cuando se trabaja en LMMS Y kdenlive, el tartamudeo periódico, la desincronización de las pistas de audio y video, así como las congelaciones bajo una gran carga en el disco duro han desaparecido. Conclusión: ¡funciona! Finalmente, describiré dos núcleos modificados que son muy populares en los círculos de Linux:

Núcleo PF- el conjunto de parches más popular del ucraniano Alexander Natalenko (también conocido como post-factum). Este es un conjunto de parches que no están incluidos en el kernel principal, pero brindan una mayor capacidad de respuesta del sistema, brindan un subsistema de hibernación alternativo que es más rápido que el principal y también reducen el uso de memoria utilizando la misma técnica de combinación de páginas. El conjunto incluye:

  • Programador de procesos BFS de Con Kolivas con correcciones adicionales de Alfred Chen;
  • BFQ I/O Scheduler de Paolo Valente, Arianna Avanzini y Mauro Marinoni;
  • el subsistema de hibernación TuxOnIce de Nigel Cunningham;
  • implementación de la misma técnica de fusión de páginas en UKSM por Nai Xia;
  • un parche de Graysky que amplía la lista de procesadores para la optimización del kernel por parte del compilador (el que aplicamos arriba)
Repositorio del núcleo modificado. Sitio oficial .

núcleo zen- el segundo más popular, pero el primero en términos de número de parches. Zen Kernel utiliza una combinación de múltiples proyectos, actualiza el código a través de un repositorio git y tiene algunas cosas específicas de Zen que tienen como objetivo satisfacer la mayoría de las necesidades de los usuarios en un solo núcleo. Algunas características del parche: drm-next, pruebas inalámbricas, selección del programador de CPU (CFS/BFS), programador de E/S BFQ, aufs, unionfs, reiser4, tuxonice, PHC y muchas otras cosas que son excelentes para la optimización de computadoras de escritorio o portátiles. Todo esto está disponible como un solo parche para el núcleo de vainilla. Sitio oficial . repositorio GIT. Paquetes para Debian/Ubuntu.

Para hoy, quizás, todo. Se puede encontrar más información en los enlaces al artículo. Todo lo descrito en el artículo ha sido probado por mí en muchas configuraciones.

Centro(Inglés) núcleo) es sobre lo que se construye todo lo demás. Eso es lo que se llama Linux. Ahora, la palabra Linux en la vida cotidiana se llama el sistema operativo construido sobre él, aunque en el buen sentido se llama GNU / Linux (el kernel de Linux y el software del proyecto GNU, que ha estado en desarrollo durante muchas décadas).

Ubuntu usa un kernel con una gran cantidad de parches, algunos de los cuales agregan características inestables y experimentales.

Cada versión de Ubuntu tiene su propia versión de kernel. Las versiones LTS desde la 10.04 han podido actualizar el kernel a las versiones incluidas en las versiones más recientes.

Versión UbuntuVersión del núcleo
4.10 2.6.9
5.04 2.6.11
5.10 2.6.13
6.06 LTS 2.6.15
6.10 2.6.18
7.04 2.6.19
7.10 2.6.20
8.04 LTS 2.6.24
8.10 2.6.27
9.04 2.6.28
9.10 2.6.31
10.04 LTS 2.6.32
10.10 2.6.35
11.04 2.6.38
11.10 3.0.4
12.04 LTS 3.2
12.10 3.5
13.04 3.8
13.10 3.11
14.04 LTS 3.13
14.10 3.16
15.04 3.19

tenedores

La numeración de la versión del kernel de Ubuntu y la del sitio web kernel.org no coinciden, ya que los desarrolladores de Canonical agregan una versión micro para indicar los parches agregados. Por ejemplo, la versión 3.2.0-23 significaría que el núcleo se basa en la rama 3.2, que tiene 23 parches.

Los siguientes tipos de núcleos son compatibles con el repositorio de Ubuntu:

El kernel generic-pae permite que un sistema de 32 bits use hasta 64 GB de RAM total, asignando no más de 4 GB para las necesidades de un proceso en particular, mientras que un kernel genérico simple funciona con no más de 4 GB de RAM.

El kernel de 64 bits permite direccionar hasta 1 TB de memoria consumida por procesos.

Si necesita actualizar el kernel a una versión principal más nueva (por lo general, esto se debe al hecho de que las nuevas versiones agregan soporte para hardware nuevo y eliminan las regresiones), puede usar el archivo con soporte oficial http://kernel.ubuntu.com/ ~kernel-ppa/línea principal/ .

Compilando el núcleo

Construir el kernel desde la fuente requiere algunas habilidades y conocimientos sobre cómo funciona el sistema operativo.

Antes de comenzar a construir el kernel, debe instalar los siguientes paquetes:

Build-essential fakeroot ncurses-dev libssl-dev

Todas las demás acciones deben realizarse en nombre del superusuario:

sudo su

Obtener el código fuente

El código fuente del kernel utilizado por Ubuntu se puede obtener instalando el paquete linux-source:

apt-get install fuente de linux

Después de la instalación en el directorio /usr/src habrá un archivo llamado linux-fuente-verify_kernels.tar.bz2.

También puede descargar el archivo con el código fuente del kernel desde el sitio kernel.org.

Al descargar el kernel del sitio kernel.org, deberá aplicarle parches

Configuración

Descomprima el archivo resultante y, para mayor comodidad, cree un enlace simbólico al directorio resultante:

cd / usr/ src tar xjf ./ linux-source-3.2.0.tar.bz2 ln -s ./ linux-source-3.2.0 ./ linux cd ./ linux

Para simplificar el proceso de configuración del kernel, puede copiar la configuración del actual.

Recientemente, se lanzan con bastante frecuencia nuevas versiones de kernels. Cada pocos meses hay una versión estable. Bueno, los candidatos de lanzamiento inestables salen aún más a menudo. Linus Torvalds y muchos desarrolladores de todo el mundo trabajan constantemente para mejorar los nuevos núcleos y agregarles más y más funciones.

Con cada nueva versión, el kernel de Linux agrega soporte para varios dispositivos nuevos, como nuevos procesadores, tarjetas de video o incluso pantallas táctiles. Recientemente, el soporte para nuevo hardware ha mejorado mucho. Además, se incluyen nuevos sistemas de archivos en el kernel, se mejora la pila de red, se corrigen errores y fallas.

Si necesita más información sobre los cambios en una versión particular del kernel, consulte su registro de cambios en kernel.org, y en este artículo cubriremos la actualización del kernel de Linux a la última versión. Intentaré no vincular las instrucciones a una versión específica del kernel, los nuevos kernels se lanzan con bastante frecuencia y serán relevantes para cada uno de ellos.

Considere actualizar el kernel de Ubuntu y CentOS. Primero, veamos cómo actualizar el kernel en Ubuntu 16.04.

Primero veamos qué kernel tiene instalado. Para hacer esto, abra una terminal y ejecute:

Por ejemplo, actualmente uso la versión 4.3 y puedo actualizar a la versión más reciente. Los desarrolladores de Ubuntu ya se han asegurado de que sus usuarios no construyan el kernel a mano y creen paquetes deb de la nueva versión del kernel. Se pueden descargar desde el sitio web oficial de Canonical.

Podría haber dado los comandos wget para descargar aquí si se conociera la versión del kernel, pero en nuestro caso sería mejor usar un navegador. Vaya a http://kernel.ubuntu.com/~kernel-ppa/mainline/. Todo lo compilado por el equipo del kernel de Ubuntu está aquí. Los kernels se construyen tanto para distribuciones específicas, con el nombre en clave de la distribución, como generales. Además, los núcleos de Ubuntu 16.10 probablemente funcionarán en 16.04, pero a partir de 9.04 en Ubuntu 16.04 no debe instalar el núcleo.

Desplácese hasta la parte inferior, ahí es donde se encuentran las versiones más nuevas de los núcleos:

Además, en la parte superior hay una carpeta diaria/actual, que contiene las últimas compilaciones nocturnas del kernel. Seleccione la versión de kernel deseada y descargue los dos archivos linux-headers y linux-image para su arquitectura:

Una vez completada la descarga, puede continuar con la instalación. Para hacer esto, ejecute lo siguiente en la terminal:

Navegue a la carpeta con los paquetes de instalación, por ejemplo, ~/Descargas:

Ejecute la instalación:

Si este comando no funcionó, puede ir al otro lado. Instale la utilidad gdebi:

sudo apt-get install gdebi

Luego utilícelo para instalar el kernel:

sudo gdebi linux-headers*.deb linux-image-*.deb

El kernel está instalado, queda por actualizar el gestor de arranque:

sudo update-grub

Ahora puede reiniciar su computadora y ver qué sucedió. Después del reinicio, asegúrese de que la actualización del kernel de Linux a la versión más reciente se haya realizado correctamente:

Como puede ver, el kernel se instaló y ejecutó correctamente. Pero no se apresure a eliminar la versión anterior del kernel, se recomienda tener varias versiones del kernel en el sistema para que, en caso de problemas, pueda arrancar desde la versión anterior que funciona.

Actualización automática del kernel de Linux en Ubuntu

Arriba, vimos cómo instalar manualmente la versión deseada del kernel. Ubuntu solía tener un PPA para compilaciones diarias del kernel, pero ahora está cerrado. Por lo tanto, puede actualizar el kernel solo descargando el paquete deb e instalándolo. Pero todo esto se puede simplificar con un guión especial.

Instalando el script:

cd/tmp
$ git clone git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ bash Ubuntu-Mainline-Kernel-Updater/instalar

Comprobando actualizaciones:

KernelUpdateChecker -r yakkety

La opción -r le permite especificar la rama de distribución para la cual buscar núcleos. Para xenial, los núcleos ya no se construyen, pero los núcleos de la próxima versión funcionarán bien aquí. Además, la opción -no-rc puede indicarle a la utilidad que no use candidatos de lanzamiento, y la opción -v especifica la versión exacta del kernel que se instalará. Si no le importa para qué distribución es el kernel, siempre que sea el último, use la opción --any-release. El script dará el siguiente resultado:

Antes de instalar el kernel, puede ver los detalles abriendo el archivo /tmp/kernel-update:

Aquí podemos ver que se realizó la búsqueda de yakkety y que actualmente está disponible la versión del kernel 4.7-rc6. Podemos instalar:

sudo /tmp/kernel-update

El script nos mostrará la versión del kernel actual, así como la versión del kernel que se instalará, su fecha de compilación y otros detalles. También se le preguntará si necesita mantener un registro de cambios. Luego viene la instalación:

Núcleos antiguos, por si acaso, no elimine (n):

Listo, la actualización del kernel a la versión más reciente está completa, ahora reinicie su computadora (y):

Comprobando si la actualización del kernel de Ubuntu realmente funcionó:

Además, la secuencia de comandos se ha agregado a la carga automática y ahora buscará actualizaciones automáticamente 60 segundos después de iniciar sesión. El acceso directo de carga automática está en el archivo:

vi ~/.config/autostart/KernelUpdate.desktop

Puedes cambiarlo como quieras o eliminarlo. Si desea eliminar el script por completo del sistema, ejecute:

rm ~/.config/autostart/KernelUpdate.desktop
$ sudo rm /usr/local/bin/KernelUpdate(Checker,ScriptGenerator)

no esta descargando

Si ocurrió algún error durante la instalación o si el kernel se actualizó incorrectamente y ahora el sistema no arranca con el nuevo kernel, puede usar el kernel anterior. Además, es posible que el sistema no se inicie si está utilizando un controlador propietario para una tarjeta de video NVIDIA; en este caso, no se apresure a descargar la versión más reciente del kernel, use solo kernels estables, como regla, el soporte para este módulo tiene ya se les ha agregado.

Y para restaurar el sistema, seleccione el elemento Opciones avanzadas para Ubuntu en el menú Grub:

E inicie el kernel en ejecución anterior:

Después de la descarga, queda eliminar el kernel instalado incorrectamente y actualizar Grub nuevamente, sustituir la versión deseada del kernel en lugar de 4.7:

sudo apt remove linux-header-4.7* linux-image-4.7*

sudo update-grub

Su sistema ahora ha vuelto a su estado anterior. Puede intentar instalar una versión anterior del kernel o intentarlo de nuevo.

Actualización del kernel de Linux a 4.4 en CentOS

Y ahora veamos cómo actualizar la última versión del kernel de Linux en CentOS. Las instrucciones se han probado en CentOS 7, pero lo más probable es que funcionen en RedHat 7, Fedora y otras distribuciones similares.

Como regla general, los kernels nuevos no se incluyen en los repositorios oficiales de CentOS, por lo que para obtener la última versión estable, necesitaremos agregar el repositorio ELRepo. Este es un repositorio de paquetes comerciales (Enterprise Linux Packages) y también se mantiene en RedHat y Fedora.

Para agregar un repositorio, siga estos pasos:

Primero necesitas importar la clave:

rpm --importar https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Agregue el repositorio y los componentes necesarios a RHEL/Scientific Linux/CentOS-7:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum instalar yum-plugin-fastestmirror

En Fedora 22 y superior:

La información disponible sobre la construcción del kernel varía mucho, por lo que describiremos la construcción del kernel específicamente para Ubuntu. Intentemos. para que no haya errores en los comandos escritos en este artículo. Al describir el proceso de compilación, no nos detendremos solo en obtener el kernel. Conseguir un kernel que funcione no es suficiente. Para los propietarios de tarjetas nVidia, aquí encontrará una descripción de cómo obtener un sistema con gráficos que funcionen en el nuevo núcleo. Además, los gráficos funcionarán tanto en el núcleo antiguo como en el nuevo.

1. Instalar las fuentes del kernel

Primero necesitamos las fuentes del kernel. Para Ubuntu 7.04 ya están en el repositorio, necesitas encontrar el paquete linux-fuente-residuos(en nuestro caso será Linux-fuente-2.6.20), e instalarlo (todo esto se puede hacer a través de sináptico). Después de instalar este pacto, en el directorio /usr/src un archivo llamado linux-fuente-2-6-20.tar.bz2.

lo hacemos bajo sudo dominio

chmod 777 /usr/src

Iniciar sesión como usuario habitual /usr/src y descomprimir este archivo

tar -jxvf linux-source-2-6-20.tar.bz2

Aparecerá el directorio de origen. /usr/src/linux-fuente-2-6-20. Eliminamos el archivo comprimido (se necesitarán derechos de root).

2. Instalación de paquetes adjuntos

Se necesitan más paquetes para construir paquete kernel, libncurses5-dev, raíz falsa. Instalarlos a través de sináptico. Por supuesto, también se debe instalar un compilador en el sistema. CCG Y desarrollador- paquetes para bibliotecas del sistema, como libc6-dev.

3. Crear un archivo de configuración del kernel

Ahora necesitamos la configuración del kernel con la que se construyó el kernel de ubunta. ir al catálogo /bota, y vemos un archivo como config-2.6.20-15-genérico. Él es lo que necesitamos. Cópielo en el directorio de origen /usr/src/linux-fuente-2-6-20 y cambiarle el nombre a .config. Tenga en cuenta que el nombre del archivo comienza con un punto, esto no es un error tipográfico.

Ahora, estando en el directorio /usr/src/linux-fuente-2-6-20, damos el comando como un usuario normal

esto iniciará la interfaz de texto de configuración del kernel. También puede ejecutar la configuración en modo gráfico

En ambos casos, se abrirá una interfaz con casillas de verificación, a través de la cual configuramos el kernel. Parece que el archivo se abre de forma predeterminada .config, que actualmente contiene la configuración estándar del kernel de Ubuntu.

¿Qué desea configurar? Piense por sí mismo, hay mucha documentación en ruso sobre este tema en Internet. El propósito de este artículo es solo describir los pasos necesarios para compilar el kernel de Ubuntu.

Al final de la configuración, seleccione el elemento "Guardar configuración de configuración", especifique un nombre de archivo que sea diferente de .config, Por ejemplo .config_my_01. Salimos.

Ahora renombrar .config V .config_ubuntu. Y obtienes dos archivos: .config_ubuntu Y .config_my_01. Puede ver las diferencias entre el valor predeterminado y su configuración de esta manera

diferencia .config .config_my_01

Ahora copia tu configuración .config_my_01 bajo el nombre .config. Aquellos. obtendrá 3 archivos de configuración. La compilación usará el archivo .config. archivos .config_ubuntu Y .config_my_01 seremos ayudados en el futuro para una nueva compilación. Esto es solo en caso de que el nuevo núcleo resulte inoperable o tenga errores.

4. Compilación

Antes de compilar, asegúrese de verificar la disponibilidad de espacio libre (en la partición donde se encuentran las fuentes). Sería bueno marcar 4-5 GB(!) en reserva. Al compilar, el tamaño del directorio de origen puede crecer hasta 3.5Gb. Puedes comprobar el espacio libre con el comando

Ahora, estando bajo un usuario normal en el directorio /usr/src/linux-fuente-2-6-20, damos un comando que eliminará en la fuente los archivos de objetos compilados por alguien, que quedaron de la compilación anterior y estaban en el archivo.

Luego a través de sudo obtenemos los derechos de root y comenzamos la compilación.

make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers

donde en lugar de " miconstrucción.1.0" escribe lo que necesites. Se permiten letras, números y puntos en inglés. No se permiten guiones bajos ni guiones.

En realidad, de manera amistosa, la compilación del kernel debe hacerse bajo los derechos de un usuario regular. Formalmente, crear un binario del núcleo no es diferente de compilar un binario de cualquier otro programa. Pero hacemos la compilación no en modo manual (a través de comandos como hacer módulos bzImage), y en semiautomático (mediante hacer-kpkg). Y este programa, después de compilar, ejecutará el programa desde debajo de sí mismo. dpkg-deb Para obtener debutante paquete del núcleo. En este punto, se requieren derechos de root.

Ahora veamos qué hace el comando anterior. Comienza a compilar el kernel y luego crea debutante-paquete con nombre linux-image-version.deb, que contendrá el kernel binario y los módulos del kernel (esto se hará gracias al objetivo imagen_del_kernel). También se creará debutante-paquete con nombre linux-headers-version.deb, contendrá los archivos de encabezado del núcleo (esto se hará gracias al objetivo kernel_headers). Los paquetes resultantes estarán en el directorio /usr/src.

Vea qué archivos hay en estos debutante-paquetes, puede ser en conquistador(en Kubuntu) haciendo clic con el botón derecho en el que le interese debutante-archivo y seleccionando " Menú del paquete Kubuntu" -> "Mostrar información del paquete". La información se formará con bastante lentitud, alrededor de un minuto, ya que los paquetes son grandes.

5. Instalar el núcleo

Ahora instale el kernel. Estar con derechos de superusuario en el directorio /usr/src, da la orden

dpkg -i linux-image-version.deb

después de lo cual su kernel (archivo vmlinuz-2.6.20.3-ubuntu1) se colocará en el directorio /bota(todos los núcleos anteriores tampoco irán a ningún lado, permanecerán en sus lugares), y en el directorio /lib/modulos, al lado del directorio con los módulos regulares del núcleo (en Ubuntu 7.04 llamado /lib/modules/2.6.20-15-generic) aparecerá un directorio con los módulos de tu nuevo kernel (en nuestro caso será /lib/modules/2.6.20.3-ubuntu1). El nuevo núcleo se escribirá automáticamente en /boot/grub/menu.lst.

En principio, ya puedes reiniciar, y en la pantalla de carga Comida aparecerá un nuevo elemento con su núcleo. El nuevo núcleo aparecerá en la parte superior de la lista. Pero no tenemos prisa, pero daremos otra orden.

dpkg -i linux-headers-version.deb

que instalará los encabezados del núcleo en el directorio /usr/src/linux-headers-versión, en nuestro caso será un directorio /usr/src/linux-headers-2.6.20.3-ubuntu1. Necesitaremos estos encabezados, por ejemplo, para recompilar controladores nVidia para el nuevo núcleo.

6. Reiniciar

Reiniciar, y en el menú Comida verá dos elementos nuevos: arranque normal con su kernel y arranque en modo de consola mínimo. Elige el primer elemento. Si el núcleo no cayera inmediatamente en Panico kernel, eso es una buena señal. Espere a que finalice la descarga. Si tiene suerte, Ubuntu se iniciará en modo gráfico y mostrará un indicador de inicio de sesión gráfico. En este caso, no se puede seguir leyendo.

Pero para los usuarios de tarjetas nVidia, que usaron controladores instalados a través del "Administrador de controladores propietarios" o usaron controladores del paquete nvidia-glx(o allí nvidia-glx-nuevo), ¡le doy una garantía del 99% de que no tendrá suerte! ¡Y no verá gráficos bajo el nuevo núcleo!

7. Instalación de controladores nVidia desde nvidia.com

Para que las x funcionen con el nuevo kernel, lo primero que se le ocurre es instalar los controladores de nvidia.com con el nuevo kernel. ¡Y esta es la decisión equivocada! Tan pronto como se instale firewood bajo el nuevo kernel, los gráficos en su antiguo kernel probado dejarán de funcionar (debido al hecho de que los archivos del controlador nVidia están estrechamente vinculados a la versión y el nombre del kernel). Y dado que aún no ha probado realmente el rendimiento del nuevo kernel, puede obtener un sistema "con un kernel nativo, pero sin gráficos" y "un kernel con errores, pero con gráficos". No creo que a nadie le guste esta situación.

En el popular artículo "Física nuclear para amas de casa", hay recomendaciones sobre cómo obtener gráficos debajo de ambos núcleos. Se propone la siguiente forma: tener listo el paquete de instalación de firewood de nvidia.com, y si desea iniciar con un kernel específico, primero debe iniciar en el modo de consola de este kernel, instalar firewood y luego iniciar normalmente . No creo que nadie esté contento con este enfoque tampoco.

Nos aseguraremos de que los gráficos funcionen tanto en el kernel antiguo como en el kernel nuevo, y para ello no será necesario ejecutar la instalación (compilación) de leña cada vez. Para hacer esto, solo necesitaremos cumplir una condición: que la leña gráfica debajo de diferentes núcleos sea de la misma versión.

Breve plan de acción- ponemos leña del sitio nvidia.com para el núcleo estándar en su totalidad. Nos aseguramos de que funcionen. Luego, desde el mismo paquete, instalamos leña para un núcleo hecho a sí mismo, pero en el modo "solo módulo de gráficos".

8. Instalación de controladores nVidia para un núcleo normal

¡Todo lo que se escribe a continuación también es adecuado para aquellos que acaban de decidir instalar nuevos controladores nVidia para el kernel estándar!

Descargando desde el sitio nvidia.com leña bajo linux. Descargué la versión de leña. 96.43 . el archivo se llama nvidia-linux-x86-96.43.01-pkg1.run. Pero puede probar otras versiones estables que están presentes en el sitio. nVidia.

Para instalar, crear en el directorio /usr/src subdirectorio llamado nvidia, copie este archivo allí. Estando en este subdirectorio, le damos permiso al archivo para que se ejecute

chmod 777 NVIDIA-Linux-x86-96.43.01-pkg1.run

Todo, en este trabajo en la interfaz gráfica termina por un tiempo. Antes de salir del modo gráfico, ejecute sináptico y asegúrate de tener

  • aptitud. Este es un contenedor frontal sobre el administrador de paquetes para el modo de texto.
  • linux-encabezados-2.6.20-15. Estos son los archivos de encabezado (headers) de su núcleo estándar.
  • linux-headers-2.6.20-15-genérico. No diré exactamente para qué diablos es este paquete, pero déjalo ser.

Un buen consejo es imprimir el texto de este artículo en papel o guardarlo en un archivo de texto que se pueda ver en modo texto.

Reiniciamos en el modo de consola de un núcleo regular (en Comida hay tal punto). EN ubuntu Obtendrá automáticamente derechos de root, ni siquiera necesita ingresar una contraseña. Ahora tenemos que quitar la madera. nVidia que están en el sistema. Si instaló leña a través del "Administrador de controladores propietarios" (o instalando el paquete nvidia-glx o nvidia-glx-nuevo), entonces el paquete nvidia-glx/nvidia-glx-nuevo debe eliminarse del sistema, y ​​no solo desinstalarse, sino desinstalarse en el modo purga.

Soy un usuario bastante tonto, y en lugar de lidiar con las opciones dpkg, en la consola uso el programa aptitud. Marca un equipo

y te encontrarás en un caparazón, que recuerda a sináptico. Habrá una pista clave en la parte superior. Para acceder al menú, presione ctrl+t(incómodo, pero qué hacer). En el menú
flechas y llaves Ingresar busque y seleccione " encontrar". Escribimos la cadena de búsqueda - nvidia-glx. La luz caerá sobre el paquete deseado. Llamamos al menú nuevamente y encontramos el elemento " Purga". Haga clic en él, y el paquete en el que se encuentra el flash se marcará para la desinstalación completa de todos sus archivos del sistema (el paquete en sí permanecerá en el caché, se puede reinstalar si es necesario). Aparecerá una sugerencia a continuación - " e - Examinar, ! - eliminar". Prensa " mi" - y ver qué paquetes se eliminarán. Si de nvidia-glx paquetes dependen de ellos, también serán desinstalados. Esto suele ser un paquete. nvidia-glx-dev. Está bien si él también se va.

Ahora presionamos " ! "(para los especialmente dotados - turno+1), por la presente estamos de acuerdo con nuestros cambios. Luego presionamos " q" (salir). Al salir, el programa eliminará los paquetes que marcamos.

Ahora es un momento así. ahora estamos al nivel inicio 1(solo consola, muchos servicios no se están ejecutando). Si ejecuta la instalación del controlador nVidia, entonces ella jurará que es posible que no hayas iniciado el servicio desarrollos, que por lo general comienza en el nivel 3 . Por lo tanto, damos la orden

telinit 3

y el sistema terminará de cargar los servicios necesarios, y al mismo tiempo saldrá del modo monousuario (aparecerán varias consolas que se pueden conmutar con las teclas ALT+F1...ALT+F6). Para seguir trabajando, solo necesitamos dos consolas. Por cierto, el sistema intentará cargar los gráficos, pero no tendrá éxito porque. acabamos de desinstalar el controlador. Y ella se quedará 7 ª consola con una pantalla en blanco. No entres en pánico, empuja ALT+F1, vemos la primera consola, ingresamos el inicio de sesión allí, la contraseña es la misma que en la entrada gráfica (solo después del inicio de sesión y la contraseña presionamos Ingresar pero no PESTAÑA).

Después de iniciar sesión, llamamos mc bajo superusuario

ir al catálogo /usr/src/nvidia

./NVIDIA-Linux-x86-96.43.01-pkg1.run -e

Opción " -mi" nos permitirá ver un informe de acciones y ver archivos en conflicto. Vamos a iniciar la instalación. Estamos de acuerdo con la licencia. ftp nvidia Hablamos DE ACUERDO que los módulos serán creados por nosotros. Si tiene preguntas sobre cómo ingresar rutas, simplemente haga clic en Ingresar.

Al final, antes de la instalación en sí, se mostrará una lista de archivos que se instalarán. Y al principio de esta lista (si se encuentra) aparecerá archivos en conflicto. Sera escrito " archivo de respaldo ..."- esto es lo que son. En mi caso, estos eran archivos

/usr/lib/xorg/modules/extensions/libGLcore.so
/usr/lib/xorg/modules/extensions/libglx.so
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/lib/modules/2.6.20-15-generic/volatile/nvidia.ko
/usr/include/GL/glext.h
/usr/include/gl/gl.h
/usr/include/GL/glxext.h
/usr/include/GL/glx.h

Estos son los archivos del paquete. módulos restringidos de nvidia. El hecho es que si simplemente elimina este paquete, junto con estos archivos, todos los archivos para nVidia- conjuntos de chips ( nVidia después de todo, no solo fabrica tarjetas de video). También deberá eliminar los paquetes dependientes. Linux-módulos-restringidos-2.6.20-15-genérico, Linux-módulos-restringidos-genérico Y Linux genérico. Por lo tanto, no es deseable eliminar este paquete. Por lo tanto, lo haremos de otra manera.

Tan pronto como vea dicha lista, inicie sesión en la segunda consola (transición - ALT+F2), correr

y transfiera metódicamente estos archivos en conflicto a algún lugar a un directorio separado en el directorio de inicio, consultando la lista en la primera consola. ¿Por qué mover y no borrar? El hecho es que los nombres de archivo en Linux son "legibles por humanos", y puede cometer un error fácilmente y eliminar el archivo incorrecto.

Después de eliminar todos los archivos destinados a Respaldo, vuelve a la primera consola. Cancelar instalación ( ctrl+c) y reinícielo. Si " archivo de respaldo ..." ya no estará, luego complete la instalación. Todo debería funcionar sin problemas. Puede estar de acuerdo con la solución xorg.conf, sigue creando un archivo de copia de seguridad.

¡Ahora atención!¡Lo más importante, en este momento no se sobrecargue! Y ve al archivo /etc/default/linux-restricted-modules-common y agregar a la opción MÓDULOS_DESHABILITADOS módulos Nevada. Y nvidia_nuevo. yo lo tengo hecho asi

DISABLED_MODULES="nv nvidia_nuevo"

Si esto no se hace, la próxima vez que cargue el archivo (¡que eliminó!) /lib/modules/2.6.20-15-generic/volatile/nvidia.ko lo hará automáticamente restaurado del paquete módulos restringidos de nvidia. Y su archivo que compiló cuando instaló los controladores se llama /lib/modules/2.6.20-15-generic/kernel/drivers/video/nvidia.ko. Y así, al inicio ksov se encontrará el primer archivo. Y no llegará a tu archivo. Y las X no podrán arrancar.

Reiniciamos en el kernel estándar en modo completo. Si todo se hace correctamente, X se iniciará. Alégrate, al menos todavía tienes un sistema de trabajo.

9. Instalación de controladores nVidia para un kernel personalizado

Ahora queda el último paso: hacer que los gráficos funcionen en el nuevo núcleo. Todo es bastante simple aquí. Arrancamos en el modo de consola del núcleo casero. damos una orden

inicie sesión y en la primera consola ejecute

ir al catálogo /usr/src/nvidia y empieza a instalar leña con el comando

./NVIDIA-Linux-x86-96.43.01-pkg1.run -Ke

Opciones " -ke" le permite construir solo el módulo de gráficos nvidia.ko bajo el núcleo actual (y el archivo se colocará en el directorio /lib/modules/nombre_del_kernel_actual/kernel/drivers). Ningún otro archivo compartido, como el que se colocaría en /usr/lib... ya que al compilar con la opción "-e", no se creará.

Al igual que al compilar en el kernel estándar, coincidimos con las rutas presionando Ingresar. Llegamos a la pantalla donde se listarán los archivos que se instalarán. Si hay archivos en conflicto al principio de esta lista " archivo de respaldo ...", cambie a la consola adyacente y elimine (transfiera) estos archivos.

Después de eliminar los archivos en conflicto, en la primera consola, cancele la instalación ( ctrl+c) y ejecutarlo de nuevo (con la opción " -ke"por supuesto). Una vez completada la instalación, reinicie seleccionando en el menú Comida a modo completo con su kernel.

X debería comenzar. Puede regocijarse por segunda vez: tiene un sistema con un kernel personalizado y gráficos que funcionan.

En cualquier momento, ahora puede arrancar con el kernel deseado y los gráficos deberían funcionar en todas partes. Eso es todo.