Manual de Gentoo: X86/Instalación/Núcleo

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:X86/Installation/Kernel and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎русский • ‎українська • ‎中文(中国大陆)‎
X86 Manual
Instalación
Acerca de la instalación
Elegir los medios
Configurar la red
Preparar los discos
Instalar el stage3
Instalar el sistema base
Configurar el núcleo
Configurar el sistema
Instalar las herramientas
Configurar el cargador de arranque
Terminar
Trabajar con Gentoo
Introducción a Portage
Ajustes USE
Características de Portage
Sistema de guiones de inicio
Variables de entorno
Trabajar con Portage
Ficheros y directorios
Variables
Mezclar ramas de software
Herramientas adicionales
Repositorios personalizados de paquetes
Características avanzadas
Configuración de la red
Comenzar
Configuración avanzada
Configuración de red modular
Conexión inalámbrica
Añadir funcionalidad
Gestión dinámica


Instalar las fuentes

El eje alrededor del cual se construyen todas las distribuciones es el núcleo Linux. Es la capa entre los programas de usuario y el hardware del sistema. Gentoo proporciona a sus usuarios varias fuentes de núcleo. Una lista completa está disponible en la página resumen del Núcleo.

Para sistemas basados en x86 Gentoo recomienda el paquete sys-kernel/gentoo-sources.

Elija sus fuentes del núcleo e instálelas usando emerge.

root #emerge --ask sys-kernel/gentoo-sources

Esto instalará las fuentes del núcleo Linux en /usr/src/ junto con un enlace simbólico llamado linux que estará apuntando a las fuentes del núcleo instaladas:

root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-3.16.5-gentoo

Es el momento de configurar y compilar las fuentes del núcleo. Hay dos maneras de hacer esto:

  1. Se configura y construye el núcleo manualmente.
  2. Se utiliza una herramienta llamada genkernel para construir e instalar automáticamente el núcleo Linux.

Explicaremos la configuración manual como la opción por defecto ya que es la mejor manera para optimizar un entorno concreto.

Por defecto: Configuración manual

Introducción

Configurar manualmente un núcleo frecuentemente es considerado el procedimiento más difícil que tiene que realizar un usuario de Linux. Nada más lejos de la realidad, después de configurar un par de núcleos nadie recuerda lo difícil que era ;)

Sin embargo, una cosa sí es cierta: es vital conocer el sistema para configurar manualmente un núcleo. La mayor cantidad de información se puede obtener instalando sys-apps/pciutils que contiene la orden lspci:

root #emerge --ask sys-apps/pciutils
Nota
Dentro de la jaula chroot, se pueden ignorar con tranquilidad las advertencias sobre pcilib (como pcilib: cannot open /sys/bus/pci/devices) que pudiera mostrar lspci.

Otra fuente de información sobre nuestro sistema consiste en ejecutar lsmod para ver los módulos del nucleo que ha usado el CD de instalación y tener así buenas indicaciones sobre qué habilitar.

Ahora vaya al directorio de las fuentes del núcleo y ejecute make menuconfig. Esto generará una pantalla de configuración basada en menús.

root #cd /usr/src/linux
root #make menuconfig

La configuración del núcleo Linux tiene muchas, muchas secciones. Veamos primero una lista con algunas opciones que deben ser activadas (en caso contrario Gentoo no funcionará o no funcionará adecuadamente sin ajustes adicionales). También tenemos la Guía de configuración del núcleo Gentoo en la wiki de Gentoo que también podría ayudar.

Activar opciones necesarias

Asegúrese que todos los controladores vitales para el arranque del sistema (como pueden ser los de SCSI, etc.) están compilados dentro del núcleo y no como módulos o, de lo contrario, su sistema no será capaz de arrancar correctamente.

A continuación seleccione con exactitud el tipo de procesador. Se recomienda habilitar las funcionalidades MCE (si están disponibles) de manera que los usuarios puedan ser informados de cualquier problema en este hardware. En algunas arquitecturas (como x86_64) estos errores no son presentados a través de dmesg sino de /dev/mcelog. Para ello se requiere el paquete app-admin/mcelog.

A continuación seleccione Maintain a devtmpfs file system to mount at /dev de modo que los archivos de dispositivo críticos estén disponibles cuanto antes en el proceso de inicio (CONFIG_DEVTMPFS y CONFIG_DEVTMPFS_MOUNT):

KERNEL Habilitar soporte devtmpfst
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

Verificar que se ha activado el soporte de disco SCSI (CONFIG_BLK_DEV_SD):

KERNEL Habilitar el soporte de disco SCSI
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

Vaya ahora a File Systems y seleccione el soporte para los sistemas de archivos que vaya a utilizar. No compile como módulo el sistema de ficheros que vaya a utilizar para el raíz, de lo contrario su sistema Gentoo no podrá montar la partición raíz. También deberá seleccionar Virtual memory y /proc file system. Selecionar una o más de las siguientes opciones según las necesidades del sistema (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS y CONFIG_TMPFS):

KERNEL Seleccionar los sistemas de archivos necesarios
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

Si está usando PPPoE para conectarse a Internet, o está usando un módem telefónico, habilite las siguientes opciones (CONFIG_PPP, CONFIG_PPP_ASYNC y CONFIG_PPP_SYNC_TTY):

KERNEL Seleccionar los controladores PPPoE necesarios
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Las dos opciones de compresión no están de más aunque no son necesarias, como tampoco lo es la opción PPP sobre Ethernet, que sólo podría utilizarse cuando se configure un núcleo en modo PPPoE.

No olvide incluir el soporte en el núcleo para su tarjeta de red (Ethernet o inalámbrica).

Muchos sistemas también tienen varios núcleos a su disposición, así que es importánte activar Symmetric multi-processing support (CONFIG_SMP):

KERNEL Activar el soporte SMP
Processor type and features  --->
  [*] Symmetric multi-processing support
Nota
En sistemas multi-núcleo, cada núcleo cuenta como un procesador.

Si utiliza dispositivos de entrada USB (como un teclado o un ratón) u otros, no olvide activarlos también (CONFIG_HID_GENERIC y CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):

KERNEL Activar soporte para dispositivos de entrada USB
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support



Configuración del núcleo específica para la arquitectura

Asegúrese de seleccionar la emulación IA32 si desea ejecutar programas de 32 bits (CONFIG_IA32_EMULATION). Gentoo instala por defecto un sistema multilib (procesado indistinto 32 bits/64 bits) de modo que, a no ser que se use un perfil no-multilib, está opción es necesaria.

KERNEL Seleccionar los tipos y las características del procesador
Processor type and features  --->
   [ ] Machine Check / overheating reporting 
   [ ]   Intel MCE Features
   [ ]   AMD MCE Features
   Processor family (AMD-Opteron/Athlon64)  --->
      ( ) Opteron/Athlon64/Hammer/K8
      ( ) Intel P4 / older Netburst based Xeon
      ( ) Core 2/newer Xeon
      ( ) Intel Atom
      ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

Habilite el soporte de etiquetado de particiones GPT si se utilizó previamente durante el particionado del disco (CONFIG_PARTITION_ADVANCED and CONFIG_EFI_PARTITION):

KERNEL Habilitar el soporte para GPT
-*- Enable the block layer --->
   Partition Types --->
      [*] Advanced partition selection
      [*] EFI GUID Partition support

Habilite el soporte para el cargador EFI y las variables EFI en el núcleo Linux si se usa UEFI para arrancar el sistema (CONFIG_EFI, CONFIG_EFI_STUB, CONFIG_EFI_MIXED, and CONFIG_EFI_VARS):

KERNEL Habilitar el soporte para UEFI
Processor type and features  --->
    [*] EFI runtime service support 
    [*]   EFI stub support
    [*]     EFI mixed-mode support
 
Firmware Drivers  --->
    EFI (Extensible Firmware Interface) Support  --->
        <*> EFI Variable Support via sysfs

Compilar e instalar

Una vez hecha la configuración, es hora de compilar e instalar el núcleo. Salga del configurador e inicie el proceso de compilación:

root #make && make modules_install
Nota
Es posible permitir compilaciones paralelas usando make -jX siendo X un número entero de compilaciones paralelas que se le permiten lanzar al proceso de construcción. Esto es similar a las instrucciones anteriores sobre /etc/portage/make.conf con la variable MAKEOPTS.

Cuando finalice la compilación del núcleo copie su archivo imagen a /boot/. Se hará con la orden make install:

root #make install

Esto copiará la imagen del núcleo en /boot/ junto con el archivo System.map y el archivo de configuración del núcleo.



(Opcional) Construir un sistema de archivos de inicio en memoria -Initramfs-

En ciertos casos es necesario construir un initramfs - un sistema de archivos inicial basado en memoria. El caso mas común se da cuando partes importantes del sistema de archivos (como /usr/ o /var/) están en particiones separadas. Con un initramfs, estas particiones pueden ser montadas utilizando las herramientas disponibles dentro del initramfs.

Sin un initramfs, hay un gran riesgo de que el sistema no se inicie de forma correcta ya que las herramientas responsables de montar los sistemas de archivos necesitan información que se encuentra en esos mismos sistemas de archivos. Un initramfs obtendrá los archivos necesarios y los pondrá en otro archivo que se utiliza una vez se inicie el núcleo, pero antes de que el control se ceda a la herramienta init. Los guiones en el initramfs se asegurarán de que las particiones se han montado correctamente antes de que el sistema continúe con su inicio.

Para instalar un initramfs, en primer lugar instale sys-kernel/genkernel, a continuación genere el initramfs:

root #emerge --ask sys-kernel/genkernel
root #genkernel --install initramfs

Para habilitar soporte específico en initramfs, tal como LVM o RAID, añada las opciones apropiada a genkernel. Lea genkernel --help para obtener más información. En el ejemplo mostrado a continuación se ha habilitado el soporte para LVM y el software para RAID (mdadm):

root #genkernel --lvm --mdadm --install initramfs

El initramfs se almacenará en /boot/. Puede encontrar este archivo simplemente listando aquéllos ficheros que comienzan por initramfs:

root #ls /boot/initramfs*

Ahora continúe con Módulos del núcleo.

Alternativa: Usar genkernel

Si la configuración manual parece demasiado complicada, entonces se recomienda usar genkernel. La configuración y construcción del núcleo se hará de forma automática.

La herramienta genkernel trabaja configurando un núcleo prácticamente idéntico al núcleo del CD de instalación. Esto significa que cuando use genkernel para construir el núcleo, el sistema normalmente detectará todo su hardware durante el proceso de arranque, tal como lo hace el CD de instalación. Debido a que genkernel no requiere ninguna configuración manual del núcleo, es una solución ideal para aquellos usuarios que no se sienten cómodos compilando sus propios núcleos.

Ahora, veamos como usar genkernel. Primero, haga emerge al ebuild de sys-kernel/genkernel:

root #emerge --ask sys-kernel/genkernel

A continuación, edite el fichero /etc/fstab de modo que la línea que contiene /boot/ en el segundo campo tenga el primer campo apuntando al dispositivo correcto. Si se sigue el ejemplo de particionamiento del manual, entonces este dispositivo es, seguramente /dev/sda2 con un sistema de archivos ext2. Esto haría que la línea en el archivo tuviera el siguiente aspecto:

root #nano -w /etc/fstab
ARCHIVO /etc/fstabConfiguración del punto de montaje /boot
/dev/sda2	/boot	ext2	defaults	0 2
Nota
/etc/fstab será configurado de nuevo mas adelante en la instalación. Es necesario configurar ahora el valor correcto para /boot ya que la aplicación genkernel la tiene en cuenta.

Ahora, compile las fuentes del núcleo ejecutando genkernel all. Tenga en cuenta que, dado que genkernel compila un núcleo que soporta casi todo el hardware, ¡esta compilación tardará un rato en terminar!

Nota
Si su partición de arranque no usa como sistema de archivos ext2 o ext3, podría ser necesario configurar manualmente su núcleo con genkernel --menuconfig all y agregar soporte para su sistema de archivos dentro del núcleo (es decir, no como módulo). Los usuarios de LVM2 probablemente querrán añadir también el argumento --lvm.
root #genkernel all

Una vez que genkernel haya terminado, un núcleo, un conjunto completo de módulos y un disco de inicio en ram (initramfs) se habrán creado. Usaremos el núcleo e initramfs para configurar un gestor de arranque más tarde en este documento. Anote los nombres del núcleo y de initramfs ya que los necesitará cuando edite el archivo de configuración del gestor de arranque. El initramfs se iniciará inmediatamente después del arranque para realizar la autodetección de hardware (igual que en el CD de instalación) antes del inicio del sistema "real".

root #ls /boot/kernel* /boot/initramfs*

Módulos del núcleo

Configurar los módulos

Escriba una lista de los módulos que quiera cargar automáticamente en /etc/conf.d/modules. También puede agregar opciones adicionales para los módulos si fuera necesario.

Para ver todos los módulos disponibles, ejecute la siguiente orden find. No olvide sustituir "<versión del núcleo>" por la versión del núcleo que acaba de compilar:

root #find /lib/modules/<versión del núcleo>/ -type f -iname '*.o' -or -iname '*.ko' | less

Por ejemplo, para cargar automáticamente el módulo 3c59x.ko (que es un controlador para una tarjeta de red específica de la familia 3Com), edite el archivo /etc/conf.d/modules y escriba el nombre del módulo.

root #nano -w /etc/conf.d/modules
modules="3c59x"

Continúe la instalación con Configurar el sistema.

Opcional: Instalar firmware

Algunos controladores (drivers) requieren que haya un firmware instalado previamente para poder hacer su trabajo. A menudo ocurre con las interfaces de red, especialmente con las de redes inalámbricas. La mayoría del firmware está agrupado en sys-kernel/linux-firmware:

root #emerge --ask sys-kernel/linux-firmware