Manuales Gentoo Linux/x86
Contenido:
-
Instalar Gentoo
En esta parte aprenderá cómo instalar Gentoo en su sistema.
-
Acerca de la instalación Gentoo Linux
Este capítulo presenta el método de instalación documentado en este manual.
-
Escoger el medio de instalación adecuado
Se puede instalar Gentoo de muchas maneras diferentes. Este capítulo
explica cómo instalar Gentoo usando el CD de Instalación mínimo.
-
Configuración de su red
Para poder bajar las fuentes más actuales, debe configurar la red.
-
Preparar los discos
Para poder instalar Gentoo, deberá crear las particiones
necesarias. Este capítulo describe como particionar un disco para uso
futuro.
-
Instalar los archivos de instalación Gentoo
Las instalaciones Gentoo funcionan con un archivo stage3. En
este capítulo describimos como descomprimir el archivo stage3 y
configurar Portage.
-
Instalar el sistema base de Gentoo
Luego de instalar y configurar el stage3, el resultado eventual es que
tiene un sistema base Gentoo a su disposición. Este capítulo describe
cómo progresar hacia este estado.
-
Configurar el núcleo
El núcleo Linux es el eje de cada distribución. Este capítulo explica
cómo configurarlo.
-
Configurar su sistema
Hará falta modificar algunos archivos importantes de configuración. En
este capítulo pasaremos revista a estos archivos y explicaremos como
proceder.
-
Instalar herramientas necesarias para el sistema
Tal como hemos mencionado anteriormente, Gentoo se trata de poder
escoger. En este capítulo ayudaremos a escoger e instalar algunas
herramientas importantes.
-
Configurar el gestor de arranque
Existen varios gestores de arranque para la arquitectura x86. Cada uno
tiene su propia configuración. Procederemos paso a paso al configurar
el gestor de arranque según sus necesidades.
-
Finalizar su instalación Gentoo
Estamos casi listos. Crearemos uno (o más) usuarios para el sistema.
-
¿Y ahora qué?
Y ahora que tenemos un sistema Gentoo, ¿qué sigue?
-
Trabajar con Gentoo
Aprenda cómo trabajar con Gentoo: instalación de software,
configuración de variables, cambiar el comportamiento del sistema
Portage, etc.
-
Introducción al sistema Portage
Este capítulo explica los pasos "sencillos" que un usuario
definitivamente necesita saber para mantener el software en su
sistema.
-
Los parámetros USE
Los parámetros USE son un aspecto muy importante de Gentoo. En este
capítulo, aprenderá a trabajar con ellos y entender cómo los
parámetros USE interactúan con su sistema.
-
Características de Portage
Descubra las características de Portage, como el soporte para la
compilación distribuida, ccache y más.
-
Guiones de inicio
Gentoo usa un formato especial de guiones de inicio, que, entre otras
características permite decisiones basadas en dependencias y guiones
virtuales. Este capítulo explica todos estos aspectos y explica cómo
trabajar con estos guiones.
-
Variables de entorno
Con Gentoo puede fácilmente manejar las variables de entorno del
sistema. Este capítulo explica como hacerlo, además de describir las
variables usadas más frecuentemente.
-
Trabajar con Portage
"Trabajar con Portage" cubre en profundidad la herramienta de manejo
de software de Gentoo, el sistema Portage.
-
Archivos y directorios
Una vez que quiera conocer a Portage en profundidad, hará falta saber
donde almacena sus archivos y datos.
-
Configuración por medio de variables
Portage es completamente configurable por medio de diversas variables
que pueden ajustarse en un archivo de configuración o como variable de
entorno.
-
Mezcla de ramales de software
Gentoo permite el uso de software en distintos ramales, dependiendo de
su estabilidad o de su soporte por arquitectura. "Mezcla de ramales de
software" informa como estos estos pueden ser configurados y como
redefinir esta separación de manera individual.
-
Herramientas adicionales de portage
Portage trae algunas herramientas adicionales que sirven para mejorar
su experiencia con Gentoo aún más. Siga adelante para descubrir como
usar dispatch-conf y otras herramientas.
-
Divergir del árbol oficial
"Divergiendo del árbol oficial" proporciona algunos trucos acerca de
como usar su propio árbol Portage, como sincronizar solo las
categorías que le interesa, inyección de paquetes y más.
-
Características avanzadas de Portage
A medida que transcurre el tiempo, Portage evoluciona y madura cada
vez más. Continuamente se agrega funcionalidad adicional - en gran parte
dirigida hacia usuarios avanzados. Esta sección detallará algunas de
estas características específicas.
-
Configuración de Redes en Gentoo
Una guía amplia para trabajar con redes en Gentoo.
-
Iniciándonos
Esta es una guía para poner a funcionar rápidamente el interfaz de red
en la mayoría de situaciones comunes.
-
Configuración Avanzada
Aquí aprenderemos como funciona la configuración. Debe conocerlo
antes de aprender sobre redes modulares.
-
Trabajo Modular con Redes
Gentoo permite un trabajo flexible con la red - aquí explicamos como
escoger diferentes clientes DHCP, configurar la unión de interfaces,
hacer puentes, redes virtuales (VLANs) y más.
-
Redes Inalámbricas
Las redes inalámbricas pueden ser truculentas. ¡Esperamos ponerlas a
funcionar!
-
Agregar Funcionalidad
Si quiere aventurarse, puede agregar sus propias funciones para
trabajar con redes.
-
Manejo de Redes
Para usuarios de computadores portátiles o los que mudan su computador
de red en red.
A. Instalar Gentoo
1. Acerca de la instalación Gentoo Linux
1.a. Introducción
¡Bienvenido!
Primero de todo, bienvenido/a a Gentoo. Está a punto de entrar en
un mundo de flexibilidad y rendimiento. Gentoo es la flexibilidad en sí.
Cuando instalas Gentoo, esto queda claro varias veces, puede elegir
cuánto quieres compilar tu mismo, cómo instalar Gentoo, que gestor de
registro prefieres, etc.
Gentoo es una metadistribución moderna, rápida, con un diseño limpio y
flexible. Gentoo está hecha alrededor del software libre y no oculta a sus
usuarios qué hay bajo la alfombra. Portage, el sistema de mantenimiento
de paquetes que usa Gentoo, está escrito en Python, por lo que el código
fuente es fácil de visualizar y modificar. El sistema de paquetes de Gentoo
se basa en el código fuente (aunque también soporta paquetes precompilados)
y para configurar Gentoo se utilizan archivos de texto plano. En otras
palabras, abierto a cualquiera.
Es muy importante que entienda que la flexibilidad es lo que
hace que Gentoo funcione. Intentamos no forzarle a entrar en algo que
no le guste. Si cree en algún momento que lo estamos haciendo mal, por favor,
envíe su opinión.
¿Cómo está estructurada la instalación?
La instalación de Gentoo puede verse como un procedimiento de 10 pasos,
los correspondientes a los capítulos 2 a 11. Cada paso da como resultado
un cierto estado:
-
Tras el paso 1, te encontrará en un entorno funcional preparado para
instalar Gentoo
-
Después del paso 2, la conexión a Internet estará funcionando y lista
para instalar Gentoo.
-
Tras el paso 3, sus discos duros estarán preparados para alojar tu
instalación de Gentoo
-
Tras el paso 4, el entorno de instalación estará preparado y se encontrará
dentro de un entorno chroot.
-
Después del paso 5, los paquetes principales, que son los mismos en toda
instalación de Gentoo, estarán instalados
-
Tras el paso 6, el núcleo Linux estará compilado.
-
Después del paso 7, la mayoría de los archivos de configuración de tu
sistema Gentoo estarán preparados
-
Tras el paso 8, las herramientas de sistema necesarias (podrá elegirlas
de una hermosa lista) están instaladas.
-
Al finalizar el paso 9, el gestor de arranque elegido estará instalado y
configurado y estará dentro de su nueva instalación de Gentoo.
-
Tras el paso 10, se encontrará dentro de su nueva Gentoo.
Cuando se le pide una elección especial, intentamos explicar lo mejor posible
los pros y contras. También propondremos una opción por defecto, identificada
con "Por defecto:" en el título. Las otras posibilidades se titulan
"Alternativa:". Pero no crea que la opción por defecto es la que
recomendamos. Es la que pensamos que la mayoría de usuarios van a utilizar.
Algunas veces se puede seguir un paso opcional. Estos pasos son marcados como
"Opcional: " y no son necesarios para instalar Gentoo. Sin embargo, algunos
pasos opcionales dependen de una decisión tomada previamente. Le informaremos
cuando se dé el caso, tanto cuando tome la decisión, como cuando se describa
el paso opcional.
¿De qué opciones dispongo?
Puede instalar Gentoo de diferentes formas. Puede descargar e instalar
uno de nuestros CDs de instalación, desde otra distribución, desde un
CD de arranque ajeno a Gentoo (como Knoppix), desde un arranque por red,
desde un disquete de arranque,etc.
Este documento abarca la instalación utilizando un CD de instalación
de Gentoo o, en algunos casos, instalación por red. La instalación
asume que quiere instalar la última versión de cada paquete.
Nota:
Para encontrar ayuda acerca de otros procedimientos de instalación,
incluyendo el uso de CDs ajenos a Gentoo, por favor, lea nuestra Guía de Instalación Alternativa.
|
Si quiere realizar una instalación sin conexión a la red, debería leer
los Manuales Gentoo
2008.0 el cual contiene las instrucciones de instalación para un
entorno sin conexión a la red.
También tenga en cuenta que, si está planeando utilizar GRP (Gentoo
Reference Platform, una colección de paquetes precompilados que pueden
ser utilizados justo después de la instalación de Gentoo), debe
seguir las instrucciones correspondientes a los Manuales Gentoo 2008.0 sin
conexión a la red.
También ofrecemos un documento sobre Consejos y trucos en
la instalación de Gentoo que también puede ser útil.
Si es un usuario Gentoo experimentado y simplemente necesita
una breve lista de comprobación sobre la instalación,
lea libremente la Guía de Instalación Rápida, disponible en
nuestros Recursos de Documentación
si su arquitectura tiene este documento disponible.
También existen otras posibilidades: puede compilar el sistema completo
desde el principio o utilizar un entorno pre-compilado para tener el
sistema listo en poco tiempo. Y, por supuesto, también hay soluciones
intermedias con las cuales no se compila todo el sistema pero se empieza
desde un sistema bastante completo.
¿Problemas?
Si tiene algún problema con la instalación (o con el documento
de instalación), por favor, visite nuestro
Sistema de seguimiento
de errores y compruebe si el error es conocido. Si no lo es, por
favor cree un informe sobre él para que podamos encargarnos de él. No
tenga miedo de los desarrolladores que están asignados a sus
informes, normalmente no se comen a nadie.
Acuérdese que, a pesar de que el documento que está leyendo es
específico de la arquitectura, esté también contiene referencias a
otras arquitecturas. Esto es así porque el manual de Gentoo tiene
partes extensas de código que son comunes para todas las arquitecturas
(para evitar duplicar esfuerzos y el desgaste de los recursos de
desarrollo). Intentaremos reducir esto al mínimo para evitar la
confusión.
Si no está seguro que el problema es de usuario (algún error que
haya cometido al despistarse y no leer la documentación
cuidadosamente) o un problema de software (algún error que ha
cometido despistándose al probar la instalación y/o documentación),
le invitamos a entrar en #gentoo-es en irc.freenode.net. Por supuesto,
es bienvenido de todas formas ya que nuestro canal cubre todo
el espectro de Gentoo :)
Hablando de esto, si tiene cualquier pregunta concerniente a Gentoo,
eche un vistazo a las Preguntas
Frecuentes, disponibles en la Documentación
de Gentoo. También puede mirar en los
foros.
2. Escoger el medio de instalación adecuado
2.a. Requisitos de Hardware
Introducción
Antes de empezar, enumeraremos los requerimientos de hardware
necesarios para instalar con éxito Gentoo en su máquina.
Requisitos de Hardware
|
Minimal CD |
LiveCD |
| CPU |
i486 o superior |
i686 o superior |
| Memoria |
256 MB |
512 MB |
| Espacio en disco |
2.5 GB (no incluye el espacio de intercambio) |
| Espacio de intercambio |
Al menos 256 MB |
2.b. Los CDs de instalación de Gentoo
Introducción
Los CDs de instalación de Gentoo son CDs arrancables que contienen un
entorno Gentoo auto-contenido. Permiten arrancar Linux desde el
CD. Durante el proceso de arranque se detecta el hardware y se cargan
los controladores apropiados. Estos discos son mantenidos por los
desarrolladores de Gentoo.
Todos los CDs de instalación le permiten arrancar, configurar la red,
inicializar las particiones y empezar a instalar Gentoo desde Internet.
CD Minimal de instalación Gentoo
El CD Minimal de instalación se conoce cómo install-x86-minimal-<release>.iso
y solo necesita cerca de 140 MB de espacio en disco.
Puede utilizar este CD para instalar Gentoo, pero únicamente con una
conexión activa a Internet.
LiveDVDs de Gentoo Linux
Cada seis meses (aproximadamente), el proyecto Gentoo Ten realiza un
DVD especial que se puede utilizar para instalar Gentoo. Las instrucciones
más abajo en este capítulo tratan acerca de los CDs mínimos de instalación
por lo que éstos puede variar un poco. Sin embargo, el LiveDVD (o
cualquier otro entorno Linux arrancable) permite obtener un símbolo de
espera de órdenes de root, invocando simplemente sudo su - o
sudo -i en un terminal.
El archivo comprimido (tarball) Stage3
Un archivo comprimido stage3 contiene un entorno Gentoo mínimo, que
permite continuar la instalación de Gentoo con las instrucciones de
este manual. Anteriormente, el manual de Gentoo describía la
instalación utilizando uno de los tres archivos de stage. Aunque
Gentoo sigue ofreciendo los archivos stage1 y stage2, el método de
instalación oficial utiliza el archivo stage3. Si está interesado en
llevar a cabo la instalación de Gentoo utilizando stage1 o stage2, por
favor lea las preguntas frecuentes sobre ¿Cómo instalo Gentoo utilizando un
archivo stage1 o stage2?
Los tarballs de stage3 puede descargarse desde
${release-dir/}current-stage3/ en
cualquiera de nuestros servidores
réplica oficiales y no se proporcionan con el LiveCD.
2.c. Descargar, Grabar y Arrancar un CD de instalación Gentoo
Descargar y Grabar los CDs de instalación Gentoo
Ha elegido usar un CD de instalación Gentoo. Empezaremos por descargar y
grabar el CD que eligió. Ya hablamos anteriormente de los distintos
CD de instalación disponibles, pero ¿dónde podemos encontrarlos?
Puede descargar cualquiera de los CDs desde uno de nuestros servidores réplica. Los CD de
instalación se encuentran en el directorio releases/x86/autobuilds/current-iso/.
Dentro del directorio encontrará los llamados archivos ISO. Estos son
imágenes de CD completas que puede grabar en un CD-R.
Si tiene dudas de que el archivo que se ha descargado está corrupto,
puede verificar su suma de control SHA-2 y compararlo con la suma
SHA-2 que nosotros proporcionamos (por ejemplo,
install-x86-minimal-<release>.iso.DIGESTS). Puede comprobar
la suma SHA-2 con la herramienta sha512sum en Linux/Unix o
File Checksum
Tool en Windows.
Otra manera de verificar la validez de la descarga es usar GnuPG para
revisar la firma criptográfica que proporcionamos (el nombre del
archivo termina con .asc). Descargue el archivo de firma y
obtenga las claves públicas cuyos identificadores puede encontrar en el
sitio del proyecto de ingeniería
de entregas (releases).
Listado de Código 3.1: Obtener la clave pública |
$ gpg --keyserver subkeys.pgp.net --recv-keys 96D8BF6D 2D182910 17072058
|
Ahora verificamos la firma:
Listado de Código 3.2: Verificar los archivos |
$ gpg --verify <downloaded iso.DIGESTS.asc>
$ sha1sum -c <downloaded iso.DIGESTS.asc>
|
Para grabar el o los ISOs descargados, debe seleccionar grabar/quemar
sin formato. Cómo hacerlo depende del programa. Aquí hablaremos de
cdrecord y K3B; puede encontrar mayor información en las
Preguntas de Uso Frecuentes
sobre Gentoo.
-
Con cdrecord, simplemente escriba cdrecord dev=/dev/hdc
(reemplace /dev/hdc con la ruta de su unidad CD-RW).
-
Con K3B, seleccione Herramientas > Grabar Imagen CD.
Luego busque el archivo ISO dentro del área 'Imagen a Grabar'.
Por último presione el botón comenzar.
Arrancar el CD de instalación
Una vez que ha grabado sus CDs de instalación, es hora de
arrancarlos. Retire todos los CD de sus unidades, reinicie el sistema
y entre en el BIOS. Esto se logra por lo general oprimiendo la tecla
Supr, F1 o Esc, dependiendo del BIOS. Dentro del BIOS, cambie el orden
de arranque para que intente arrancar primero desde el
CD-ROM. Regularmente se encuentra dentro de "CMOS Setup". Si no lo
hace, su sistema arrancará desde el disco duro e ignorará el
CD-ROM.
Coloque el CD de instalación en la unidad CD-ROM y reinicie. Deberá ver un
símbolo de espera de órdenes. En esta pantalla puede oprimir la tecla Intro
para empezar el proceso de arranque con las opciones predefinidas, o arrancar
el CD de instalación con opciones personales especificando un núcleo seguido
por las opciones de arranque y luego oprimir la tecla Intro.
Cuando se muestra el símbolo de espera de órdenes, se tiene la opción de
mostrar los núcleos disponibles (F1) y las opciones de inicio
(F2). Si no se realiza ninguna selección en 15 segundos (sea
mostrar información o arrancar un núcleo) el LiveCD optará por iniciar
desde disco. Esto permite a las instalaciones reiniciar e intentar usar el
entorno instalado sin tener que quitar el CD de su bandeja (algo que será
de gran utilidad en instalaciones remotas).
Ahora que hablamos de especificar un núcleo, en nuestros CDs de instalación,
ofrecemos varios de ellos. El núcleo por defecto es gentoo. Otros
núcleos son específicos para algunas necesidades de hardware y las
variantes -nofb deshabilitarán el framebuffer.
Más adelante encontrará una breve descripción de los núcleos
disponibles:
| Núcleo |
Descripción |
| gentoo |
El núcleo 2.6 predeterminado con soporte para múltiples CPUs |
| gentoo-nofb |
Igual que gentoo pero sin soporte para framebuffer |
| memtest86 |
Para verificar su memoria RAM para errores |
También puede pasarle opciones al núcleo. Estas representan
configuraciones opcionales que puede activar o desactivar.
Opciones hardware:
- acpi=on
-
Esta opción carga ACPI y además provoca que el demonio acpid
arranque cuando se inicia el CD. Esto solamente es necesario
si nuestro sistema necesita ACPI para funcionar
correctamente. No es necesario para el soporte Hyperthreading
(Multihilo).
- acpi=off
-
Desactiva ACPI por completo. Esto es útil en algunos sistemas
antiguos, y también es un requisito para utilizar APM. Esto
deshabilita el soporte Hyperthreading de su procesador.
- console=X
-
Activa el acceso a una consola serie desde el CD. La primera
opción es el dispositivo, normalmente ttyS0 en x86, seguido de
las opciones de conexión separadas por comas. Las opciones por
defecto son: 9600,8,n,1.
- dmraid=X
-
Permite el envío de opciones al dispositivo de mapeo del
subsistema RAID. Las opciones deben ir entre comillas dobles.
- doapm
-
Carga el soporte para el controlador APM. Necesita que también
se utilice acpi=off.
- dopcmcia
-
Carga el soporte para el hardware PCMCIA y Cardbus y además
provoca que cardmgr de pcmcia se arranque al iniciar el CD.
Esto solamente es necesario cuando arranque desde un
dispositivo PCMCIA/Cardbus.
- doscsi
-
Esto carga el soporte de la mayoría de controladoras SCSI.
También es necesario para casi todos los dispositivos USB, ya
que utilizan el subsistema SCSI del núcleo.
- sda=stroke
-
Esto le permite particionar el disco entero aunque su BIOS se
incapaz de gestionar discos grandes. Esta opción solamente se
utiliza para ordenadores con BIOS antiguas. Sustituya sda por el
dispositivo que necesite esta opción.
- ide=nodma
-
Fuerza la desactivación de DMA en el núcleo y es necesario
para algunos chipsets IDE y también para algunos drivers de
CDROM. Si el sistema sufre problemas leyendo desde el CDROM
IDE, pruebe esta opción. Esto evita también que la
configuración de hdparm se ejecute.
- noapic
-
Desactiva el controlador de interrupciones APIC (Advanced
Programmable Interrupt Controller) que está presente en
placas nuevas. Se sabe que provoca algunos errores con el
hardware antiguo.
- nodetect
-
Desactiva toda la detección automática que realiza el CD,
incluyendo la detección de dispositivos y DHCP. Esto es útil
para depurar errores cuando falla un CD o un driver.
- nodhcp
-
Deshabilita DHCP en las tarjetas de red detectadas. Esto es
útil para redes únicamente con direcciones estáticas.
- nodmraid
-
Desactiva el soporte para el dispositivo de mapeo RAID, como
por ejemplo el que se utiliza en placas con controladores RAID
IDE/SATA.
- nofirewire
-
Desactiva la carga de módulos Firewire. Solamente es necesario
si el hardware Firewire está causando algún tipo de problema
con el arranque del CD.
- nogpm
-
Desactiva el soporte gpm de ratón para consola.
- nohotplug
-
Desactiva la carga de los guiones de inicio de hotplug y coldplug
durante el arranque. Esto es útil para depurar los fallos en
el CD o el driver.
- nokeymap
-
Deshabilita la selección del mapa de teclado que se emplea
para seleccionar los teclados apropiados que no son US.
- nolapic
-
Deshabilita el APIC local en los núcleos monoprocesador.
- nosata
-
Desactiva la carga de los módulos Serial ATA. Esto es útil si
el sistema tiene problemas con el subsistema SATA.
- nosmp
-
Desactiva SMP, o Multiproceso Simétrico (Symmetric
Multiprocessing), en los núcleos con SMP activo. Esto es útil
para la depuración de errores relacionados con SMP en algunos
drivers y placas base.
- nosound
-
Desactiva el soporte de sonido y la configuración del volumen.
Útil para sistemas donde el sonido cause problemas.
- nousb
-
Desactiva la carga automática de módulos USB. Útil para
depurar errores relacionados con USB.
- slowusb
-
Añade algunas pausas adicionales en el proceso de arranque para los CDROMs
USB más lentos, como el IBM BladeCenter.
Administración de Volúmenes/Dispositivos:
- dolvm
-
Activa el soporte para la administración lógica de volúmenes.
Otras opciones:
- debug
-
Activa el código de depuración. Esto podría ser un poco lioso,
ya que muestra muchos datos por pantalla.
- docache
-
Esto guarda en caché la parte completa del entorno de
ejecución del CD en RAM, lo cual le permite desmontar
/mnt/cdrom y montar otro CDROM. Esta opción requiere que
disponga (al menos) del doble de memoria RAM libre que el
tamaño que tiene CD.
- doload=X
-
Esto indica al ramdisk inicial que cargue el módulo que se
indica así como las dependencias. Sustituya X por el nombre
del módulo.
Se pueden indicar varios módulos en una lista
separados por medio de comas.
- dosshd
-
Inicia sshd durante el arranque, lo cual es muy útil para instalaciones
remotas o sin atención permanente.
- passwd=foo
-
Configura lo que venga después del igual como la contraseña de root, la cual
será necesaria para dosshd ya que desactivamos la contraseña de root por
defecto.
- noload=X
-
Esto indica al ramdisk inicial que no realice la carga de un
determinado módulo que podría estar causando problemas. La
sintaxis es la misma que doload.
- nonfs
-
Desactiva la ejecución de portmap/nfsmound durante el arranque.
- nox
-
Esto provoca que el LiveCD no cargue automáticamente las X,
dejándole en la línea de comandos.
- scandelay
-
Provoca que el CD se detenga 10 segundos durante ciertos periodos del
arranque para permitir que se inicien los dispositivos lentos y
estén listos para utilizarse.
- scandelay=X
-
Permite especificar un determinado retardo, en segundos, durante ciertos
periodos del arranque para permitir a los dispositivos lentos
que se inicialicen y estén listos para usarse. Se sustituye X por el
número de segundos de la pausa.
Nota:
El CD comprobará las opciones "no*" antes que las opciones "do*", así que
puede sobreescribir cualquier opción en el orden exacto en que las
especifique.
|
Ahora arranque su CD, seleccione un núcleo (si no está contento con el
núcleo predeterminado gentoo) y las opciones de arranque. Por
ejemplo, aquí le mostramos como arrancar el núcleo gentoo, con
el parámetro dopmcia:
Listado de Código 3.3: Arrancar un CD instalación |
boot: gentoo dopcmcia
|
Después verá otra pantalla de arranque y una barra de progreso. Si está
instalando Gentoo en un sistema con un teclado no americano, asegúrese de
pulsar Atl-F1 para cambiar al modo "verbose" y seguir el cursor. Si no se hace
ninguna selección en 10 segundos, la opción predefinida (teclado americano)
será la utilizada y el proceso de arranque continuará. Cuando se complete el
proceso de arranque, automáticamente se registrará en el Gentoo Linux "Live"
como "root", el super usuario. Tendrá el indicador del root ("#") en la consola
actual y también podrá cambiarse a otras consolas presionando Alt-F2, Alt-F3 y
Alt-F4. Para regresar a la consola en la que empezó presione Alt-F1.
Continúe ahora Configurando Hardware
Adicional.
Configurar Hardware Adicional
Cuando arranca el CD de instalación, éste tratará de detectar
todos los dispositivos hardware y cargar los módulos apropiados
en el núcleo para dar soporte a ese hardware. En la gran mayoría
de casos, hace bien su trabajo. Sin embargo, en algunos casos
puede que no cargue automáticamente los módulos del núcleo
necesarios. Si falla la auto-detección PCI con algún hardware
de su sistema, trate de cargar el módulo apropiado manualmente.
En el siguiente ejemplo trataremos de cargar el módulo 8139too
(que da soporte a ciertos tipos de interfaces de red):
Listado de Código 3.4: Cargar módulos del núcleo |
# modprobe 8139too
|
Opcional: Cuentas de Usuarios
Si planea darle a otras personas acceso a su entorno de instalación o
si quiere platicar con alguien usando irssi sin privilegios de
root (por razones de seguridad), hará falta crear las cuentas de
usuario necesarias y cambiar la contraseña de root.
Para cambiar la contraseña de root, use passwd:
Listado de Código 3.5: Cambiar la contraseña de root |
# passwd
New password:
Re-enter password:
|
Para crea una cuenta de usuario, primero escribimos sus credenciales, y
luego su contraseña. Se usan useradd y passwd para estas
tareas. En el siguiente ejemplo, crearemos un usuario llamado
"juan".
Listado de Código 3.6: Crear una cuenta de usuario |
# useradd juan
# passwd juan
New password:
Re-enter password:
|
Puede cambiar su identificador de usuario desde root para usar la del
nuevo usuario usando su:
Listado de Código 3.7: Cambiar de usuario |
# su - juan
|
Opcional: Ver la documentación mientras se hace la instalación
Si quiere ver el manual de Gentoo durante la instalación, asegúrese
de haber creado una cuenta de usuario (consulte
Opcional: Cuentas de Usuarios).
Luego presione Alt-F2 para ir a un nuevo terminal e ingrese
al sistema.
Puede ver el manual usando links, pero solo después de haber
completado el capítulo Configurar su red (de lo contrario
no podrá usar Internet para ver el documento):
Listado de Código 3.8: Ver la Documentación en Línea |
# links http://www.gentoo.org/doc/es/handbook/handbook-x86.xml
|
Puede regresar a la consola original presionando Alt-F1.
Opcional: Iniciar el Demonio SSH
Si quiere permitir a otros usuarios el acceso a su máquina durante
la instalación de Gentoo (quizá porque esos usuarios le vayan a ayudar,
o incluso que ellos realicen la instalación), necesitará crear una
cuenta de usuario para éstos e incluso darles la contraseña de root
(solo si confía completamente en esos usuarios).
Para arrancar el demonio SSH, ejecute la siguiente orden:
Listado de Código 3.9: Iniciar el demonio SSH |
# /etc/init.d/sshd start
|
Nota:
Si alguien ingresa en el sistema, se le mostrará un mensaje en el
que se indica que la clave del servidor para este sistema, se
necesita confirmar (mediante la llamada huella digital). Esta
situación es la esperada ya que es la primera vez que se intenta
ingresar en el sistema.
Sin embargo, más tarde, cuando su sistema esté instalado y se
intente ingresar en él, el cliente SSH le advertirá que la clave
del servidor se ha cambiado. Esto es debido a que ahora, de cara
a SSH, estamos intentando entrar en un servidor distinto
(precisamente en su nuevo sistema Gentoo en lugar del entorno
en el que está trabajando ahora). Cuando vea esta advertencia,
siga las instrucciones que se dan en pantalla para reemplazar
la clave del servidor en el sistema cliente.
|
Para poder usar sshd, primero necesita configurar su red. Continúe en el
capítulo Configurar su Red.
3. Configuración de su red
3.a. Auto Detección de la Red
¿Es posible que simplemente funcione?
Si su sistema está conectado a una red Ethernet con un servidor DHCP,
es muy probable que la configuración de red se haya detectado
automáticamente. En ese caso, debería ser capaz de trabajar con las
órdenes que hacen uso de la red y que están en el CD de instalación,
son: ssh, scp, ping, irssi, wget
y links, entre otras.
Si ya se ha configurado la red, la orden ifconfig
debería listar algunas interfaces de red además de lo, como eth0:
Listado de Código 1.1: ifconfig para una tarjeta de red funcionando |
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
collisions:1984 txqueuelen:100
RX bytes:485691215 (463.1 Mb) TX bytes:123951388 (118.2 Mb)
Interrupt:11 Base address:0xe800
|
El nombre de la interfaz en su sistema puede diferir bastante de eth0.
Los medios de instalación recientes pueden mostrar nombres de interfaz
regulares como eno0, ens1 o enp5s0. Simplemente busque la interfaz
en la salida de ifconfig que tenga una dirección IP relacionada
con su red local.
In the remainder of this document, we will assume that the interface is called
eth0.
Opcional: Configure el Proxy
Si accede a Internet a través de un proxy, podría necesitar configurar la
información del proxy durante la instalación. Es muy sencillo definir un
proxy: tan solo necesita definir la variable que contiene la información
del mismo.
En la mayoría de los casos, puede definir las variables usando simplemente
el host del servidor. Por ejemplo, asumimos que el proxy se llama
proxy.gentoo.org y el puerto es el 8080.
Listado de Código 1.2: Definir los servidores proxy |
# export http_proxy="http://proxy.gentoo.org:8080"
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
# export rsync_proxy="rsync://proxy.gentoo.org:8080"
|
Si su proxy requiere un nombre de usuario y una contraseña, debería usar
la siguiente sintaxis para la variable:
Listado de Código 1.3: Añadir un usuario/contraseña a la variable del proxy |
http://nombreusuario:contraseña@proxy.gentoo.org:8080
|
Probar la red
Puede intentar hacer ping hacia el servidor DNS de su ISP, (que se
encuentra en /etc/resolv.conf) y un sitio web a su elección,
con la intención de asegurarse que sus paquetes llegan a la red, la
resolución de nombres DNS esta funcionando correctamente, etc ...
Listado de Código 1.4: Más pruebas de la red |
# ping -c 3 www.gentoo.org
|
¿Funciona su conexión? En ese caso, puede saltarse el resto de
esta sección y continuar con Preparar
los discos. De lo contrario, mala suerte, tendrá que perseverar
un poco más :)
3.b. Configuración Automática de Red
Si la red no funciona inmediatamente, algunos medios de instalación le
permitirán usar net-setup (para redes estándar o sin cables),
pppoe-setup (para usuarios de ADSL) o pptp (para usuarios de PPTP
disponible para x86, amd64, alpha, ppc y ppc64).
Si su medio de instalación no contiene ninguna de estas herramientas,
continúe con Configuración Manual de la Red.
Por defecto: Usar net-setup
El sistema más simple de configurar una red, si no se consiguió hacerlo
automáticamente, es ejecutar el guión net-setup:
Listado de Código 2.1: Ejecutar el guión net-setup |
# net-setup eth0
|
net-setup le hará algunas preguntas sobre su entorno de red
Cuando lo haya completado, debería disponer de una conexión de red
funcionando. Pruebe su conexión de red como se especificó anteriormente
Si los resultados son positivos, ¡felicidades! Ahora está listo para instalar
Gentoo. Sáltese el resto de esta sección y continúe con Preparar los discos.
Si su conexión de red sigue sin funcionar, continúe con Configuración Manual de la Red.
Alternativa: utilizar PPP
Asumiendo que requiere PPPoE para conectar a Internet, los CDs de instalación
(en cualquiera de sus versiones) ha sido pensado para facilitarle el trabajo
incluyendo ppp. Use el guión pppoe-setup proporcionado para
configurar su conexión. Se le pedirá el dispositivo de red que esta
conectado a su módem adsl, su nombre de usuario y su contraseña, las IPs
de sus servidores DNS y si requiere un firewall básico o no.
Listado de Código 2.2: Utilizar ppp |
# pppoe-setup
# pppoe-start
|
Si algo va mal, asegúrese que ha tecleado correctamente su nombre de usuario
y su contraseña mirando /etc/ppp/pap-secrets o
/etc/ppp/chap-secrets y asegúrese que esta haciendo uso del
dispositivo de red correcto. Si su dispositivo de red no existe, deberá cargar
los módulos de red apropiados. En ese caso, debería continuar con Configuración manual de la Red dónde explicaremos
como cargar los módulos de red apropiados.
Si todo funcionó, continúe con
Preparar los Discos.
Alternativa: Usar PPTP
Si requiere soporte PPTP, puede usar pptpclient que se incluye en
nuestros CDs de instalación. Pero primero debe asegurarse que su
configuración es correcta. Edite /etc/ppp/pap-secrets o
/etc/ppp/chap-secrets ya que contiene la combinación correcta
de usuario/contraseña:
Listado de Código 2.3: Editar /etc/ppp/chap-secrets |
# nano -w /etc/ppp/chap-secrets
|
Ajuste ahora /etc/ppp/options.pptp si es necesario:
Listado de Código 2.4: Editar /etc/ppp/options.pptp |
# nano -w /etc/ppp/options.pptp
|
Cuando todo esté listo, tan solo ejecute pptp (junto con las opciones
que podría haber configurado en options.pptp) para conectar al
servidor:
Listado de Código 2.5: Conectar a un servidor por línea telefónica |
# pptp <server ip>
|
Ahora continúe con
Preparar los discos.
3.c. Configuración Manual de la Red
Cargar los módulos de red apropiados
Cuando el CD de instalación arranca, intenta detectar todos sus dispositivos
hardware y carga los módulos del núcleo (controladores) apropiados para darles
soporte. En la gran mayoría de los casos, hace un muy buen trabajo. No
obstante, en algunos casos, puede no cargar automáticamente los módulos del
núcleo que necesita.
Si net-setup o pppoe-setup fallaron, entonces puede asumir sin
ningún riesgo que su tarjeta de red no se encontró en el acto. Esto significa
que tendrá que cargar los módulos del núcleo apropiados manualmente.
Para descubrir qué módulos del núcleo proporcionamos para la red, use
ls:
Listado de Código 3.1: Buscar los módulos apropiados |
# ls /lib/modules/`uname -r`/kernel/drivers/net
|
Si encuentra un controlador para su tarjeta de red, use
modprobe para cargar el módulo del núcleo:
Listado de Código 3.2: Usar modprobe para cargar el módulo núcleo |
# modprobe pcnet32
|
Para confirmar si su tarjeta de red se detecta ahora, use
ifconfig. Una red detectada debería mostrar en algo como
lo siguiente (en este caso eth0 es solo un ejemplo):
Listado de Código 3.3: Comprobar la disponibilidad de su tarjeta de red, éxito |
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr FE:FD:00:00:00:00
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
|
Si de todas formas recibe el siguiente error, la tarjeta de red no está
detectada:
Listado de Código 3.4: Comprobar si la disponibilidad de su tarjeta de red fracasó |
# ifconfig eth0
eth0: error fetching interface information: Device not found
|
Los nombres de interfaces de red disponibles en su sistema se pueden
mostrar listando el sistema de ficheros /sys:
Listado de Código 3.5: Mostar las interfaces de red disponibles |
# ls /sys/class/net
dummy0 eth0 lo sit0 tap0 wlan0
|
En el ejemplo de arriba, se encontraron seis interfaces de red.
La interfaz eth0 es, seguramente, un adaptador Ethernet
(cableado), mientras que wlan0 es el interfaz inalámbrico.
Asumiendo que ya se tiene disponible una tarjeta de red detectada, puede
reintentar net-setup o pppoe-setup otra vez (que deberían
funcionar ahora), pero para los que tengan problemas, explicaremos como
configurar su red manualmente.
Seleccione una de las siguientes secciones basándose en su configuración
de red.
Usar DHCP
DHCP (Protocolo de Configuración Dinámica de Anfitrión) hace posible recibir
automáticamente su información de red (Dirección IP, máscara de red, dirección
de broadcast, pasarela, servidores de nombres etc.). Esto solo funciona si
dispone de un servidor DHCP en su red (o si su proveedor le ofrece servicio
DHCP). Para conseguir que su interfaz de red reciba esta información
automáticamente use dhcpcd:
Listado de Código 3.6: Usar dhcpcd |
# dhcpcd eth0
# dhcpcd -HD eth0
|
Si esto funciona (pruebe hacer ping a algún servidor en Internet, como
Google), entonces lo tiene todo
configurado y listo para continuar. Sáltese el resto de esta sección y
continúe con Preparar los Discos.
Preparar la Red Inalámbrica
Nota:
Existe soporte para iwconfig en CDs de instalación para las
arquitecturas x86, amd64 y ppc. Todavía puede conseguir que sus
extensiones funcionen siguiendo las instrucciones del proyecto
linux-wlan-ng.
|
Si está empleando una tarjeta inalámbrica (802.11), quizá necesite
configurar sus opciones antes de ir más allá. Para revisar la
configuración inalámbrica actual de su tarjeta, puede utilizar
iwconfig. Al Ejecutar iwconfig se debería mostrar
algo como esto:
Listado de Código 3.7: Mostrar la configuración inalámbrica actual |
# iwconfig eth0
eth0 IEEE 802.11-DS ESSID:"GentooNode"
Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2
Bit Rate:11Mb/s Tx-Power=20 dBm Sensitivity=0/65535
Retry limit:16 RTS thr:off Fragment thr:off
Power Management:off
Link Quality:25/10 Signal level:-51 dBm Noise level:-102 dBm
Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx
excessive retries:237 Invalid misc:350282 Missed beacon:84
|
Nota:
El nombre de dispositivo de algunas tarjetas de red inalámbricas puede ser
wlan0 o ra0 en lugar de eth0. Ejecute iwconfig
sin más parámetros para determinar cual es el nombre de dispositivo correcto.
|
La mayoría de usuarios, solamente tendrá que modificar dos configuraciones,
el ESSID (Nombre de red inalámbrica) o la clave WEP. Si el ESSID y la
dirección del Punto de Acceso mostradas son correctas y el Punto de Acceso
y su máquina no están utilizando WEP, su red inalámbrica está funcionando.
Si necesita cambiar su ESSID, o añadir una clave WEP, puede utilizar las
siguientes órdenes:
Nota:
Si la red inalámbrica está configurada para usar claves WPA o WPA2,
tendrá que usar wpa_supplicant. Para más información acerca de
la configuración de redes inalámbricas en Gentoo Linux, por favor lea
el capítulo Redes Inalámbricas
del Manual Gentoo.
|
Listado de Código 3.8: Cambiar ESSID y/o añadiendo una clave WEP |
# iwconfig eth0 essid GentooNode
# iwconfig eth0 key 1234123412341234abcd
# iwconfig eth0 key s:some-password
|
Puede volver a comprobar la configuración inalámbrica utilizando
iwconfig. Una vez que tenga la conexión funcionando, puede
continuar configurando las opciones de red de nivel IP como se describe
en la siguiente sección (Entender la terminología de red) o
utilizar la herramienta net-setup como hemos descrito anteriormente.
Entender la terminología de red
Nota:
Si conoce su dirección IP, dirección de broadcast, máscara de red y los
servidores de nombres, entonces puede saltarse esta subsección y continuar
con Usar ifconfig y route.
|
Si todo lo anterior falla, tendrá que configurar su red manualmente. No tenga
miedo, está lejos de ser difícil. Pero vamos a explicarle ciertos conceptos
de red que necesitará para ser capaz de configurar su red satisfactoriamente.
Cuando haya leído esto, conocerá que es una pasarela, para que sirve
una máscara de red, como se forma una dirección de broadcast
y porqué necesita servidores de nombres.
En una red los hosts están están identificados por su dirección IP
(dirección del Protocolo de Internet). Tal dirección es una combinación de
cuatro números entre 0 y 255. Bien, como mínimo así es como las percibimos. En
realidad, tal dirección IP consiste de 32 bits (unos y ceros). Vamos a ver un
ejemplo:
Listado de Código 3.9: Ejemplo de una dirección IP |
IP Address (numbers): 192.168.0.2
IP Address (bits): 11000000 10101000 00000000 00000010
-------- -------- -------- --------
192 168 0 2
|
Cada dirección IP es única para ese host, tan lejos como redes accesibles
estén a su disposición (por ejemplo, todos los hosts a los que se pueda
conectar, deben tener direcciones IP únicas). Para ser capaz de hacer la
distinción entre hosts dentro de una red, y hosts fuera de una red, la
dirección IP está dividida en dos partes: la parte de red y la parte de
host.
La separación esta anotada en la máscara de red, una conjunto de unos
seguidos de un conjunto de ceros. La parte de la IP que quedan enmascarados
sobre los unos es la parte de red, la otra es la parte de host. Como es normal,
la máscara de red, puede ser anotada como una dirección IP.
Listado de Código 3.10: Ejemplo de una separación red/host |
IP-address: 192 168 0 2
11000000 10101000 00000000 00000010
Netmask: 11111111 11111111 11111111 00000000
255 255 255 0
+--------------------------+--------+
Network Host
|
En otras palabras, 192.168.0.14 es parte de nuestra red de ejemplo, pero
192.168.1.2 no lo es.
La dirección de broadcast es una dirección IP con la misma parte de red
que su red, pero con solo unos como parte de host. Cada host en su red escucha
esta dirección IP. Esto verdaderamente sirve para la transmisión de paquetes.
Listado de Código 3.11: Dirección de Broadcast |
IP-address: 192 168 0 2
11000000 10101000 00000000 00000010
Broadcast: 11000000 10101000 00000000 11111111
192 168 0 255
+--------------------------+--------+
Network Host
|
Para ser capaz de navegar por Internet, debería conocer qué host comparte la
conexión a Internet. Este host se llama la pasarela. Puesto que es un
host estándar, tiene direcciones IP estándar (por ejemplo 192.168.0.1).
Anteriormente afirmamos que cada host tiene su propia dirección IP. Para ser
capaz de alcanzar este host por un nombre (en vez de la dirección IP)
necesitara un servicio que traduzca un nombre (como dev.gentoo.org) a
una dirección IP (como 64.5.62.82). Tal servicio se le conoce como
servicio de nombres. Para usar tal servicio, debe definir los
servidores de nombres necesarios en /etc/resolv.conf.
En algunos casos, su pasarela también sirve como servidor de nombres. De otro
modo, tendrá que introducir los servidores de nombres facilitados por su ISP.
Para resumir, necesitará la siguiente información antes de continuar:
| Elemento de Red |
Ejemplo |
| Su dirección IP |
192.168.0.2 |
| Máscara de Red |
255.255.255.0 |
| Broadcast |
192.168.0.255 |
| Pasarela |
192.168.0.1 |
| Servidor(es) de nombres |
195.130.130.5, 195.130.130.133 |
Usar ifconfig y route
Configurar su red consiste en tres pasos. Primero, nos asignamos una dirección
IP usando ifconfig. Entonces configuraremos el enrutamiento hacia la
pasarela usando route. Por último, acabaremos situando las IPs de
los servidores de nombres en /etc/resolv.conf.
Para asignar una dirección IP, necesitara su dirección IP, la dirección de
broadcast y la mascara de red. Entonces ejecute la siguiente orden,
substituyendo ${IP_ADDR} con su dirección IP, ${BROADCAST} con
su dirección de broadcast y ${NETMASK} con su máscara de red:
Listado de Código 3.12: Utilizar ifconfig |
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
|
Ahora configure la ruta usando route. Substituya
${GATEWAY} con la dirección IP de su pasarela:
Listado de Código 3.13: Utilizar route |
# route add default gw ${GATEWAY}
|
Ahora abra /etc/resolv.conf con su editor favorito (en nuestro
ejemplo, usaremos nano):
Listado de Código 3.14: Crear /etc/resolv.conf |
# nano -w /etc/resolv.conf
|
Ahora complete con su(s) servidor(es) de nombres usando la siguiente
plantilla. Asegúrese que substituye ${NAMESERVER1} y
${NAMESERVER2} por las direcciones apropiadas de servidor
de nombres:
Listado de Código 3.15: Plantilla /etc/resolv.conf |
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}
|
Eso es. Ahora compruebe su red haciendo ping a algún servidor de
Internet (como Google). Si funciona,
felicitaciones entonces. Ahora está listo para instalar Gentoo. Continúe con
Preparar los Discos.
4. Preparar los discos
4.a. Introducción a Dispositivos de Bloque
Dispositivos de Bloque
Examinaremos de forma detallada los aspectos de Gentoo Linux así como
Linux en general que tengan que ver con discos, sistemas de ficheros
de Linux, particiones y dispositivos de bloque. Una vez esté
familiarizado con las entrañas de los discos y sistemas de ficheros,
le guiaremos a través del proceso de creación de particiones y
sistemas de ficheros de tu instalación Gentoo Linux.
Para empezar, explicaremos el término dispositivos de
bloque. Quizás el dispositivo de bloque más conocido es el que
representa la primera unidad de disco llamada /dev/sda.
Las unidades SCSI y Serial ATA son etiquetadas mediante
/dev/sd*; incluso las unidades IDE son conocidas como
/dev/sd* con el nuevo framework libata del kernel.
Si está utilizando el antigo framework de unidades, entonces la
primera unidad IDE será /dev/hda.
Los dispositivos de bloque mencionados anteriormente representan una
interfaz abstracta de disco. Las aplicaciones pueden hacer uso de
estas interfaces para interactuar con el disco duro de la máquina sin
importar el tipo de unidad que tienes: IDE, SCSI, o cualquier otra. La
aplicación puede simplemente dirigirse al almacenamiento en el disco
como a una serie de bloques de acceso aleatorio de 512-bytes situados
de forma contigua.
Particiones
Aunque teóricamente es posible utilizar el disco duro completo para
albergar la instalación Linux, esto casi nunca se hace. En su lugar,
los dispositivos de bloque enteros se dividen en partes más manejables
y pequeñas. En los sistemas éstas se llaman
particiones.
Las particiones se dividen en tres tipos:
primarias, extendidas y lógicas.
La partición primaria es aquella que almacena su información en
el MBR (registro principal de arranque). Ya que el MBR puede almacenar
hasta 512 bytes, solo pueden definirse cuatro particiones primarias
(por ejemplo, desde /dev/sda1 hasta
/dev/sda4).
Una partición extendida es una partición primaria especial
(entendemos que la partición extendida debe ser una de las cuatro
posibles particiones primarias) la cual contiene más particiones. Al
principio no existía este tipo de partición, pero como cuatro
primarias eran muy pocas, se diseñó para extender el esquema de
particionamiento sin perder la compatibilidad inversa.
Una partición lógica es aquella que está dentro de la partición
extendida. En otras palabras, estas particiones no se definen dentro
del MBR, sino que se declaran dentro de la partición extendida.
Almacenamiento avanzado
Los CDs de instalación para x86 proporcionan soporte
para LVM2 (en inglés, Logical Volume Management). LVM2 incrementa
incrementa la flexibilidad ofrecida por el esquema de particionamiento.
Cuando recorramos las instrucciones de instalación, nos centraremos
en particiones "normales", sin embargo, es importante saber que
las particiones de tipo LVM2 también están soportadas.
4.b. Diseñar un esquema de particionamiento
Esquema de Particionamiento Predeterminado
Si no está interesado en diseñar un esquema de particionamiento
particular para tu sistema, puede hacer uso del esquema que
utilizaremos en este manual:
| Partición |
Sistema de Ficheros |
Tamaño |
Descripción |
| /dev/sda1 |
ext2 |
32M |
Partición de arranque |
| /dev/sda2 |
(swap) |
512M |
Partición de intercambio |
| /dev/sda3 |
ext4 |
El resto del disco |
Partición de raíz |
Si está interesado en conocer el tamaño que debería tener una
partición, o incluso cuantas particiones necesita, continué
leyendo. En caso contrario, siga con el particionamiento del disco
leyendo Utilizar fdisk para particionar su
disco o Utilizar parted para particionar
su disco (ambas son herramientas de particionamiento,
fdisk es bien conocida y estable, parted es un poco
más reciente pero admite particiones mayores de 2TB).
¿Cuántas? y ¿de qué tamaño?
El número de particiones es altamente dependiente del entorno
particular. Por ejemplo, si la máquina tiene muchos usuarios, lo más
probable es que desee tener /home en una partición
separada para aumentar la seguridad y facilitar los respaldos. Si está
instalando Gentoo para un servidor de correos, debe tener
/var en una partición separada ya que es allí dónde se
almacena todo el correo. Asimismo, una buena elección de sistema de
ficheros optimizará el rendimiento del equipo. Los servidores de
juegos deben disponer de una partición /opt, ya que la
mayoría de juegos se instalan allí. Las razones para estas
recomendaciones son similares a las del caso de /home:
seguridad y salvaguarda de datos. Es recomendable darle un tamaño
grande a /usr: no solamente contiene la mayoría de las
aplicaciones, sino que el propio árbol de Portage ocupa más de 500
Mbytes, sin contar las fuentes que guarda también.
Como puede ver, todo depende de lo que quiera conseguir. Tener
particiones o volúmenes separados tiene las siguientes ventajas:
-
Puede elegir el mejor sistema de ficheros para cada partición o
volumen
-
El equipo en su totalidad quedará sin espacio si una herramienta o
aplicación escribiera datos continuamente al volumen o partición
-
Si es el caso, el tiempo dedicado a las comprobaciones de
integridad de sistemas de fichero se reduce ya que las éstas
pueden ser hechas en paralelo (esta ventaja es mayor con múltiples
discos que con múltiples particiones)
-
Podemos mejorar la seguridad montando algunas particiones en modo
solo lectura, nosuid (los setuid bits se ignoran), noexec (los
bits de ejecución se ignoran), etc.
Sin embargo, tener múltiples particiones tiene también desventajas.
Si no se configuran adecuadamente, obtendrá un sistema con mucho
espacio vacío en una partición y ninguno en otra. Otra contrariedad
es que las particiones separadas - especialmente las que se
utilizan para puntos de montaje importantes como /usr
o /var - a menudo requieren que sea el administrador
el que arranque el sistema con un sistema de ficheros de inicio
en RAM (initramfs) para montar la partición antes de que otros
guiones de inicio se ejecuten. Este no es siempre el caso, por lo
que sus resultados pueden ser diferentes.
También, existe un límite de 15 particiones para SCSI y SATA.
Como ejemplo de un esquema de particionamiento usaremos un disco
duro de 20 Gb de un portátil para fines de demostración (incluye
servidor web, servidor de correo, gnome, etc.):
Listado de Código 2.1: Ejemplo de particionamiento |
$ df -h
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext4 509M 132M 351M 28% /
/dev/sda2 ext4 5.0G 3.0G 1.8G 63% /home
/dev/sda7 ext4 7.9G 6.2G 1.3G 83% /usr
/dev/sda8 ext4 1011M 483M 477M 51% /opt
/dev/sda9 ext4 2.0G 607M 1.3G 32% /var
/dev/sda1 ext2 51M 17M 31M 36% /boot
/dev/sda6 swap 516M 12M 504M 2% <not mounted>
|
/usr parece estar bastante llena (83%), pero una vez que
todo el software esté instalado no tenderá a llenarse más. Aunque
asignar unos cuantos gigabytes de espacio a /var puede
parecer excesivo, recuerde que Portage utiliza esta partición por
defecto para compilar paquetes. Si quiere mantener /var
de un tamaño razonable, cómo 1 GB, necesitará modificar la variable
PORTAGE_TMPDIR en /etc/portage/make.conf para
apuntar a una partición con espacio libre suficiente para compilar
paquetes muy grandes como OpenOffice.
4.c. Utilizar fdisk para particionar su disco
Importante:
Si su entorno va a utilizar particiones mayores de 2 TB, por favor,
utilice las instrucciones comentadas en
Utilizar parted para particionar su disco. La herramienta
fdisk no puede manejar tamaños tan grandes de partición.
|
Las siguientes instrucciones explican como particionar el disco duro
utilizando fdisk. El ejemplo de disposición de las particiones
ha sido mencionado anteriormente:
| Partición |
Descripción |
| /dev/sda1 |
Partición de arranque (boot) |
| /dev/sda2 |
Partición de intercambio (swap) |
| /dev/sda3 |
Partición de raíz (root) |
Cambie el esquema de particionamiento según sus propias preferencias.
Examinar el esquema de particionamiento actual
fdisk es una popular y potente herramienta que permite dividir
el disco en particiones. Arranca fdisk sobre tu unidad de disco
(en nuestro ejemplo usamos el dispositivo de disco
/dev/sda):
Listado de Código 3.1: Ejecutar fdisk |
# fdisk /dev/sda
|
Una vez que fdisk esté en ejecución, el programa ofrecerá el
siguiente símbolo de espera de órdenes:
Listado de Código 3.2: Símbolo de espera de órdenes de fdisk |
Command (m for help):
|
Teclee p para mostrar el esquema de particionamiento actual:
Listado de Código 3.3: Un ejemplo de particionamiento |
Command (m for help): p
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 49 264600 82 Linux swap
/dev/sda3 50 70 158760 83 Linux
/dev/sda4 71 2184 15981840 5 Extended
/dev/sda5 71 209 1050808+ 83 Linux
/dev/sda6 210 348 1050808+ 83 Linux
/dev/sda7 349 626 2101648+ 83 Linux
/dev/sda8 627 904 2101648+ 83 Linux
/dev/sda9 905 2184 9676768+ 83 Linux
Command (m for help):
|
Este disco en particular está configurado para albergar siete sistemas
de ficheros Linux, cada partición con su correspondiente etiqueta
"Linux", así como una partición de intercambio (swap) que aparece con
la etiqueta "Linux swap".
Eliminar todas las particiones
Primero eliminaremos todas las particiones existentes en el
disco. Teclee d para eliminar una partición, seguido por
intro. Por ejemplo, para borrar una partición existente en
/dev/sda1:
Listado de Código 3.4: Eliminar una partición |
>
Command (m for help): d
Partition number (1-4): 1
|
La partición ha sido marcada para su borrado. Ya no aparecerá si
teclea p, pero no será eliminada hasta que guarde los cambios
realizados. Si comete una equivocación y desea abortar los cambios
realizados, teclee q inmediatamente y pulse intro; las
particiones no serán eliminadas.
Ahora, asumiendo que intenta eliminar todas las particiones existentes
del disco duro, debe teclear p en forma repetida para ver el
listado de particiones y pulsar d junto con el número de la
partición para borrarlas. Finalmente, acabará teniendo una tabla de
particiones vacía:
Listado de Código 3.5: Una tabla de particiones vacía |
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
Command (m for help):
|
Ahora que la tabla de particiones en memoria del sistema está vacía,
estamos preparados para crear nuevas particiones. Utilizaremos el
esquema por defecto, tal como hemos acordado anteriormente. ¡Claro
está, que no debe seguir estas instrucciones al píe de la letra si no
desea tener una tabla de particiones exactamente igual que la nuestra!
Crear una partición de arranque
En primer lugar debemos crear una pequeña partición de
arranque. Teclee n para crear esta nueva partición, y luego
p para seleccionar una partición primaria, siguiendo por
1 para elegirla como primera partición primaria. Cuando el
sistema solicite introducir el primer cilindro, pulse intro y cuando
pida definir el valor del último cilindro, teclee +32M para
crear una partición de tamaño 32 Mb.
Listado de Código 3.6: Crear una partición de arranque |
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M
|
Si ahora teclea p, debe ver la siguiente partición en la tabla:
Listado de Código 3.7: Una partición creada |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 14 105808+ 83 Linux
|
Necesitamos hacer que esta partición sea arrancable. Teclee a
para marcar esta partición como arrancable. Si introduce p de
nuevo, verá que un * ha aparecido en la columna "Boot".
Crear una partición de intercambio
Vamos a crear ahora la partición de intercambio. Para hacerlo, teclee
n para crear una nueva partición, y luego p para
comunicar a fdisk que debe ser una partición primaria. Entonces teclee
2 para crear la segunda partición primaria,
/dev/sda2 en nuestro caso. Cuando el sistema solicite
introducir el valor del primer cilindro, pulse intro y cuando solicite
introducir el valor del último, teclee +512M para crear una
partición de 512 Mb. Cuando lo haya hecho, teclee t para
establecer el tipo de partición, 2 para seleccionar la
partición que acaba de crear y entonces 82 para fijar el tipo
"Linux Swap". Una vez completados estos pasos la introducción de
p visualizará la tabla de particiones que debe ser similar a
ésta.
Listado de Código 3.8: Listado de particiones después de la creación de la partición de intercambio |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
|
Crear la partición raíz
En el último lugar, creamos la partición de raíz. Introduzca n
para crear la nueva partición, p para marcarla como partición
primaria. A continuación teclee 3 para crear la tercera
partición primaria, /dev/sda3, según nuestro ejemplo. Al
solicitar la introducción del valor del primer cilindro de la
partición pulsamos intro, mientras que cuando el sistema solicite que
introduzcamos el valor del último cilindro, también le damos a intro
para crear una partición que ocupe todo el espacio restante en el
disco. Tras completar todos estos pasos, introducimos p para
ver la tabla de particiones que debe parecer mucho a la siguiente:
Listado de Código 3.9: Listado de particiones después de crear la partición de raíz |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
/dev/sda3 82 3876 28690200 83 Linux
|
Almacenar la tabla de particiones
Para guardar el esquema de particionamiento y salir del fdisk
tecleamos w.
Listado de Código 3.10: Guardado y salida del fdisk |
Command (m for help): w
|
Ahora que las particiones están creadas, puede proseguir con la Crear los sistemas de ficheros.
4.d. Utilizar parted para particionar su disco
En este capítulo, le guiaremos en la creación del ejemplo de
particionamiento descrito anteriormente en las instrucciones. Al
contrario que en el capítulo anterior, describiremos el método
utilizando la aplicación parted. Tanto parted como
fdisk ofrecen las mismas funciones, por lo que si ya ha
particionado su disco utilizando fdisk, puede saltarse esta
sección y continuar con Crear los sistemas
de ficheros.
La disposición de particiones que utilizaremos se muestra en la
siguiente tabla:
| Partición |
Descripción |
| /dev/sda1 |
Partición de arranque |
| /dev/sda2 |
Partición de intercambio |
| /dev/sda3 |
>Partición raíz |
Cambie la disposición de sus particiones para adaptarlas a sus
preferencias.
Echar un vistazo a la disposición actual de las particiones
La aplicación parted es de alguna forma una variación moderna de
fdisk. Ofrece una interfaz más simple para el particionamiento
de sus discos y soporta particiones muy grandes (mayores de 2 TB).
Arranque parted en su disco (en nuestro ejemplo, utilizaremos
/dev/sda):
Listado de Código 4.1: Arrancar parted |
# parted /dev/sda
GNU Parted 2.3
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
|
Para mostrar todas las opciones que soporta parted, teclee
help y pulse la tecla Intro. Por ahora, le pediremos a
parted que nos muestre las particiones que están en uso
actualmente en el disco seleccionado. Para hacer esto, se puede
utilizar la orden print.
Listado de Código 4.2: Una ejemplo de configuración de particiones mostrado por parted |
(parted) print
Model: SCSI Block Device
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 2148MB 2148MB primary ext4
2 2148MB 3222MB 1074MB primary linux-swap(v1)
3 3222MB 21.5GB 18.3GB primary lvm
|
Opcional: Ajustar la etiqueta GPT
La mayoría de los discos en los sistemas x86/amd64 están preparados para
utilizar una etiqueta msdos. Sin embargo, si va crear particiones
muy grandes (de 2 TB y mayores), deberá usar en su disco una etiqueta
gpt que significa GUID Partition Type (Tipo de Partición
GUID). Si usa parted, puede hacer esto con mklabel gpt:
Aviso:
Al cambiar el tipo de partición, todas las particiones de su disco serán
eliminadas. Se perderán todos los datos del disco.
|
Listado de Código 4.3: Ajustar la etiuqueta GPT |
(parted) mklabel gpt
|
Eliminar todas las particiones
Si no ha hecho esto aún, (por ejemplo a través de la operación
mklabel anterior, o porque el disco es una recientemente
formateado), eliminaremos en primer lugar todas las particiones
presentes en el disco. Teclee rm <número> donde
<número> es la partición que desea eliminar.
Listado de Código 4.4: Eliminar una partición del disco |
(parted) rm 2
|
Haga lo mismo para el resto de particiones que no va a necesitar.
Asegúrese, sin embargo, de que no comete errores en esta parte ya que
parted realiza los cambios inmediatamente (al contrario que
fdisk que los deja pendientes, permitiendo al usuario "deshacer"
sus cambios antes de salvarlos o salir de fdisk).
Crear las particiones
Ahora, crearemos las particiones que mencionamos arriba. Esto no va a
ser muy difícil usando parted, todo lo que necesitamos es
informar a parted sobre los siguientes ajustes:
-
El tipo de partición que se debe utilizar. Este será
normalmente primary (primaria) en caso de que no vaya a
tener más de cuatro particiones (si usa la etiqueta de
particionamiento msdos). De lo contrario, necesitará
que su cuarta partición sea extended (extendida) la cual
contendrá el resto del disco, y deberá crear particiones de tipo
logical (lógicas) dentro de ella. Si utiliza un disco
etiquetado con partición gpt, entonces no tendrá límite
en el número de particiones primarias que puede crear.
-
El tipo de sistema de ficheros a usar. La aplicación
parted soporta los sistemas de ficheros más comunes y
sabe qué tipo de identificador (ID) de partición necesita para
usar en las particiones. Esto no significa que parted
vaya a crear un sistema de ficheros en la partición (puede hacer
esto con la orden mkpartfs, sin embargo, nosotros
usaremos las órdenes normales mkfs.* más adelante para este
propósito). El ID de la partición lo utilizan a menudo las
aplicaciones de auto detección para saber que hacer con una
partición en particular.
-
La localización en la que comienza la partición (se puede expresar
en MB o en GB)
-
La localización en la que termina la partición (se puede expresar
en MB o en GB)
Una ventaja de parted es que puede usar los tamaños de la
partición para encontrar las localizaciones correctas de comienzo y
terminación de forma fácil, como veremos en el próximo ejemplo.
Listado de Código 4.5: Crear las particiones |
(parted) mkpart primary ext2 0 32mb
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) mkpart primary linux-swap 32mb 544mb
(parted) mkpart primary ext4 544mb -1s
Warning: You requested a partition from 544MB to 21.5GB.
The closest location we can manage is 544MB to 21.5GB.
Is this still acceptable to you?
Yes/No? y
|
Puede ahora mostrar (print) la disposición de las particiones
de nuevo, para validar que todo está en su sitio. Cuando esté
preparado, utilice la orden quit para salir de parted.
4.e. Crear los sistemas de ficheros
Introducción
Creadas las particiones, debemos formatearlas para poder colocarles un
sistema de ficheros. Si no le importa el tipo de sistema de ficheros
que desee utilizar y está conforme con nuestra elección por defecto,
continúe con la sección Creación de
Sistema de Ficheros en una Partición. En caso contrario, siga
leyendo para ver qué sistemas de ficheros puede utilizar ...
Sistemas de ficheros
El núcleo Linux soporta varios sistemas de ficheros. Explicaremos
ext2, ext3, ext4, ReiserFS, XFS y JFS por ser los más utilizados en
sistemas Linux.
ext2 es un sistema de ficheros Linux probado, pero no dispone
de soporte para transacciones, lo que significa que las comprobaciones
rutinarias al arrancar pueden tardar bastante tiempo. Ahora, hay
muchas opciones alternativas, sistemas de ficheros de nueva generación
con soporte para transacciones cuya integridad puede ser verificada
con mayor rapidez, por lo que gozan de mayor popularidad. Los sistemas
de ficheros transaccionales previenen retrasos durante el reinicio del
equipo, incluso cuando el sistema de ficheros está en un estado
inconsistente. Si desea instalar Gentoo en un disco pequeño (de menos de
4GB), entonces necesitará indicarle a ext2 que reserve suficientes nodos
i cuando cree el sistema de ficheros. La aplicación mke2fs utiliza
el ajuste "bytes-per-inode" para calcular cuantos nodos-i tendría un
sistema de ficheros. Al ejecutar mke2fs -T small /dev/<device>
el número de nodos-i generalmente será el cuádruple para un sistema de
ficheros dado ya que su "bytes-per-inode" se reduce de uno cada 16kB a uno
cada 4kB. Puede ajustar esto más tarde utilizando
mke2fs -i <ratio> /dev/<device>.
ext3 es la versión transaccional de ext2, que proporciona
soporte para una rápida recuperación además de otros modos mejorados
de funcionamiento como registro completo y ordenado de datos. Utiliza
un árbol HTree como índice que permite un alto rendimiento en casi todas
las situaciones. En resumen ext3 es un sistema de ficheros muy bueno
y fiable. Si desea instalar Gentoo en un disco pequeño (de menos de 4GB),
entonces necesitará indicarle a ext3 que reserve suficientes nodos-i
cuando cree el sistema de ficheros. La aplicación mke2fs utiliza
el ajuste "bytes-per-inode" para calcular cuantos nodos-i tendría un
sistema de ficheros. Al ejecutar
mke2fs -T small /dev/<device> el número de nodos-i
generalmente será el cuádruple para un sistema de ficheros dado ya que su
"bytes-per-inode" se reduce de uno cada 16kB a uno cada 4kB. Puede ajustar
esto más tarde utilizando
mke2fs -i <ratio> /dev/<device>.
El sistema de ficheros ext4 se creó como una bifurcación en el
código (fork) del sistema de ficheros ext3, incorporando nuevas
características, mejoras de rendimiento y eliminación de los limites
de tamaño realizando cambios moderados en el formato del disco. Puede
trabajar con volúmenes de hasta 1 EB y con un tamaño máximo de fichero
de 16 TB. En lugar de la asignación de bloques usando mapas de bits
que emplean los sistemas de ficheros clásicos ext2/3, ext4 utiliza
extents (en inglés), lo cual mejora el rendimiento con los ficheros
grandes y reduce la fragmentación. Ext4 también ofrece un algoritmo más
sofisticado de asignación de bloques (asignación demorada y asignación
múltiple de bloques) ofreciendo al controlador del sistema de ficheros
más formas de optimizar la disposición de los datos en el disco. El
sistema de ficheros ext4 es un compromiso entre la estabilidad del
código para producción y el deseo de introducir extensiones a un
sistema de ficheros que ya casi tiene una década.
JFS de IBM es un sistema de ficheros de alto rendimiento con
soporte transaccional. JFS es un sistema de ficheros ligero, rápido
y fiable, basado en un árbol B+ con un buen rendimiento bajo varias
condiciones.
ReiserFS es un sistema de ficheros B+ (basado en árboles
balanceados) que tiene un gran rendimiento, especialmente cuando
trata con muchos ficheros pequeños a costa de emplear más ciclos
de CPU. ReiserFS parece tener menos mantenimiento que otros
sistemas de ficheros.
XFS es un sistema de ficheros transaccional el cual viene con un
juego de características robustas y está optimizado para ser
escalable. XFS parece ser menos robusto ante fallos hardware.
Creación de Sistema de Ficheros en una Partición
Para crear un sistema de ficheros en una partición o volumen existen
herramientas específicas para cada sistema de ficheros:
| Sistema de Ficheros |
Orden de Creación |
| ext2 |
mkfs.ext2 |
| ext3 |
mkfs.ext3 |
| ext4 |
mkfs.ext4 |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
Por ejemplo, para formatear la partición de arranque
(/dev/sda1 según el ejemplo) en formato ext2 y la
partición de raíz (/dev/sda3 según el ejemplo) en formato
ext4, utilizaría las siguientes órdenes:
Listado de Código 5.1: Creación de un sistema de ficheros en una partición |
# mkfs.ext2 /dev/sda1
# mkfs.ext4 /dev/sda3
|
Y ahora, puede crear sistemas de fichero sobre sus particiones o
volúmenes lógicos recién creados.
Activar la partición de intercambio
mkswap es la orden utilizada para inicializar particiones de
intercambio:
Listado de Código 5.2: Inicialización de una partición de intercambio |
# mkswap /dev/sda2
|
Para activar la partición, use la orden swapon:
Listado de Código 5.3: Activar la partición de intercambio |
# swapon /dev/sda2
|
Cree y active la partición de intercambio con las órdenes mencionadas
arriba.
4.f. Montaje
Ahora que las particiones están inicializadas y albergan sistemas de
ficheros, es hora de montarlas. Utilice la orden mount. No
olvide crear puntos de montaje necesarios para cada partición que
haya creado. Como ejemplo montamos la partición de raíz y de arranque:
Listado de Código 6.1: Montaje de particiones |
# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot
|
Nota:
Si quiere que su /tmp resida sobre una partición
diferente, asegúrese de cambiar los permisos después de montarla:
chmod 1777 /mnt/gentoo/tmp. Lo mismo debe ser aplicado a
/var/tmp.
|
También necesitamos montar el sistema de ficheros proc (la interfaz
virtual del núcleo) en /proc. Pero primero necesitamos
situar nuestros ficheros en las particiones.
Continue con Instalación de Ficheros
de Instalación de Gentoo.
5. Instalar los archivos de instalación Gentoo
5.a. Instalar el Stage comprimido (tarball)
Ajustar la Fecha/Hora correcta
Antes de continuar debe revisar la fecha y la hora y actualizarlos.
¡Un reloj mal configurado puede traer resultados extraños a futuro!
Para comprobar la fecha/hora actual, ejecute la orden date:
Listado de Código 1.1: Verificar la fecha/hora |
# date
Fri Mar 29 16:21:18 UTC 2005
|
Si la fecha/hora está equivocada, actualícela con la orden date
MMDDhhmmAAAA, con la siguiente sintaxis (Mes, Día,
hora, minuto y Año). En este punto, se debería usar
la hora UTC. Podrá utilizar su propia zona horaria más adelante. Por
ejemplo, para ajustar la fecha y hora a las 16:21 horas del 29 de
marzo del 2005:
Listado de Código 1.2: Ajustar la fecha/hora UTC |
# date 032916212005
|
Realizar su propia elección
El siguiente paso es instalar el archivo tarball del
stage3 en su sistema. La orden uname -m le puede ayudar
a decidir el fichero stage a descargar ya que ofrece información
de la arquitectura de su sistema.
5.b. Utilizar un stage obtenido en Internet
Descargar el stage comprimido (tarball)
Vaya al punto de montaje de Gentoo en el que ha montado los sistemas
de archivo (probablemente /mnt/gentoo):
Listado de Código 2.1: Ir al punto de montaje de Gentoo |
# cd /mnt/gentoo
|
Dependiendo del medio de instalación, tendremos un par de herramientas
disponibles para descargar el stage. Si disponemos de links,
podremos navegar por la lista de
servidores réplica de Gentoo y escoger el más cercano a
nosotros: escriba links http://www.gentoo.org/main/en/mirrors.xml
y pulse intro.
Si no tiene links, debería disponer de lynx. Si necesita
pasar a través de un proxy, exporte las variables http_proxy y
ftp_proxy:
Listado de Código 2.2: Configurar la información del proxy para lynx |
# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"
|
A partir de ahora asumiremos que tiene links a su disposición.
Seleccione un servidor réplica cercano. Normalmente los servidores
HTTP nos servirán, sin embargo, también están disponibles otros protocolos.
Entre en el directorio releases/x86/autobuilds/. En él,
Deberían aparecer todos los archivos de stage disponibles para su arquitectura
(quizá almacenados en subdirectorios con el nombre de cada subarquitectura).
Seleccione uno y pulse D para descargarlo. Cuando haya terminado, pulse
Q para cerrar el navegador.
La mayoría de usuarios de PC deberían emplear el archivo stage3-i686-<release>.tar.bz2. Todos los PCs modernos son considerados i686. Si
utiliza una máquina antigua, puede revisar la lista de procesador
compatibles con i686 en la wikipedia. Los procesadores antiguos,
como son los Pentium, K5, K6 o Via C3 y similares necesitan el stage
i586. Los procesadores más antiguos de i486 no están
soportados.
Listado de Código 2.3: Navegar por la lista de servidores réplica con links |
# links http://www.gentoo.org/main/en/mirrors.xml
# links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml
|
Conviene asegurarse de que ha descargado un archivo stage3,
las instalaciones que utilizan un stage1 o stage2 ya no reciben soporte
(y en la mayoría de los casos, no podrá encontrar ficheros tarball
de los stage1 o stage2 en nuestros servidores réplica regulares).
Si quiere comprobar la integridad del tarball de stage que ha descargado,
openssl y compare la salida con las sumas ofrecidas por el servidor
réplica. Los ficheros digest ofrecen varias sumas de comprobación, cada
una se ha realizado con un algoritmo diferente. La sumas recomendadas
son SHA512 y Whirlpool.
Listado de Código 2.4: Calcular la integridad de las sumas de comprobación de un fichero tarball de stage |
# openssl dgst -r -sha512 stage3-i686-<release>.tar.bz2
# sha512sum stage3-i686-<release>.tar.bz2
# openssl dgst -r -whirlpool stage3-i686-<release>.tar.bz2
|
A continuación compare la salida de estas órdenes con el valor
registrado en los ficheros con extensión .DIGESTS que puede encontrar
en los servidores réplica. Los valores deben coincidir, de lo contrario,
los ficheros descargados podrían estar corruptos (o el fichero de
digests).
Extraer el Stage comprimido
Ahora desempaquetamos el stage descargado en sistema. Usaremos
tar para dicha labor y este es el método más fácil.
Listado de Código 2.5: Descomprimir el Stage |
# tar xvjpf stage3-*.tar.bz2
|
Asegúrese de usar las mismas opciones xvjpf). La x se usa
para Desempaquetar, la v (Verbose)para ver que
pasa durante el proceso de extracción (opcional), la j para
Descomprimir con bzip2, la p para Preservar los
permisos y la f para decir que extraemos un archivo, no
la entrada estándar.
Ahora que el stage está instalado sigamos con Configurar las opciones de compilación.
5.c. Configurar las opciones de compilación
Introducción
Para optimizar Gentoo, tendrá que ajustar un par de variables que
afectarán el comportamiento de Portage. Todas estas variables se
pueden fijar como variables de entorno (usando export) pero eso
no es permanente. Para mantener su configuración, Portage dispone de
/etc/portage/make.conf, un fichero de configuración para
Portage. Este es el fichero que editaremos ahora.
Nota:
Una lista comentada de todas las posibles variables puede encontrarse
en /mnt/gentoo/usr/share/portage/make.conf.example. Para
una instalación de Gentoo correcta lo único que necesita es configurar
las variables que se mencionan en las siguientes líneas.
|
Use su editor favorito (en esta guía nosotros usaremos nano. Así
que empezamos con la modificación de las variables.
Listado de Código 3.1: Abrir /etc/portage/make.conf |
# nano -w /mnt/gentoo/etc/portage/make.conf
|
Como probablemente habrá notado, el fichero
make.conf.example está estructurado de una manera genérica:
Las líneas comentadas empiezan con "#", otras líneas definen variables
usando la sintaxis VARIABLE="contenido". El fichero
make.conf utiliza la misma sintaxis. Discutiremos muchas
de esas variables más adelante.
CFLAGS y CXXFLAGS
Las variables CFLAGS y CXXFLAGS, definen los parámetros
de optimización para el compilador de C y C++ de gcc
respectivamente. Aunque generalmente se definen aquí, tendrá el
máximo rendimiento si optimiza estos parámetros para cada programa
por separado. La razón es que cada programa es diferente.
En el fichero make.conf deberá definir los parámetros de
optimización que piense que vayan a hacer su sistema el mejor en
todas las situaciones. No coloque parámetros experimentales en
esta variable; un nivel demasiado alto de optimización puede hacer que
los programas se comporten mal (cuelgues, o incluso peor,
funcionamientos erróneos).
No explicaremos todas las opciones posibles para la optimización. Pero
si quiere conocerlas todas, léase El manual en línea
de GNU o la página información de gcc (info gcc --
Solo en un sistema Linux funcional). El fichero make.conf
también contiene una gran cantidad de ejemplos e información; no
olvide leerlo también.
El primer parámetro es -march= o -mtune=, el cual especifica
el nombre de la arquitectura destino. Las posibles opciones se
describen en el fichero make.conf.example (como comentarios).
Un valor frecuentemente utilizado es native ya que indica al
compilador que seleccione la arquitectura destino del sistema actual (en
el que se está realizando la instalación).
Seguida de esta, está el parámetro -O, que especifica la clase
optimización de gcc. Las clases posibles son s (para
tamaño optimizado), 0 (para no optimizar), 1, 2
o incluso 3 para la optimización de velocidad (cada clase
tiene los mismos parámetros que la primera, más algunos extras).
-O2 es la recomendada. Es conocido que -O3 provoca
problemas cuando se utiliza globalmente en el sistema, por esto
se recomienda mantener siempre -O2.
Otros parámetros de optimización bastante populares son los
-pipe (usando tuberías en lugar de ficheros temporales para la
comunicación entre las diferentes etapas de compilación). No tiene
ningún impacto sobre le código generado, pero usa más memoria. En
sistemas con poca memoria, el proceso del compilador podría ser
terminado. En este caso, no use este parámetro.
Cuidado con utilizar -fomit-frame-pointer (el cual no mantiene
el puntero de macro en un registro para las funciones que no lo necesiten)
pues podría tener graves repercusiones en la depuración de errores en
aplicaciones.
Cuando defina las variables CFLAGS y CXXFLAGS, debería
combinar algunos parámetros de optimización, Los valores por defecto
que trae el archivo stage3 deberían ser suficientemente buenos.
El siguiente ejemplo es simplemente eso, un ejemplo:
Listado de Código 3.2: Definir las variables CFLAGS y CXXFLAGS |
CFLAGS="-O2 -march=i686 -pipe"
CXXFLAGS="${CFLAGS}"
|
Nota:
Quizá quiera echar un vistazo a la Guía de Compilación Optimizada
para mayor información sobre las distintas opciones de compilación
que afectan al sistema.
|
MAKEOPTS
Con la variable MAKEOPTS definimos cuantas compilaciones
paralelas pueden hacerse al mismo tiempo cuando instalamos un
paquete. El valor sugerido se obtiene sumando uno a la cantidad
de CPUs (o de cores) de su sistema, aunque este valor no es
siempre el perfecto.
Listado de Código 3.3: MAKEOPTS para un sistema normal de 1-CPU |
MAKEOPTS="-j2"
|
¡Preparados, listos, ya!
Actualice su /mnt/gentoo/etc/portage/make.conf con
sus propios parámetros y guarde los cambios (los usuarios de
nano deben usar Ctrl-X). Ahora estamos listos para
continuar con Instalando el sistema
base de Gentoo.
6. Instalar el sistema base de Gentoo
6.a. Enjaulamiento
Opcional: Seleccionar los servidores réplica
Para poder descargar el código fuente rápidamente se recomienda
seleccionar un servidor réplica rápido. Portage comprobará en su
archivo make.conf la variable GENTOO_MIRRORS y utilizará
los servidores que se especifican allí. Puede navegar en nuestra lista de réplicas y buscar un
servidor (o servidores) que estén cerca de su localización (ya que
estos suelen resultar los más rápidos), sin embargo, nosotros le
facilitamos una buena herramienta llamada mirrorselect la cual
proporciona una interfaz amigable para seleccionar los servidores
réplicas que quiera. Simplemente navegue a los servidores réplica que
desee y pulse la barra espaciadora para seleccionar uno o más servidores.
Listado de Código 1.1: Utilizar mirrorselect para la variable GENTOO_MIRRORS |
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
|
Otra importante configuración es la variable SYNC en
make.conf. Esta variable contiene el servidor rsync que
quiere utilizar para actualizar su árbol Portage (la colección de
ebuilds, guiones que contienen toda la información que Portage necesita
para descargar e instalar software). Aunque puede introducir manualmente
el servidor SYNC, mirrorselect puede encargarse también de esto:
Listado de Código 1.2: Seleccionar un servidor rsync utilizando mirrorselect |
# mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf
|
Después de ejecutar mirrorselect es recomendable que compruebe
sus configuraciones en /mnt/gentoo/etc/portage/make.conf.
Nota:
Si desea seleccionar un servidor SYNC manualmente en
make.conf, revise la lista de servidores espejo
comunitarios para averiguar el servidor más
cercano. Recomendamos escoger uno de rotación, como
rsync.us.gentoo.org, en vez de uno individual. Esto ayuda a
repartir la carga y agrega seguridad en caso que el servidor espejo
individual esté fuera de línea.
|
Copiar la información DNS
Aún queda una cosa que hacer antes de entrar en el nuevo entorno,
copiar la información sobre los DNS en /etc/resolv.conf.
Necesita hacer esto para asegurarse de que la red continúe funcionando
después de entrar en el nuevo entorno. /etc/resolv.conf
contiene los servidores de nombres para su red.
Listado de Código 1.3: Copiar la información de DNS |
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
|
Montar los sistemas de archivos necesarios
En breve, cambiaremos la raíz de Linux a la nueva localización. Para
asegurarse de que el nuevo entorno funciona correctamente, necesitaremos
disponer de ciertos sistemas de ficheros en la nueva localización.
Monte el sistema de ficheros /proc en
/mnt/gentoo/proc para poder usar la información
proporcionada por el núcleo dentro del entorno chroot y luego monte el
sistema de ficheros /dev y /sys.
Listado de Código 1.4: Montar /proc y /dev |
# mount -t proc none /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev
|
Entrar en el nuevo entorno
Ahora que todas las particiones están inicializadas y el sistema base
instalado, es hora de entrar en nuestro nuevo entorno de instalación
haciendo chrooting en él. Esto significa pasar desde el actual
entorno de instalación (CD de instalación u otro medio) hacia su
entorno de instalación (o sea, las particiones inicializadas).
El enjaulamiento (chroot) se hace en tres pasos. En primer lugar,
se cambia la raíz desde / (en el medio de instalación)
a /mnt/gentoo (en sus particiones) utilizando
chroot. A continuación se cargan en memoria algunas
definiciones ofrecidas por /etc/profile mediante
source. Para terminar, se redefine el símbolo de
espera de órdenes primario que nos hará recordar que nos
encontramos en un entorno enjaulado (chroot).
Listado de Código 1.5: Entrar al nuevo entorno |
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"
|
¡Enhorabuena! Está dentro de su nuevo entorno Gentoo Linux.
Por supuesto aún no hemos terminado, todavía quedan unas cuantas
secciones :-)
Si, en cualquier momento, necesita otro terminal o consola para acceder
al entorno chroot, todo lo que necesita hacer es ejecutar de nuevo los
pasos de arriba.
6.b. Configurar Portage
Desempaquetar una instantánea de Portage
Ahora debe instalar una instantánea de Portage, una colección de
ficheros que informa a Portage de los títulos que se pueden instalar,
qué perfiles están disponibles, etc. Los contenidos de esta
instantánea se extraerán en /usr/portage.
Recomendamos utilizar emerge-webrsync. Esta orden obtendrá
la última instantánea de portage (con las liberaciones diarias de
Gentoo) de uno de nuestros servidores réplica y la instalará en
su sistema.
Listado de Código 2.1: Ejecutar emerge-webrsync para instalar una instantánea de Portage |
# mkdir /usr/portage
# emerge-webrsync
|
Opcional: Actualizar el árbol Portage
Ahora puede actualizar su árbol Portage a la última versión.
La orden emerge --sync utilizará el protocolo rsync para
actualizar el árbol Portage (que obtuvo anteriormente mediante
emerge-webrsync) a su último estado.
Listado de Código 2.2: Actualizar el árbol Portage |
# emerge --sync
# emerge --sync --quiet
|
Si está detrás de un cortafuegos que bloquea el tráfico rsync, puede
ignorar esta paso de forma segura ya que tiene su árbol Portage
actualizado.
Si se indica que está disponible una nueva versión de Portage y se debe
actualizar, debería hacerlo ejecutando emerge --oneshot portage.
Se indicará también que hay nuevo elementos de noticias que necesitan
leerse ("news items need reading"). Hablaremos de ello ahora.
Leer los elementos de noticias
Cuando sincroniza su sistema con el árbol de Portage, puede que se le
informe de los siguiente:
Listado de Código 2.3: Portage informa de que hay nuevos elementos de noticias disponibles |
* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.
|
Los elementos de noticias de Portage se crearon para ofrecer un medio
de comunicación en el que incluyeran mensajes críticos a los usuarios
a través del árbol sincronizado. Para gestionarlos necesitará
utilizar eselect news. Mediante el argumento read podrá
leer todos los elementos de noticias. Con list puede echar
un vistazo rápido a los elementos de noticias disponibles, y con
purge puede eliminarlos una vez que los haya leído y no
tenga la necesidad de volverlos a consultar.
Listado de Código 2.4: Gestionar las noticias de Portage |
# eselect news list
# eselect news read
|
Se puede obtener más información sobre el lector de noticias en la
página del manual: man news.eselect.
Elegir el perfil adecuado
Primero, una pequeña definición:
Un perfil es la piedra inicial de cualquier sistema Gentoo. No solamente
especifica unos valores predeterminados para USE, CFLAGS, y otras
variables importantes, también bloquea del sistema ciertos rangos de
versiones de algunos paquetes. Son mantenidos por los desarrolladores de
Gentoo.
Tiempo atrás, los perfiles raramente los tocaba el usuario. Sin
embargo, puede haber situaciones en las cuales sea necesaria un cambio
de perfil.
Se puede ver el perfil actualmente utilizado con la siguiente orden:
Listado de Código 2.5: Comprobar el perfil del sistema |
# eselect profile list
Available profile symlink targets:
[1] default/linux/x86/13.0 *
[2] default/linux/x86/13.0/desktop
[3] default/linux/x86/13.0/server
|
Como puede ver, también existen sub-perfiles desktop
(escritorio) y server (servidor) para algunas
arquitecturas. Al ejecutar eselect profile list se
mostrarán los perfiles disponibles.
Después de revisar los perfiles disponibles para su arquitectura,
puede utilizar uno diferente si lo desea:
Listado de Código 2.6: Cambiar de perfil |
# eselect profile set 2
|
Nota:
El sub-perfil developer existe específicamente para labores de
desarrollo Gentoo Linux. No está diseñado para ayudar a
establecer entornos generales de desarrollo.
|
Configurar la variable USE
La variable USE es una de las más importantes que Gentoo
proporciona a sus usuarios. Muchos programas se pueden compilar con
o sin soporte opcional para ciertas cosas. Por ejemplo, algunos
programas se pueden compilar con soporte gtk, o con soporte
qt. Otros programas se pueden compilar con o sin soporte SSL.
Algunos programas se pueden compilar con soporte framebuffer
(svgalib) en lugar de soporte X11 (servidor X).
Muchas distribuciones compilan sus paquetes con el mayor soporte posible,
aumentando el tamaño de los programas y su tiempo de carga, sin mencionar
una cantidad enorme de dependencias. Con Gentoo puedes definir con que
opciones debe ser compilado un paquete. Ahí es donde actúa la variable
USE.
En la variable USE definimos palabras clave que son
transformadas a opciones de compilación. Por ejemplo ssl
compilará los programas que lo requieran con soporte ssl.-X
quitara el soporte para el servidor X (nótese el signo menos
delante). gnome gtk -kde -qt4 compilará sus programas con
soporte para gnome (y gtk), pero sin soporte para kde (y qt), haciendo
su sistema completamente compatible con GNOME.
Los valores por defecto de la variable USE se encuentran en
make.defaults, archivos de su perfil. Encontrará los
archivos make.defaults en el directorio al cual apunte
/etc/portage/make.profile y todos sus directorios padre.
El valor predeterminado de configuración de la variable USE
es la suma de todas las configuraciones de USE en todos los
archivos make.defaults. Lo que modifique en
/etc/portage/make.conf se calcula contra estos valores.
Si pone algún valor en su USE, es añadido a la lista por
defecto. Si elimina algo en su variable USE, poniéndole un
signo menos delante, es eliminado de la lista por defecto (si estaba
en ella, claro). Nunca cambie nada en
/etc/portage/make.profile ya que ¡se sobreescribirá
cuando actualice Portage!
Puede encontrar una descripción completa sobre la variable USE
en la segunda parte del Manual de
Gentoo Capítulo 1: Variables
USE. Encontrará una descripción más extensa sobre las opciones
de la variable USE en su sistema, en
/usr/portage/profiles/use.desc.
Listado de Código 2.7: Ver las opciones disponibles |
# less /usr/portage/profiles/use.desc
|
Como ejemplo, se muestran algunas opciones USE para un sistema
basado en KDE con DVD, ALSA y soporte para grabar CD's.
Listado de Código 2.8: Abrir /etc/portage/make.conf |
# nano -w /etc/portage/make.conf
|
Listado de Código 2.9: Configurar la variable USE |
USE="-gtk -gnome qt4 kde dvd alsa cdr"
|
6.c. Zona horaria
Para terminar, seleccione su zona horaria de forma que su sistema
conozca donde está situado físicamente. Busque su zona horaria en
/usr/share/zoneinfo, a continuación, cópiela a
/etc/localtime. Por favor, evite las zonas horarias
del tipo /usr/share/zoneinfo/Etc/GMT* ya que sus nombres
no indican las zonas esperadas. Por ejemplo, GMT-8 es,
de hecho GMT+8.
Listado de Código 3.1: Ajustar la información de la zona horaria |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/Europe/Madrid /etc/localtime
# echo "Europe/Madrid" > /etc/timezone
|
7. Configurar el núcleo
7.a. Instalar las fuentes
Elegir un núcleo
El eje alrededor del cual se construyen todas las distribuciones es
el núcleo de Linux. Es la capa entre los programas de usuario y el
hardware del sistema. Gentoo proporciona a sus usuarios varias fuentes
de núcleos. Una lista completa está disponible en la Guía del Núcleo de Gentoo.
Para los sistemas basados en x86 tenemos, entre otros
núcleos, gentoo-sources (fuentes del núcleo modificadas para
obtener algunas características adicionales).
Elija sus fuentes del núcleo e instálelas usando emerge.
Listado de Código 1.1: Instalar unas fuentes del núcleo |
# emerge gentoo-sources
|
Cuando vea en /usr/src verá un enlace simbólico llamado
linux apuntando a las fuentes del núcleo. En este caso,
asumimos que la fuentes del núcleo instaladas apuntan a
gentoo-sources-3.3.8. Su versión podría
ser distinta, así que por favor tenga esto presente.
Listado de Código 1.2: Visualizar el enlace a las fuentes del núcleo |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-3.3.8
|
Ahora vamos a configurar y compilar las fuentes del núcleo. Puede usar
para esto genkernel, que construirá un núcleo genérico como el
usado por el CD de instalación. Aquí explicaremos la configuración
"manual", ya que es la mejor manera de optimizar su entorno.
Si quiere configurar manualmente su núcleo, continúe con Predeterminado: Configuración Manual. En cambio,
si quiere usar genkernel debe leer Alternativa: Usar genkernel.
7.b. Predeterminado: Configuración manual
Introducción
Configurar manualmente un núcleo frecuentemente es visto como el
procedimiento más difícil que tiene que realizar un usuario de
Linux. Nada más lejos de la verdad -- después de configurar un par de
núcleos no recordará si fue difícil ;)
Sin embargo, una cosa sí es cierta: debe conocer su sistema al
empezar a configurar el núcleo manualmente. Se puede recolectar mucha
información instalando pciutils (emerge pciutils), que contiene
lspci. Ahora podrá usar lspci en el entorno
chroot. Puede ignorar tranquilamente los avisos sobre pcilib
(como pcilib: cannot open /sys/bus/pci/devices) desplegado por
lspci. Alternativamente, puede ejecutar lspci desde un
entorno no-chroot. Los resultados son iguales. También puede
ejecutar lsmod para ver qué módulos del núcleo está usando el
CD de instalación (puede darle indicaciones acerca de qué activar).
Ahora vaya al directorio de sus fuentes y ejecute make
menuconfig. Esto producirá un menú de configuración basado en
ncurses.
Listado de Código 2.1: Invocar a menuconfig |
# cd /usr/src/linux
# make menuconfig
|
Aparecerá una pantalla con diversas secciones de
configuración. Primero listaremos algunas opciones que debe activar
(sino Gentoo no funcionará, o no funcionará bien sin configuración
adicional).
Activar las opciones necesarias
Asegúrese que todos los controladores vitales para el arranque del
sistema (como pueden ser los de SCSI, ...) están compilados
dentro del núcleo y no como módulos o, de lo contrario, su
sistema no será capaz de arrancar correctamente.
Seleccione la familia correcta de procesadores:
Listado de Código 2.2: Seleccionar la familia de procesador correcta |
Processor type and features --->
(Athlon/Duron/K7) Processor family
|
A continuación seleccione
Maintain a devtmpfs file system to mount at /dev de modo que los
ficheros de dispositivo críticos estén disponibles cuanto antes en el
proceso de inicio.
Listado de Código 2.3: Habilitar soporte devtmpfs |
Device Drivers --->
Generic Driver Options --->
[*] Maintain a devtmpfs filesystem to mount at /dev
[ ] Automount devtmpfs at /dev, after the kernel mounted the rootfs
|
Vaya ahora a File Systems y seleccione los soportes para los
sistemas de archivos que use. No los compile como módulos, de
otro modo su sistema Gentoo no será capaz de montar sus
particiones. También seleccione Virtual memory y el /proc file
system.
Listado de Código 2.4: Seleccionar los sistemas de archivos necesarios |
File systems --->
<*> Second extended fs support
<*> Ext3 journalling file system support
<*> The Extended 4 (ext4) filesystem
<*> Reiserfs support
<*> JFS filesystem support
<*> XFS filesystem support
...
Pseudo Filesystems --->
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
-*- Enable the block layer --->
...
[*] Advanced partition selection
...
[*] EFI GUID Partition support
|
Si está usando PPPoE para conectarse a Internet o está usando un módem
dial-up, necesitará las siguientes opciones en el núcleo:
Listado de Código 2.5: 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 le afectan pero no son necesarias,
ni para la opción PPP over Ethernet, tal vez solo sea usada por
ppp cuando configure un núcleo en modo PPPoE.
Si lo requiere, no olvide incluir el soporte en el núcleo para su
tarjeta ethernet:
Si tiene un CPU Intel que soporte HyperThreading (tm), o tiene un
sistema multi-CPU, debe activar "Symmetric multi-processing support":
Listado de Código 2.6: 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 se dispone de más de 4GB de RAM, es necesario activar "High Memory
Support (64G)".
Si usa dispositivos de entrada USB (como un ratón o teclado) no olvide
activarlos también:
Listado de Código 2.7: Activar Soporte para Dispositivos de Entrada USB |
Device Drivers --->
USB Devices --->
[*] USB Human Interface Device (full HID) support
|
Si se quiere soporte para PCMCIA en ordenadores portátiles, no se olvide
de activar el soporte para el puente de tarjetas PCMCIA que se encuentre
en su sistema:
Listado de Código 2.8: Activar el soporte PCMCIA |
Bus options (PCI etc.) --->
PCCARD (PCMCIA/CardBus) support --->
<*> PCCard (PCMCIA/CardBus) support
<*> 16-bit PCMCIA support
[*] 32-bit CardBus support
*** PC-card bridges ***
<*> CardBus yenta-compatible bridge support (NEW)
<*> Cirrus PD6729 compatible bridge support (NEW)
<*> i82092 compatible bridge support (NEW)
|
Cuando haya terminado de configurar el núcleo, continúe con Compilar e Instalar.
Compilar e instalar
Ahora que hemos configurado el núcleo, es hora de compilarlo e
instalarlo. Salga de la configuración y comience con el proceso de
compilación:
Listado de Código 2.9: Compilar el núcleo |
# make && make modules_install
|
Al terminar de compilar el núcleo, copie la imagen a
/boot. Use cualquier nombre que estime apropiado para el
núcleo y recuérdelo, ya que le hará falta más adelante al configurar
el gestor de arranque. Recuerde reemplazar kernel-3.3.8-gentoo con el nombre y versión del núcleo.
Listado de Código 2.10: Instalar el núcleo |
# cp arch/x86/boot/bzImage /boot/kernel-3.3.8-gentoo
|
(Opcional) Construir un sistema de ficheros Initramfs
Si utiliza un esquema de particionamiento específico en el que las
localizaciones de ficheros de sistema importantes (como
/usr o /var) se encuentran en particiones
separadas, entonces necesitará configurar un sistema de ficheros
initramfs de modo que esta partición se pueda montar antes de que
se acceda a la misma.
Sin un sistema de ficheros initramfs, se corre el riesgo de que el
sistema no se inicie de forma correcta ya que las herramientas
responsables de montar los sistemas de ficheros necesitan información
que se encuentra en éstos. Un sistema de ficheros initramfs
obtendrá los ficheros necesarios en un 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 sistema de ficheros
initramfs se asegurará de que las particiones se han montado
correctamente antes de que el sistema continúe con su inicio.
Para instalar un sistema de ficheros initramfs, en primer lugar
instale genkernel, a continuación genere el sistema de ficheros
initramfs.
Listado de Código 2.11: Construir un sistema de ficheros initramfs |
# emerge genkernel
# genkernel --install initramfs
|
Si necesita soporte específico en el sistema de ficheros initramfs, tal
como lvm o raid, añada la opción apropiada a genkernel. Lea
genkernel --help para obtener más información. En el ejemplo
mostrado a continuación se habilita el soporte para LVM y el software
raid (mdadm):
Listado de Código 2.12: Construir un sistema de ficheros initramfs con soporte para LVM y software raid |
# genkernel --lvm --mdadm --install initramfs
|
El sistema de ficheros initramfs se almacenará en /boot.
Puede encontrar este fichero simplemente listando aquéllos ficheros
que comienzan por initramfs:
Listado de Código 2.13: Comprobar el nombre del fichero initramfs |
# ls /boot/initramfs*
|
Ahora continúe cono Los módulos del núcleo.
7.c. Alternativa: Usar genkernel
Si está leyendo esta sección, eligió usar nuestro guión
genkernel para configurar el núcleo.
Ahora que el árbol de las fuentes del núcleo está instalado, es hora
de compilarlo usando nuestro guión genkernel que
automáticamente construirá un núcleo. genkernel trabaja
configurando un núcleo prácticamente idéntico al núcleo de nuestro CD
de instalación. Esto significa que cuando use genkernel para
construir su núcleo, su sistema generalmente detectará todo su
hardware en el 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 esos usuarios que no se sienten cómodos
compilando sus propios núcleos.
Ahora, veamos como usar genkernel. Primero, haga emerge al ebuild de
genkernel:
Listado de Código 3.1: Instalar genkernel |
# emerge genkernel
|
Ahora, compile las fuentes del núcleo ejecutando genkernel all
Recuerde que genkernel compila un núcleo que soporta casi todo
el hardware, ¡esta compilación tardará un rato en terminar!
Observe que si su partición de arranque no usa el sistema de archivos
ext2 o ext3, necesitará configurar manualmente su núcleo con
genkernel --menuconfig all y agregar soporte para su sistema de
archivos en el núcleo (no como módulo). Los usuarios de
LVM2 probablemente querrán añadir también el argumento --lvm2.
Listado de Código 3.2: Ejecutar genkernel |
# genkernel all
|
Una vez que genkernel haya terminado, un núcleo, un conjunto
completo de módulos y un disco ram de inicio (initramfs) serán
creados. Usaremos el núcleo e initrd para configurar un gestor de
arranque más tarde en este documento. Escriba los nombres del núcleo y
de initrd ya que los necesitará para el archivo de configuración del
gestor de arranque. El initrd iniciará inmediatamente después del
arranque para realizar la autodetección de hardware (igual que en el CD
de instalación) antes que inicie su sistema "real".
Listado de Código 3.3: Verificar los nombres del núcleo e initrd creados |
# ls /boot/kernel* /boot/initramfs*
|
7.d. Módulos del núcleo
Configurar los Módulos
Debe listar los módulos que quiera cargar automáticamente en
/etc/conf.d/modules. Puede agregar opciones extra a los
módulos si así lo desea.
Para ver todos los módulos disponibles, ejecute el comando find.
No olvide sustituir "<kernel version>" por la versión
del kernel que acaba de compilar:
Listado de Código 4.1: Ver todos los módulos disponibles |
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
|
Por ejemplo, para cargar automáticamente el módulo 3c59x.ko (el
driver 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.
Listado de Código 4.2: Editar /etc/conf.d/modules |
# nano -w /etc/conf.d/modules
modules_2_6="3c59x"
|
Continúe la instalación con Configurar
su Sistema.
8. Configurar su sistema
8.a. Información del Sistema de Ficheros
¿Qué es el fstab?
En Linux, todas las particiones usadas por el sistema deben estar
reflejadas en /etc/fstab. Este fichero contiene los
puntos de montaje de esas particiones (donde se encuentran en la
estructura del sistema de ficheros), cómo deben ser montadas y con que
opciones especiales (automáticamente o no, si los usuarios pueden
montarlas o no, etc.).
Crear el /etc/fstab
/etc/fstab usa una sintaxis especial. Cada línea tiene
seis campos, separados por espacios en blanco (espacio(s), tabuladores
o una combinación). Cada campo tiene su propio significado:
-
El primer campo muestra la partición descrita (la ruta al
fichero de dispositivo)
-
El segundo campo muestra el punto de montaje donde la
partición debe montarse
-
El tercer campo muestra el sistema de ficheros usado por la
partición
-
El cuarto campo muestra las opciones de montaje que debe usar
mount al tratar de montar la partición. Como cada sistema de
ficheros tiene sus propias opciones de montaje, le animamos a leer
la página man de mount (man mount) para un listado
completo. Cuando existen múltiples opciones se separan por comas.
-
El quinto campo es usado por dump para determinar si la
partición necesita ser volcada o no. En general puede dejar
esto como 0 (cero).
-
El sexto campo es usado por fsck para determinar el orden en
que los sistemas de ficheros deben ser comprobados si el
sistema no se apagó correctamente. La partición raíz debe tener
un 1 mientras que el resto puede tener 2 (o 0
en el caso en que la comprobación del sistema de ficheros no sea
necesaria).
Importante:
El archivo /etc/fstab que proporciona Gentoo de manera
predeterminada no es un archivo fstab válido. Debe crear
su propio /etc/fstab:
|
Listado de Código 1.1: Abrir /etc/fstab |
# nano -w /etc/fstab
|
Vamos a ver como anotar las opciones para la partición
/boot. Esto es solo un ejemplo, si su arquitectura no
requiere una partición /boot, no lo copie al pie de la
letra.
En nuestro ejemplo para x86 de particionamiento,
/boot es la partición /dev/sda1,
con un sistema de ficheros ext2. Esta necesita ser comprobada
durante el arranque del sistema, así que necesitamos escribir:
Listado de Código 1.2: Un ejemplo de línea /boot para /etc/fstab |
/dev/sda1 /boot ext2 defaults 0 2
|
Algunos usuarios no quieren que su partición /boot sea
montada automáticamente para mejorar la seguridad de su sistema. Estos
usuarios deberían sustituir defaults por noauto. Esto
implica la necesidad de montar manualmente la partición cada vez que
se quiera usarla.
Añada las reglas que coincidan con su esquema de particionamiento para
su dispositivo(s) CD-ROM, y por supuesto, si tiene otras particiones o
dispositivos, también para éstos.
Ahora use el ejemplo que tiene a continuación para crear su
/etc/fstab:
Listado de Código 1.3: Un ejemplo completo de /etc/fstab |
/dev/sda1 /boot ext2 defaults,noatime 0 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext4 noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,user 0 0
|
auto provoca que mount intente adivinar el sistema de
archivos (se recomienda para los dispositivos extraíbles ya que pueden
ser creados con distintos sistemas de ficheros) y user hace
posible a los usuarios que no pertenezcan a root monten el CD.
Para aumentar el rendimiento, la mayoría de usuarios podrían querer
agregar la opción noatime como opción de montaje, que desemboca
en un sistema más rápido, puesto que los tiempos de acceso no son
registrados (de todas formas, no necesitará esto en general):
Repase su /etc/fstab, guarde los cambios y salga para
continuar.
8.b. Información de red
Nombre de anfitrión, nombre de dominio, etc.
Una de las elecciones que un usuario ha de hacer es el nombre de su
PC. Esto parece muy fácil, pero muchos usuarios tienen
dificultades eligiendo el nombre apropiado para su PC-Linux. Para
acelerar las cosas, sepa que el nombre que elija puede cambiarlo más
tarde. Para el caso que nos ocupa, puede llamar a su sistema
simplemente tux y a su dominio redcasera.
Listado de Código 2.1: Ajustar el nombre del anfitrión |
# nano -w /etc/conf.d/hostname
hostname="tux"
|
A continuación, si se necesita un nombre de dominio, puede
configurarse en /etc/conf.d/net. Solamente necesitará un
dominio si su ISP o administrador de sistemas se lo indica, o si tiene
un servidor DNS pero no DHCP. No necesitará preocuparse por el DNS
o nombres de dominios si su red se configura por DHCP.
Listado de Código 2.2: Configurar el nombre de dominio |
# nano -w /etc/conf.d/net
dns_domain_lo="homenetwork"
|
Nota:
Si no configura un nombre de dominio, puede librarse del mensaje: "This is
hostname.(none)" en las pantalla de inicio editando /etc/issue.
Simplemente elimine el texto .\O de ese archivo.
|
Si tiene un dominio NIS (si no conoce que es esto, seguramente es que
no tenga uno), necesita definirlo:
Listado de Código 2.3: Configurar el dominio NIS |
# nano -w /etc/conf.d/net
nis_domain_lo="my-nisdomain"
|
Nota:
Para más información sobre configuración de DNS y NIS, por favor lea
los ejemplos que se encuentran
en /usr/share/doc/openrc-*/net.example.bz2 que se pueden
leer utilizando bzless. Además, tal vez quiera hacer emerge
openresolv para manejar su configuración DNS/NIS.
|
Configurar su Red
Antes de llegar a experimentar esa sensación "Hey, ya lo tengo todo",
debes recordar que la red que configuraste en el inicio de la
instalación de Gentoo fue tan solo para la instalación. A partir de
ahora vamos a configurar la red permanentemente para su sistema
Gentoo.
Nota:
Información más detallada sobre redes, incluyendo temas más avanzados
como unión de interfaces (bonding), puenteo (bridging), redes
virtuales 802.1Q o redes inalámbricas está disponible en la sección
Configuración de redes en Gentoo.
|
Toda la información de red esta reunida en
/etc/conf.d/net. Este fichero usa una sintaxis directa,
aunque no intuitiva, si no se sabe como configurar una red
manualmente. Pero no se asuste, se lo explicaremos todo. Podemos
encontrar un ejemplo completamente comentado que cubre los distintos
tipo de configuraciones en
/usr/share/doc/openrc-*/net.example.bz2
DHCP se emplea de manera predeterminada. Para que funcione, debe
instalar un cliente de DHCP. Esto se describe más adelante en Instalar las herramientas
necesarias para el sistema. No se olvide de instalar un cliente
DHCP.
Si se necesita configurar la conexión de red porque es necesario
incluir opciones de DHCP específicas o porque no utiliza DHCP, abra
/etc/conf.d/net con su editor favorito (nano se emplea
en este ejemplo):
Listado de Código 2.4: Abrir /etc/conf.d/net para su edición |
# nano -w /etc/conf.d/net
|
Verá el siguiente fichero:
Listado de Código 2.5: Archivo /etc/conf.d/net por defecto |
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d. To create a more complete configuration,
# please review /usr/share/doc/openrc-*/net.example.bz2 and save
# your configuration in /etc/conf.d/net (this file :]!).
|
Para introducir su propia dirección IP, máscara de red y pasarela,
necesita configurar tanto config_eth0 como routes_eth0:
Nota:
Esta parte asume que su interfaz de red se llama eth0. Esto depende
bastante de su sistema. Se recomienda asumir que la interfaz tiene
el mismo nombre que le da el sistema cuando se arranca desde los
medios de instalación si estos medios son suficientemente
recientes.
|
Listado de Código 2.6: Configurar manualmente la información IP para eth0 |
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"
|
Para utilizar DHCP defina, config_eth0:
Listado de Código 2.7: Obtener una dirección IP automáticamente para eth0 |
config_eth0="dhcp"
|
Por favor, consulte
/usr/share/doc/openrc-*/net.example.bz2 para ver
una lista con todas las opciones disponibles. Consulte la página man
de su cliente DHCP si necesita configurar opciones específicas.
Si tiene varias interfaces de red, repita los pasos anteriores
utilizando config_eth1, config_eth2, etc.
Ahora guarde la configuración y salga para continuar.
Inicio automático de red en el arranque
Para disponer de su interfaz de red activada en el arranque, necesita
agregarla al nivel de ejecución por defecto (default).
Listado de Código 2.8: Agregar net.eth0 al nivel de ejecución por defecto (default) |
# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default
|
Si tiene distintas interfaces de red, necesitara crear los ficheros
apropiados net.* tal y como hizo con
net.eth0.
Si más tarde descubre que su presunción sobre los nombres de las
interfaces de red (que actualmente documentamos como eth0) fue
errónea, entonces:
-
actualice el fichero /etc/conf.d/net con el nombre
correcto de la interfaz (por ejemplo enp3s0 en lugar de eth0),
-
cree un nuevo enlace simbólico (por ejemplo
/etc/init.d/net.enp3s0),
-
elimine el enlace simbólico antiguo
(rm /etc/init.d/net.eth0),
-
añada el nuevo guión al nivel de ejecución por defecto
(default), y
-
elimine el antiguo mediante
rc-update del net.eth0 default.
Anotar la Información de la Red
Necesita informar a Linux sobre su red. Esto se define en
/etc/hosts y ayuda a transformar los nombres de
anfitriones a direcciones IP para aquellas máquinas que no se
resuelven a través de su servidor de nombres (DNS). Se necesita
definir la máquina. Además se definen otras máquinas o redes si no se
va a configurar un servidor interno de DNS en la propia máquina:
Listado de Código 2.9: Abrir /etc/hosts |
# nano -w /etc/hosts
|
Listado de Código 2.10: Completar la información de red |
127.0.0.1 localhost
192.168.0.5 jenny.redlocal jenny
192.168.0.6 benny.redlocal benny
|
Guarde y salga del editor para continuar.
Si no tiene PCMCIA, puede continuar con Información
del Sistema. Los usuarios de PCMCIA deberían leer el siguiente apartado
sobre PCMCIA.
Opcional: Hacer funcionar el PCMCIA
Los usuarios de PCMCIA deben instalar primero el paquete
pcmciautils.
Listado de Código 2.11: Instalar pcmciautils |
# emerge pcmciautils
|
8.c. Información del sistema
Contraseña de administrador (Root)
Primero fijamos la contraseña de administrador escribiendo:
Listado de Código 3.1: Configurar la contraseña de administrador |
# passwd
|
Información del sistema
Gentoo usa /etc/rc.conf para configurar los servicios y el
arranque y apagado de su sistema. Abra el fichero /etc/rc.conf
y disfrute de todos los comentarios que hay en este fichero.
Listado de Código 3.2: Configurar servicios |
# nano -w /etc/rc.conf
|
Cuando haya terminado de configurar estos dos ficheros, guárdelos y salga
de su editor.
Gentoo utiliza /etc/conf.d/keymaps para gestionar la
configuración del teclado. Edítelo y configure su teclado.
Listado de Código 3.3: Abrir /etc/conf.d/keymaps |
# nano -w /etc/conf.d/keymaps
|
Tenga especial cuidado con la variable keymap: porque si
selecciona un keymap incorrecto, obtendrá extraños resultados
al escribir con el teclado.
Cuando termine de configurar /etc/conf.d/keymaps, guarde
los cambios y salga.
Gentoo utiliza /etc/conf.d/hwclock para fijar las opciones
del reloj. Edítelo de acuerdo a sus necesidades.
Listado de Código 3.4: Abrir /etc/conf.d/hwclock |
# nano -w /etc/conf.d/hwclock
|
Si su reloj de hardware no utiliza UTC, añada clock="local" al
archivo. De lo contrario notará como el reloj no funciona
correctamente.
Cuando haya acabado de configurar /etc/conf.d/hwclock,
guárdelo y salga del editor.
Configurar localizaciones
Probablemente utilice únicamente una o dos localizaciones (locales) en su
sistema. Debe especificar las localizaciones que utilizará en el fichero
/etc/locale.gen.
Listado de Código 3.5: Abrir /etc/locale.gen |
# nano -w /etc/locale.gen
|
A continuación se muestran dos localizaciones para obtener el inglés de
Estados Unidos y el español de España con los formatos de carácter
asociados (como por ejemplo UTF-8).
Listado de Código 3.6: Especificar sus localizaciones |
en_US ISO-8859-1
en_US.UTF-8 UTF-8
es_ES ISO-8859-1
es_ES@euro ISO-8859-15
|
Nota:
Puede seleccionar las localizaciones que desee de la lista que se obtiene
ejecutando locale -a.
|
Aviso:
Le recomendamos que utilice al menos una localización UTF-8 ya que sus
aplicaciones pueden necesitarla.
|
El siguiente paso es ejecutar locale-gen. Se generarán las
localizaciones que ha especificado en el fichero
/etc/locale.gen.
Listado de Código 3.7: Ejecutar locale-gen |
# locale-gen
|
Una vez realizado el paso anterior, tendrá la posibilidad de ajustar las
definiciones que afectan a todo el sistema en el fichero
/etc/env.d/02locale:
Listado de Código 3.8: Definir la localización por defecto del sistema en /etc/env.d/02locale |
LANG="es_ES.UTF-8"
LC_COLLATE="C"
|
Y recargue su entorno:
Listado de Código 3.9: Recargar el entorno del intérprete de comandos |
# env-update && source /etc/profile
|
Disponemos de una Guía de
Localización para ayudarle en este proceso. Puede también leer nuestra
detallada Guía UTF-8 para obtener
información específica de cómo habilitar UTF-8 en su sistema.
Por favor continúe con Instalando las
herramientas de sistema necesarias.
9. Instalar herramientas necesarias para el sistema
9.a. Bitácora del Sistema
Algunas herramientas no están incluidas en el archivo stage3 porque
varios paquetes proporcionan la misma funcionalidad. Ahora es el momento en
que debemos decidir cual queremos instalar.
La primera herramienta por la que tiene que decidirse es la que proporciona el
registro y las bitácoras para su sistema. Unix y Linux tienen una excelente
historia en sus capacidades de registros -- si lo quisiera podría registrar todo
lo que pasa en su sistema en bitácoras. Esto sucede con el registro del
sistema.
Gentoo ofrece varios sistemas de registro para elegir. Están sysklogd,
que es el conjunto tradicional de demonios de bitácoras, syslog-ng, un
sistema de bitácora avanzado, y metalog que es una bitácora de sistemas
altamente configurable. También puede haber otros en el Portage - el número de
paquetes disponibles crece día a día.
Si está pensando utilizar sysklogd o syslog-ng quizá quiera
instalar posteriormente logrotate ya que estas herramientas no
proporcionan ningún mecanismo de rotación para los archivos de log.
Para instalar la bitácora del sistema de su elección, use emerge y
agréguelo al nivel de arranque predeterminado usando rc-update. El
siguiente ejemplo instala syslog-ng. Por supuesto puede sustituirlo por
el sistema de bitácora de su elección:
Listado de Código 1.1: Instalar un sistema de bitácoras |
# emerge syslog-ng
# rc-update add syslog-ng default
|
9.b. Opcional: Demonio Cron
El siguiente es el demonio cron. Aunque es opcional y no lo requiere
su sistema es recomendable instalar uno. ¿Pero qué es un demonio cron?
Un demonio cron ejecuta órdenes en horarios planificados. Es muy cómodo
si necesita ejecutar órdenes regularmente (por ejemplo a diario, cada
semana o mensualmente).
Gentoo ofrece tres posibles demonios cron: dcron, fcron y
vixie-cron. Instalar cualquiera es similar a instalar un sistema
de bitácoras. Sin embargo dcron y fcron requieren una
orden extra de configuración, que es crontab /etc/crontab. Si no
sabe cuál escoger, use vixie-cron.
Solo proporcionamos vixie-cron para instalaciones sin red. Si quiere
otro demonio cron puede esperar e instalarlo más tarde.
Listado de Código 2.1: Instalar un demonio cron |
# emerge vixie-cron
# rc-update add vixie-cron default
# crontab /etc/crontab
|
9.c. Opcional: Indexar Archivos
Si quiere crear un índice de su sistema de archivos para habilitar su
rápida localización usando la herramienta locate, necesita
instalar sys-apps/mlocate.
Listado de Código 3.1: Instalar mlocate |
# emerge mlocate
|
9.d. Opcional: Acceso remoto
Si necesita acceder a su sistema desde un equipo remoto después de
la instalación, no olvide añadir sshd al nivel de ejecución
por defecto:
Listado de Código 4.1: Añadir sshd al nivel de ejecución por defecto |
# rc-update add sshd default
|
Si necesita acceso via consola serie (lo cual es posible en el caso
de servidores remotos), necesitará eliminar el comentario de la
sección de la consola serie en /etc/inittab.
Listado de Código 4.2: Editar /etc/inittab |
# nano -w /etc/inittab
|
El siguiente extracto muestra la sección sin comentarios:
Listado de Código 4.3: Eliminar el comentario para las consolas series en inittab |
s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100
|
9.e. Herramientas del Sistema de Archivos
Dependiendo del sistema de archivos que se esté usando, necesita
instalar las herramientas necesarias (para verificar la integridad del
sistema de archivos, crear sistemas de archivos adicionales, etc.) Por
favor note que las herramientas para manejar sistemas de archivos
ext2,ext3 o ext4 (e2fsprogs) ya se encuentran instaladas como
parte del sistema.
La siguiente tabla lista las herramientas que necesita instalar según un
sistema de archivos determinado:
| Sistema de Archivos |
Herramienta |
Orden de instalación |
| XFS |
xfsprogs |
emerge xfsprogs |
| ReiserFS |
reiserfsprogs |
emerge reiserfsprogs |
| JFS |
jfsutils |
emerge jfsutils |
9.f. Herramientas de Red
Si no necesita herramientas adicionales relacionadas con la red (como
ppp o un cliente dhcp) continúe con
Configuración del Cargador de Arranque.
Opcional: Instalar un Cliente DHCP
Si necesita que Gentoo obtenga automáticamente una dirección IP para
sus interfaces de red, necesita instalar en su sistema dhcpcd
(o cualquier otro cliente DHCP) . Si no lo hace ahora, ¡tal vez no
pueda conectarse a Internet después de la instalación!
Listado de Código 6.1: Instalar dhcpcd |
# emerge dhcpcd
|
Opcional: Instalar un Cliente PPPoE
Si necesita ppp para conectarse a la red, necesita instalarlo.
Listado de Código 6.2: Instalar ppp |
# emerge ppp
|
Ahora continúe con Configurar el Cargado de
Arranque.
10. Configurar el gestor de arranque
10.a. Realizando su elección
Introducción
Ahora que su núcleo está configurado y compilado y los archivos de
configuración necesarios han sido llenados correctamente, ha llegado
la hora de instalar el programa que iniciará el núcleo cuando arranque
el sistema. Este programa es conocido como gestor de arranque.
Para x86, Gentoo dispone de GRUB y LILO.
Pero antes de instalar un gestor de arranque, le informaremos sobre
como configurar la memoria de imagen (framebuffer), siempre que quiera,
claro. Con la memoria de imagen puede ejecutar la línea de comandos de
Linux con algunas características gráficas (limitadas) como, por ejemplo,
el empleo de un bonita imagen de Gentoo durante el inicio (bootsplash).
Opcional: Memoria de imagen (Framebuffer)
Si ha configurado su núcleo con soporte framebuffer (o ha
utilizado la configuración predeterminada de genkernel) puede
activarlo añadiendo el parámetro video al archivo de
configuración del gestor de inicio.
Lo primero que necesita es conocer que tipo de dispositivo de
framebuffer está utilizando. Debería usar uvesafb como
controlador VESA.
El parámetro video controla las opciones de
visualización. Necesita que se le indique el controlador de
framebuffer (vesafb para núcleos 2.6, o vesa para
núcleos 2.4) seguido de los parámetro de control que quiera
activar. Todas las variables aparecen listadas en
/usr/src/linux/Documentation/fb/uvesafb.txt. Las opciones
más utilizadas son:
| Control |
Descripción |
| ywrap |
Asume que su tarjeta gráfica puede volver sobre su
memoria. (ej. continuar al principio cuando se aproxima al final)
|
| mtrr:n
|
Configura los registros MTRR. n puede ser:
0 - desactivados
1 - no almacenables en caché
2 - write-back
3 - write-combining
4 - write-through
|
| mode |
Configura la resolución, la profundidad de color y la tasa de
refresco. Por ejemplo, 1024x768-32@85 para una resolución
de 1024x768, profundidad de color 32 bit y una tasa de refresco de
85 Hz.
|
El resultado sería algo como:
video=uvesafb:mtrr:3,ywrap,1024x768-32@85. Recuerde (o anote)
ésta configuración. La necesitará dentro de poco.
10.b. Predeterminado: Usando GRUB
Comprendiendo la terminología de GRUB
La parte más crítica para la comprensión de GRUB, es el habituarse a
la manera en que GRUB se refiere a los discos duros y las
particiones. Su partición Linux /dev/sda1 es denominada
(hd0,0) por GRUB. Note los paréntesis alrededor de
hd0,0, que son obligatorios.
La numeración de los discos duros comienza con un cero, en lugar de
utilizar una "a" y las particiones empiezan con cero en lugar de con
un uno. Advertimos también que entre los dispositivos hd, solo se
cuentan los discos duros y no los dispositivos atapi-ide como cdroms y
grabadoras. Además, la especificación es igual para dispositivos
SCSI. (Usualmente son asignados números mayores, excepto cuando el
bios está configurada para arrancar desde los dispositivos
scsi). Cuando se le indica la BIOS que arranque desde un disco duro
diferente (por ejemplo, el esclavo primario), ese disco duro se
verá como hd0.
Asumiendo que tiene un disco duro en /dev/sda y dos más
en /dev/sdb y /dev/sdc, la partición
/dev/sdd7 que descrita como (hd1,6). A lo
mejor puede sonar raro y bien podría serlo, pero como veremos, GRUB
ofrece un mecanismo de terminación por tabulador que es de gran ayuda
para los que tienen una gran cantidad de discos duros y que andan algo
perdidos con este esquema de numeración.
Habiéndole tomado la medida, es hora de instalar GRUB.
Instalando GRUB
Para instalar GRUB, primero lo instalamos con emerge:
Listado de Código 2.1: Instalando GRUB |
# emerge grub
|
Aunque GRUB esté instalado, todavía necesitamos crear un archivo de
configuración para él e instalar GRUB en nuestro MBR para que pueda
arrancar automáticamente nuestro núcleo recién creado. Cree el
archivo /boot/grub/grub.conf con nano, o cualquier
otro editor:
Listado de Código 2.2: Creando el archivo /boot/grub/grub.conf |
# nano -w /boot/grub/grub.conf
|
Ahora vamos a escribir el grub.conf. Asegúrese de utilizar
el nombre de su archivo de imagen del núcleo y, si es necesario,
el nombre de su imagen initrd.
Nota:
Grub asigna las designaciones según el BIOS. Al cambiar la
configuración del BIOS, cambiarán también las designaciones de los
dispositivos. Por ejemplo, si cambia el orden de los dispositivos para
el arranque, tal vez tenga que cambiar la configuración grub también.
|
Nota:
Si su sistema de fichero para root es JFS, deberá añadir "ro"
a la línea del núcleo ya que JFS necesita leer su log antes de
permitir montajes de lectura-escritura.
|
Listado de Código 2.3: grub.conf ejemplo |
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux 3.3.8
root (hd0,0)
kernel /boot/kernel-3.3.8-gentoo root=/dev/sda3
title Gentoo Linux 3.3.8 (rescate)
root (hd0,0)
kernel /boot/kernel-3.3.8-gentoo root=/dev/sda3 init=/bin/bb
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1
|
Cuando construya el núcleo Linux, si opta por incluir un initramfs desde el
cual iniciar, entonces tendrá que cambiar la configuración haciendo
referencia a este fichero initramfs e indicándole donde se encuentra su
sistema de ficheros raíz en:
Listado de Código 2.4: Fragmento de GRUB para construcciones de núcleo con initramfs habilitado |
title Gentoo Linux 3.3.8
root (hd0,0)
kernel /boot/3.3.8 real_root=/dev/sda3
initrd /boot/initramfs-genkernel-x86-3.3.8-gentoo
|
Si se utiliza un esquema de particiones y/o imagen de núcleo distinta,
haga los ajustes respectivos. Sin embargo, asegúrese que cualquier
cosa que siga un dispositivo GRUB (tal como (hd0,0)) sea
relativa al punto de montaje y no de la raíz. En otras palabras,
(hd0,0)/grub/splash.xpm.gz es en realidad
/boot/grub/splash.xpm.gz ya que (hd0,0) es
/boot.
Además, si se eligió utilizar un esquema de particionamiento diferente
y no colocó /boot en una partición separada, el prefijo
/boot empleado en los ejemplos anteriores, es realmente
necesario. Si ha seguido el plan de particionamiento sugerido,
el prefijo /boot no es obligatorio, un enlace simbólico
/bootlo hace funcionar. En resumen, los ejemplos
anteriores deberían funcionar si ha definido una partición separada
para /boot o no.
Si necesita pasar algún parámetro adicional al núcleo, sencillamente
agréguelo al final de la línea de comandos del núcleo. Ya estamos
pasando una opción (root=/dev/sda3 o
real_root=/dev/sda3), pero se pueden pasar otras también, como
el parámetro video del que hablamos previamente.
Si su archivo de configuración del gestor de arranque contiene el
parámetro real_root, use el parámetro real_rootflags para establecer
las opciones de montaje del sistema de archivos raíz.
Si está utilizando un núcleo 2.6.7 o superior y ha puenteado su disco
duro porque la BIOS no puede manejar discos duros grandes, necesitará
añadir sda=stroke.
Los usuarios de genkernel deben saber que sus núcleos usan las
mismas opciones de arranque que el CD de instalación. Por ejemplo, si
tiene dispositivos scsi, debería agregar el parámetro doscsi al
núcleo.
Ahora grabe el archivo grub.conf y salga. Aún necesita
instalar GRUB en el MBR (Master Boot Record) para que GRUB se ejecute
automáticamente cuando arranque su sistema.
Los desarrolladores de GRUB recomiendan utilizar
grub-install. Sin embargo, si por alguna razón
grub-install no funciona correctamente todavía tiene la opción
de instalar GRUB manualmente.
Continué con Predeterminado: Configurando
GRUB utilizando grub-install o Alternativa: Configurando GRUB a mano,
utilizando instrucciones.
Predeterminado: Configurando GRUB utilizando grub-install
Para instalar GRUB necesita ejecutar el comando
grub-install. Sin embargo grub-install no funcionará tal
cual se instala, ya que estamos dentro de un entorno chroot. Antes de
seguir, necesitará actualizar /etc/mtab, el cual contiene
la información relativa a todos los sistemas de archivos
montados. Afortunadamente hay una manera sencilla de realizar esto,
simplemente copie /proc/mounts a /etc/mtab,
excluyendo la línea rootfs si no ha creado una partición
separada para boot. El siguiente comando fucionará en ambos casos:
Listado de Código 2.5: Crear /etc/mtab |
# grep -v rootfs /proc/mounts > /etc/mtab
|
Ahora podemos instalar GRUB utilizando grub-install:
Listado de Código 2.6: Ejecutar grub-install |
# grub-install --no-floppy /dev/sda
|
Si tiene alguna pregunta más acerca de GRUB, por favor consulte el
FAQ de GRUB
, la
Wiki de GRUB, o lea info grub en su terminal (estos
documentos están en inglés).
Continué con Reiniciando el sistema.
Alternativa: Configurando GRUB a mano, utilizando
instrucciones
Para comenzar a configurar GRUB, debe ejecutar los comandos dentro de
grub. Se le presentará el intérprete de comandos propio de
grub grub>. Ahora necesita ejecutar los comandos
necesarios para instalar el registro de arranque de GRUB en su disco
duro.
Listado de Código 2.7: Iniciando el intérprete de comandos de GRUB |
# grub --no-floppy
|
Nota:
Si su sistema no tiene ningún dispositivo de disquetes, añada la
opción --no-floppy al comando anterior para evitar que grub
pruebe los dispositivos (no existentes) de disquetes.
|
En el ejemplo de configuración queremos instalar GRUB para que lea la
información de la partición de arranque /dev/sda1, e instala el registro de arranque de GRUB en el
MBR (Master boot Record) de su disco duro para que lo primero que
veamos aparecer al encender el ordenador sea GRUB. Por supuesto, si no
ha seguido el ejemplo de configuración durante la instalación, cambie
los comandos de acuerdo a su modelo:
El mecanismo de completar comandos por tabulación de GRUB puede
utilizarse dentro de GRUB. Por ejemplo, si escribe "root ("
seguido de una tabulación, notará que se le presenta una lista de
dispositivos (como pueda ser hd0). Si tecleamos "root
(hd0," seguido de una tabulación recibiremos una lista de
particiones disponibles para elegir (como pueda ser
hd0,0).
Utilizando este mecanismo de completar por tabulación, configurar GRUB
no debería resultar tan duro. Ahora vamos a por ello, configuremos
GRUB!.
Listado de Código 2.8: Instalando GRUB en el MBR |
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
|
Nota:
Si quiere instalar GRUB en una partición concreta en lugar del MBR,
debe modificar el comando setup para que apunte a la partición
correcta. Por ejemplo, si quiere que GRUB se instale en
/dev/sda3, el comando adecuado sería setup
(hd0,2). Sin embargo, pocos usuarios querrán hacer esto.
|
Si tiene alguna pregunta más acerca de GRUB, por favor consulte el
FAQ de GRUB
, la
Wiki de GRUB, o lea info grub en su terminal (estos
documentos están en inglés).
Continúe con Reiniciando el sistema.
10.c. Alternativa: Utilizando LILO
Instalando LILO
LILO, representa LInuxLOader, y es el caballito de batalla probado y
comprobado de los gestores de inicio de Linux. Sin embargo, carece de
algunas características de GRUB (razón por la cual GRUB actualmente
está ganando popularidad). La razón por la cual LILO sigue en uso es
que en algunos sistemas, GRUB no funciona mientras que LILO sí. Por
supuesto también se usa porque hay muchos que lo conocen y prefieren
seguir con este gestor. De cualquier manera, Gentoo soporta ambos
gestores y por lo visto, ha elegido usar LILO.
Instalar LILO es fácil, sencillamente use emerge.
Listado de Código 3.1: Instalando LILO |
# emerge lilo
|
Configurando LILO
Para configurar LILO, debe crear el archivo
/etc/lilo.conf. Use su editor de textos preferido (en el
manual usamos nano para ser consistentes) y creemos este
archivo.
Listado de Código 3.2: Creando /etc/lilo.conf |
# nano -w /etc/lilo.conf
|
Algunas secciones atrás, le pedimos que se acordara del nombre de la
imagen del núcleo creado. En el siguiente ejemplo de
lilo.conf haremos uso del esquema ejemplo de
particionamiento.
Asegúrese de utilizar el nombre de su archivo de imagen del
núcleo y, si es necesario, el nombre de su imagen initrd.
Nota:
Si su sistema de ficheros para root es JFS, deberá añadir la
línea append="ro" después de cada elemento de arranque, ya que
JFS necesita leer su log antes de permitir montajes de
lectura-escritura.
|
Listado de Código 3.3: Ejemplo de /etc/lilo.conf |
boot=/dev/sda
prompt
timeout=50
default=gentoo
image=/boot/kernel-3.3.8-gentoo
label=gentoo
read-only
root=/dev/sda3
image=/boot/kernel-3.3.8-gentoo
label=gentoo.rescue
read-only
root=/dev/sda3
append="init=/bin/bb"
other=/dev/sda6
label=windows
|
Nota:
Si usa un esquema de particionamiento o imagen de núcleo distinta,
haga los ajustes correspondientes.
|
Cuando construya el núcleo Linux, si opta por incluir un initramfs desde el
cual iniciar, entonces tendrá que cambiar la configuración haciendo
referencia a este fichero initramfs e indicándole donde se encuentra su
sistema de ficheros raíz en:
Listado de Código 3.4: Fragmento de LILO para construcciones de núcleo con initramfs habilitado |
image=/boot/kernel-3.3.8-gentoo
label=gentoo
read-only
append="real_root=/dev/sda3"
initrd=/boot/initramfs-genkernel-x86-3.3.8-gentoo
|
Si hace falta pasar alguna opción adicional al núcleo, incluya un
enunciado append a la sección. A modo de ejemplo, agregamos un
enunciado video para activar framebuffer:
Listado de Código 3.5: Utilizar append para agregar opciones al núcleo |
image=/boot/kernel-3.3.8-gentoo
label=gentoo
read-only
root=/dev/sda3
append="video=uvesafb:mtrr,ywrap,1024x768-32@85"
|
Si está utilizando un núcleo 2.6.7 o superior y ha puenteado su disco
duro porque la BIOS no puede manejar discos duros grandes, necesitará
añadir sda=stroke.
Usuarios de genkernel deben saber que sus núcleos usan las
mismas opciones de arranque que el CD de instalación. Por ejemplo, si
tiene dispositivos SCSI, debe agregar doscsi como opción del
núcleo.
Ahora, salve el archivo y salga del editor. Para terminar, debe
ejecutar el comando /sbin/lilo para poder aplicar
/etc/lilo.conf a su sistema (que se instale en el disco).
Acuérdese de que debe volver a ejecutar /sbin/lilo cada vez que
instale un nuevo núcleo o haga cambios en el menú.
Listado de Código 3.6: Terminando la instalación de LILO |
# /sbin/lilo
|
Si tiene más preguntar con respecto a LILO, por favor, consulte su
página en la
wikipedia.
Ahora puede continuar con Reiniciando el
Sistema.
10.d. Reiniciando el sistema
Salga del entorno chroot y desmonte todas las particiones que
continúen montadas. Después podemos ejecutar el mágico comando que
hemos estado esperando: reboot.
Listado de Código 4.1: Desmontar todas las particiones y reiniciar |
# exit
cdimage ~# cd
cdimage ~# umount -l /mnt/gentoo/dev{/pts,/shm,}
cdimage ~# umount -l /mnt/gentoo{/boot,/sys,/proc,}
cdimage ~# reboot
|
Por supuesto, no olvide quitar el CD arrancable, o el CD será
arrancado de nuevo en lugar de su nuevo sistema Gentoo.
Una vez que haya reiniciado su instalación de Gentoo, termínela con
Finalizando su instalación de
Gentoo.
11. Finalizar su instalación Gentoo
11.a. Administración del Usuario
Añadir un Usuario para uso cotidiano
Trabajar como root en un sistema Unix/Linux es peligroso y su uso
debería evitarse tanto como sea posible. Es por ello que se recomienda
encarecidamente añadir un usuario para el uso cotidiano del sistema.
Los grupos a los que pertenece el usuario definen que actividades puede
realizar. La siguiente tabla muestra una lista de los grupos más importantes
que podría querer utilizar.
| Grupo |
Descripción |
| audio |
para ser capaz de acceder a los dispositivos de audio |
| cdrom |
para poder acceder directamente a dispositivos de lectura óptica |
| floppy |
para poder acceder directamente a los dispositivos de disquete |
| games |
para poder utilizar los juegos |
| portage |
para ser capaz de utilizar emerge --pretend como usuario
normal
|
| usb |
para poder acceder a los dispositivos USB |
| video |
para acceder al hardware de captura de vídeo y a la aceleración
por hardware
|
| wheel |
para poder utilizar su
|
Por ejemplo, para crear un usuario llamado juan que pertenezca a los
grupos wheel, users y audio, entre en el sistema como
root (solo root puede crear usuarios) y ejecute useradd:
Listado de Código 1.1: Añadir un usuario para uso cotidiano |
Login: root
Password:
# useradd -m -G users,wheel,audio -s /bin/bash juan
# passwd juan
Password:
Re-enter password:
|
Si alguna vez este usuario necesita realizar alguna tarea como root, puede
utilizar su - para obtener temporalmente privilegios de root. Otra
forma es utilizar el paquete sudo el cual, correctamente configurado,
es muy seguro.
11.b. Limpieza de disco
Eliminar los tarballs
Ahora que ya se ha instalado Gentoo y reiniciado, si todo ha ido
bien, puede eliminar el tarball de stage3 de su disco duro.
Recuerde que se habrán descargado a su directorio /
Listado de Código 2.1: Eliminar el tarball stage3 |
# rm /stage3-*.tar.bz2*
|
12. ¿Y ahora qué?
12.a. Documentación
¡Enhorabuena! Ya tiene funcionando un sistema Gentoo. Pero ¿A donde ir desde
aquí? ¿Cuáles son ahora sus opciones? ¿Qué explorar primero? Gentoo ofrece a
sus usuarios muchas posibilidades y, por lo tanto, muchas características
documentadas (y menos documentadas).
Definitivamente debería ojear la siguiente parte del Manual de Gentoo
titulada Trabajando con Gentoo la cual
explica cómo mantener su software al día, cómo instalar más software, qué
parámetros USE hay, cómo funciona el sistema de inicialización de Gentoo
(Gentoo Init system), etc.
Si está interesado en la optimización de su sistema para uso de escritorio,
o quiere aprender cómo configurarlo para que sea un completo sistema de
escritorio, consulte nuestra extensa
Guía de Configuración del
Escritorio. Además, quizá también quiera utilizar nuestra
guía de localización
para hacer que el sistema se sienta cómo en casa.
También disponemos de un
Manual de seguridad en Gentoo
cuya lectura puede ser muy valiosa.
Para obtener un completo listado de toda nuestra documentación disponible,
revise nuestra página de Recursos de
Documentación.
Por último, también tenemos una Wiki
Gentoo oficial (en inglés), donde se puede encontrar documentación
adicional ofrecida por la comunidad.
12.b. Gentoo en línea
Por supuesto, siempre será bienvenido a nuestros Foros de Gentoo o a alguno de nuestros
canales de IRC.
También tenemos varias listas de correo
abiertas a todos nuestros usuarios. La información de cómo entrar en las
mismas está disponible en esa página.
Ahora nos callaremos y le dejaremos que disfrute de su instalación :)
B. Trabajar con Gentoo
1. Introducción al sistema Portage
1.a. Bienvenido a Portage
Portage es probablemente la más importante innovación de Gentoo en la gestión
de software. Debido a su potente flexibilidad y una gran cantidad de
funcionalidades, es frecuentemente apreciado como la mejor herramienta de
gestión de software disponible para Linux.
Portage esta completamente escrito en
Python y
Bash y, por tanto,
totalmente a la vista de los usuarios al ser ambos lenguajes interpretados.
La mayoría de usuarios trabajarán con Portage a través de la herramienta
emerge. Este capítulo no pretende duplicar la información disponible
en la página de man sobre emerge. Para una completa información sobre
las opciones de emerge, por favor, consulte la página del manual:
Listado de Código 1.1: Leer la página del manual sobre emerge |
$ man emerge
|
1.b. El árbol Portage
Ebuilds
Cuando hablamos sobre paquetes, nos referimos normalmente a programas
software disponibles para los usuarios de Gentoo a través del árbol Portage.
El árbol Portage es una colección de ebuilds, archivos que contienen
toda la información que Portage necesita para mantener el software
(instalar, buscar, ...). Estos ebuilds residen por defecto en
/usr/portage.
Cuando se pida a Portage que ejecute alguna acción relacionada con los
programas, éste utilizará los ebuilds de su sistema como base. Por tanto, es
importante que actualice los ebuilds de su sistema para que Portage conozca el
nuevo software, actualizaciones de seguridad, etc.
Actualizando el árbol Portage
El árbol Portage se actualiza normalmente con rsync, una utilidad rápida de
transferencia de archivos incremental. La actualización es muy sencilla,
ya que la orden emerge proporciona una interfaz para rsync:
Listado de Código 2.1: Actualizar el árbol Portage |
# emerge --sync
|
Si no es capaz de realizar rsync debido a restricciones de cortafuegos puede
actualizar su árbol Portage a través de nuestras tres imágenes de Portage
generadas diariamente. La herramienta emerge-webrsync
automáticamente comprueba e instala la última en su sistema.
Listado de Código 2.2: Ejecutar emerge-webrsync |
# emerge-webrsync
|
Una ventaja adicional de utilizar emerge-webrsync es que
permite al administrador descargar únicamente instantáneas del árbol
portage que están firmadas con la clave GPG del equipo de ingeniería
de versiones de Gentoo. Se puede encontrar más información sobre esto
en la sección Características de
Portage en
Obteniendo instantáneas
validadas del árbol Portage.
1.c. Mantenimiento de Software
Buscar software
Para buscar software utilizando el árbol de Portage, puede emplear
las funcionalidades de búsquedas propias de emerge. Por defecto,
emerge --search devuelve el nombre de los paquetes cuyo nombre
coincide (tanto total como parcialmente) con el término de búsqueda
introducido.
Por ejemplo, para buscar todos los paquetes que tengan "pdf" en su nombre:
Listado de Código 3.1: Buscar paquetes cuyo nombre tenga pdf |
$ emerge --search pdf
|
Si quiere buscar también en las descripciones puede utilizar el
parámetro --searchdesc (o -S).
Listado de Código 3.2: Buscar paquetes relacionados con pdf |
$ emerge --searchdesc pdf
|
Cuando eche un vistazo al resultado, notará que le proporciona mucha
información. Los campos son etiquetados claramente con lo cual
no entraremos en explicar sus significados.
Listado de Código 3.3: Ejemplo de salida de emerge --search |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Instalar Software
Una vez que haya encontrado el nombre del software que necesite, puede
fácilmente instalarlo con emerge: simplemente añada el nombre
del paquete. Por ejemplo, para instalar gnumeric:
Listado de Código 3.4: Instalar gnumeric |
# emerge gnumeric
|
Muchas aplicaciones dependen unas de otras, esto implica que cualquier intento
de instalar un cierto paquete de software podría derivar en la instalación de
varias dependencias. No se preocupe. Portage maneja también las dependencias.
Si quiere conocer qué instalará Portage cuando le pida que instale un
cierto paquete, añada el parámetro --pretend. Por ejemplo:
Listado de Código 3.5: Simular la instalación de gnumeric |
# emerge --pretend gnumeric
|
Cuando le pida a Portage que instale un paquete, descargará las fuentes
necesarias desde Internet (si fuera necesario) y las guardará por defecto
en /usr/portage/distfiles. Después, el paquete será
descomprimido, compilado e instalado. Si quiere que portage solamente
descargue las fuentes sin instalarlas, añada la opción --fetchonly a
la orden emerge:
Listado de Código 3.6: Descargar el código fuente de gnumeric |
# emerge --fetchonly gnumeric
|
Encontrar la documentación de un paquete instalado
Muchos paquetes vienen con su propia documentación. Algunas veces, el
parámetro USE doc determina si la documentación debe instalarse o no.
Puede comprobar la existencia del parámetro USE doc con la orden
emerge -vp <nombre paquete>.
Listado de Código 3.7: Comprobar la existencia de del parámetro USE doc |
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB
|
La mejor manera de activar el parámetro USE doc es por paquete,
por medio de /etc/portage/package.use, de manera que solo
obtendrá la documentación para los paquetes que le
interesan. Activando este parámetro de manera global puede causar
problemas con dependencias circulares. Para más información, por favor
lea el capítulo acerca de los
Parámetros USE.
Una vez que el paquete está instalado, su documentación se encuentra
normalmente en un subdirectorio llamado igual que el paquete, bajo el
directorio /usr/share/doc. También puede obtener un listado
de todos los archivos instalados con la herramienta equery la
cual es parte del paquete
app-portage/gentoolkit.
Listado de Código 3.8: Localizar la documentación de un paquete |
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
|
Desinstalando Software
Cuando quiera desinstalar un paquete software de su sistema, utilice
emerge --unmerge. Esto le indicará a Portage que desinstale
todos los archivos instalados por el paquete en su sistema excepto
los archivos de configuración de esa aplicación si la había modificado
después de la instalación. Esto le permite continuar trabajando con
los mismos archivos de configuración si alguna vez decide volver a
instalar la aplicación.
Sin embargo, hemos de tener algo muy en cuenta: Portage
no comprueba si el paquete que está intentando desinstalar es necesario
para algún otro. A pesar de esto, le avisará cuando quiera eliminar un paquete
importante que pueda romper su sistema si lo desinstala.
Listado de Código 3.9: Desinstalar gnumeric del sistema |
# emerge --unmerge gnumeric
|
Cuando desinstala un paquete de su sistema, las dependencias de ese paquete
que se instalaron automáticamente cuando instaló el software, permanecerán.
Para hacer que Portage localice todas las dependencias que puede ser
eliminadas actualmente, utilice la funcionalidad de emerge
--depclean. Hablaremos de esto un poco más adelante.
Actualizando su Sistema
Para mantener su sistema en perfecto estado (sin mencionar la instalación
de los últimas actualizaciones de seguridad) necesita actualizarlo
frecuentemente. Partiendo de que Portage solamente comprueba los ebuilds
en su árbol Portage, lo primero sería actualizar el propio árbol. Cuando
tenga el árbol Portage actualizado, puede actualizar su sistema con
emerge --update world. En el siguiente ejemplo, además hemos utilizado
el parámetro --ask que le indica a Portage que muestre la lista de
paquetes que quiere actualizar y pregunte si se quiere continuar:
Listado de Código 3.10: Actualizar su sistema |
# emerge --update --ask world
|
Portage buscará entonces las nuevas versiones de las aplicaciones que
explícitamente haya instalado (las listadas
en /var/lib/portage/world), sin embargo, no revisa
minuciosamente sus dependencias. Si desea actualizar también esas
dependencias, añada la opción --deep:
Listado de Código 3.11: Actualizar su sistema incluyendo las dependencias |
# emerge --update --deep world
|
Aunque esto no indica todos los paquetes: algunos paquetes de
su sistema son necesarios durante los procesos de compilación y
construcción de los paquetes, pero, una vez que los paquetes se han
instalado, estas dependencias ya no se necesitan. Portage denomina
a éstas dependencias de construcción (build dependencies).
Para incluirlas en un ciclo de actualización, añada
--with-bdeps=y:
Listado de Código 3.12: Actualizar su sistema completamente |
# emerge --update --deep --with-bdeps=y world
|
Ya que las actualizaciones de seguridad también afectan a paquetes
que no han sido explícitamente instalados en el sistema (pero que
son dependencias de otros programas), es recomendable ejecutar
la orden de arriba de vez en cuando.
Si ha cambiado últimamente alguno de sus
parámetros USE quizá quiera
añadir también --newuse. Portage comprobará si los cambios
requieren la instalación de nuevos paquetes o la recompilación de los
existentes:
Listado de Código 3.13: Realizar una actualización completa |
# emerge --update --deep --with-bdeps=y --newuse world
|
Meta-paquetes
Algunos paquetes del árbol Portage no tienen contenido real pero son
utilizados para instalar un conjunto de paquetes. Por ejemplo, el paquete
kde-meta instalará un entorno KDE completo en su sistema incluyendo
varios paquetes relacionados con KDE y también sus dependencias.
Si quiere desinstalar dicho paquete de su sistema, ejecutando emerge
--unmerge sobre el paquete no tendrá efecto total ya que las
dependencias permanecerán en su sistema.
Portage tiene la funcionalidad de eliminar las dependencias huérfanas, pero
la disponibilidad de software necesita que primero actualice completamente
su sistema, incluyendo los nuevos cambios que ha aplicado si actualizó
los parámetros USE. Después de esto, puede ejecutar emerge --depclean
para eliminar las dependencias huérfanas. Cuando haya terminado, necesitará
reconstruir las aplicaciones que estuvieran enlazadas dinámicamente a las que
acaban de ser eliminadas pero no son necesarias.
Todo esto se lleva a cabo a través de tres órdenes:
Listado de Código 3.14: Desinstalar dependencias huérfanas |
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
|
revdep-rebuild es parte del paquete gentoolkit; no olvide
instalarlo primero:
Listado de Código 3.15: Instalar el paquete gentoolkit |
# emerge gentoolkit
|
1.d. Licencias
A partir de la versión 2.1.7 de Portage, puede aceptar o rechazar la
instalación de software basada en esta licencia. Todos los paquetes del
árbol contienen una entrada LICENSE en sus ebuilds. Ejecutando
emerge --search nombredepaquete le mostrará la licencia del paquete.
Por defecto Portage permite todas las licencias, excepto Acuerdos Finales
de la Licencia de Usuario (End User License Agreements o EULAs) que
requieren la lectura y firma de un acuerdo de aceptación.
La variable que controla las licencias permitidas es ACCEPT_LICENSE,
la cual puede ser ajustada en /etc/portage/make.conf:
Listado de Código 4.1: ACCEPT_LICENSE por defecto en /etc/portage/make.conf |
ACCEPT_LICENSE="* -@EULA"
|
Con esta configuración, los paquetes que requieren interacción durante la
instalación para aprobar su EULA no serán instalados. Los paquetes
sin una EULA serán instalados.
Puede ajustar ACCEPT_LICENSE globalmente en
/etc/portage/make.conf, o puede especificarlo en de forma
que afecte a solo un paquete en
/etc/portage/package.license.
Por ejemplo, si quiere permitir la licencia truecrypt-2.7 para
app-crypt/truecrypt, añada lo siguiente a
/etc/portage/package.license:
Listado de Código 4.2: Especificando una licencia truecrypt en package.license |
app-crypt/truecrypt truecrypt-2.7
|
Esto permite la instalación de versiones de truecrypt que tengan la
licencia truecrypt-2.7, pero no versiones con la licencia
truecrypt-2.8.
Importante:
Las licencias se almacenan en /usr/portage/licenses, y
los grupos de licencias se guardan en
/usr/portage/profiles/license_groups. La primera entrada
de cada línea en letras MAYÚSCULAS, es el nombre del grupo de
licencias, y cada entrada detrás de ésta es una licencia individual.
|
Los grupos de licencias definidos en ACCEPT_LICENSE se prefijan
con un signo @. Se muestra un ejemplo de un sistema que globalmente
permite el grupo de licencias compatibles, así como otros grupos y
licencias individuales:
Listado de Código 4.3: ACCEPT_LICENSE en /etc/portage/make.conf |
ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"
|
Si quiere solo software libre y documentación en su sistema, debería usar
la siguiente configuración:
Listado de Código 4.4: Usar únicamente licencias libres |
ACCEPT_LICENSE="-* @FREE"
|
En este caso, "free" está definido por la FSF y la OSI. Cualquier paquete
cuya licencia no se ajuste a estos requisitos no será instalado en su
sistema.
1.e. Cuando Portage se queja...
Sobre SLOTs, paquetes virtuales, ramas, arquitecturas y perfiles
Como mencionamos anteriormente, Portage es muy potente y soporta muchas
características de las que carecen otras herramientas de gestión de
software. Para comprender esto, explicaremos unos cuantos aspectos de
Portage sin profundizar demasiado en los detalles.
Con Portage, diferentes versiones de un mismo paquete pueden coexistir en
un sistema. Mientras otras distribuciones tienden a renombrar el paquete con
sus versiones (por ejemplo freetype and freetype2). Portage
usa una tecnología llamada SLOTs (ranuras). Un ebuild declara un
cierto SLOT para su versión. Ebuilds con diferentes SLOTs pueden coexistir
en el mismo sistema. Por ejemplo, el paquete freetype tiene ebuilds
con SLOT="1" y SLOT="2".
También existen paquetes que proporcionan la misma funcionalidad pero
están implementados de maneras distintas. Por ejemplo, metalogd,
sysklogd y syslog-ng son todos paquetes de registro del
sistema. Aplicaciones que necesitan la disponibilidad de un "registrador
del sistema" no pueden depender, por ejemplo, de metalogd, ya que
el resto de registradores del sistema son igualmente válidos. Portage
permite virtuals: cada paquete de registro del sistema se lista
como una dependencia "exclusiva" del servicio de registro en el paquete
virtual logger de la categoría virtual, de esta forma las
aplicaciones pueden depender del paquete virtual/logger. Cuando
se instala el paquete, se obtendrá el primer paquete de registro
mencionado, a menos que ya se haya instalado previamente un paquete que
ofrezca el servicio (en este caso, la dependencia virtual ya está
satisfecha).
Los programas en el árbol Portage puede residir en diferentes ramas. Por
defecto, su sistema solamente acepta paquetes que Gentoo considera estables. La
mayoría de los paquetes nuevos, cuando son aceptados, ingresan en la rama
inestable. Esto implica que necesitan hacerse más pruebas antes de marcarlo
como estable. Aunque puede ver los ebuilds de ese software en su árbol de
Portage, Portage no los actualizará hasta que sean marcados como estables.
Algunos programas solo están disponibles para unas pocas arquitecturas. O los
programas no funcionan en otras arquitecturas, o necesitan más pruebas, o el
desarrollador que añade el programa a Portage no es capaz de verificar si el
paquete funciona en diferentes arquitecturas.
Cada instalación de Gentoo adhiere un cierto perfil el cual contiene,
entre otra información, la lista de paquetes necesarios para que el sistema
funcione normalmente.
Paquetes bloqueados
Listado de Código 5.1: Aviso de Portage sobre paquetes bloqueados (con --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
|
Listado de Código 5.2: Aviso de Portage sobre paquetes bloqueados (sin --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
|
Los Ebuilds contienen campos específicos que informan a Portage sobre sus
dependencias. Hay dos posibles dependencias: dependencias de compilación,
declaradas en DEPEND y dependencias en tiempo de ejecución,
declaradas en RDEPEND. Cuando una de estas dependencias
marca explícitamente un paquete o paquete virtual como no compatible,
se dispara un bloqueo.
Aunque las versiones recientes de Portage son lo suficientemente
inteligentes para resolver los bloqueos de menor importancia sin necesidad
de la intervención del usuario, ocasionalmente necesitará resolverlo a mano
como se explica abajo.
Para solucionar un bloqueo, puede elegir no instalar el paquete o desinstalar
primero el paquete conflictivo. En el ejemplo anterior, puedes optar por no
instalar postfix o eliminar primero ssmtp.
También puede ocurrir que vea los paquetes en conflicto con operadores
lógicos concretos, como por ejemplo
<media-video/mplayer-1.0_rc1-r2. En este caso, actualizar
a la versión más reciente del paquete bloqueante debería eliminar el
bloqueo.
También es posible que dos paquetes que aún no se han instalado se estén
bloqueando mutuamente. En este caso (poco frecuente), se debería investigar
por que necesitamos instalar ambos. En la mayoría de los casos se puede
realizar con uno solo de los paquetes. Si no, por favor envíe un informe de
error al sistema de seguimiento de errores
de Gentoo.
Paquetes enmascarados (masked)
Listado de Código 5.3: Aviso de Portage sobre paquetes enmascarados |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Listado de Código 5.4: Aviso de Portage sobre paquetes enmascarados - razón |
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))
|
Cuando quiera instalar un paquete que no está disponible para su sistema,
recibirá un error de enmascaramiento. Debería probar a instalar una
aplicación distinta que este disponible para su sistema o esperar hasta
que el paquete este disponible. Siempre hay una razón para que un paquete
esté enmascarado:
-
~arch keyword implica que la aplicación no esta probada lo
suficiente para ser parte de la rama estable. Espere unos cuantos días
o semanas y vuelva a intentarlo.
-
-arch keyword o -* keyword implica que la aplicación
no funciona en su arquitectura. Si cree que el paquete funcionará, cree
un bug en nuestro sitio web
bugzilla.
-
missing keyword indica que la aplicación aún no ha sido probada
para su arquitectura. Pida al correspondiente equipo de arquitectura que
pruebe el paquete o pruébelo por ellos e informe de su experiencia en
nuestro sitio web bugzilla.
-
package.mask implica que el paquete se ha encontrado corrupto,
inestable o peor y ha sido marcada deliberadamente para que no se use.
-
profile implica que el paquete no está disponible para su perfil.
La aplicación podría romper su sistema si la instala o no es compatible
con el perfil que está usando.
-
license significa que la licencia del paquete no es compatible
con su ajuste ACCEPT_LICENSE. Debe permitir explícitamente su
licencia o grupo de licencias ajustándolo en
/etc/portage/make.conf o en
/etc/portage/package.license. Consulte Licencias para aprender cómo se gestionan las
licencias.
Cambios necesarios en los ajustes USE
Listado de Código 5.5: Advertencia de Portage acerca de cambios requeridos en los ajustes USE |
The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test
|
También puede que se muestre el siguiente mensaje de error, si no se ha
habilitado --autounmask:
Listado de Código 5.6: Error de Portage acerca de cambios requeridos en los ajustes USE |
emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])
|
Esta advertencia y error suceden cuando se quiere instalar un paquete
que no solo depende de otro paquete, sino que requiere que ese paquete
se haya construido con un ajuste USE en particular (o un conjunto de
ajustes USE). En el ejemplo dado, el paquete app-text/feelings
necesita construirse con USE="test", sin embargo, este ajuste
USE no está habilitado en el sistema.
Para resolver esta situación, puede añadir el ajuste USE requerido a
sus ajustes globales en /etc/portage/make.conf, o
definirlo específicamente para el paquete en
/etc/portage/package.use.
Dependencias perdidas
Listado de Código 5.7: Aviso de Portage sobre dependencias perdidas |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3-4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
|
La aplicación que está tratando instalar depende de otro paquete que no
esta disponible para su sistema. Por favor, compruebe bugzilla para ver si el problema
se conoce o no, en este caso informe de ello. A menos que este mezclando
ramas esto no debería ocurrir y lo consideraremos un error.
Nombre ambiguo del Ebuild
Listado de Código 5.8: Aviso de Portage sobre nombre ambiguos en ebuild |
[ Results for search key : listen ]
[ Applications found : 2 ]
* dev-tinyos/listen [ Masked ]
Latest version available: 1.1.15
Latest version installed: [ Not Installed ]
Size of files: 10,032 kB
Homepage: http://www.tinyos.net/
Description: Raw listen for TinyOS
License: BSD
* media-sound/listen [ Masked ]
Latest version available: 0.6.3
Latest version installed: [ Not Installed ]
Size of files: 859 kB
Homepage: http://www.listen-project.org
Description: A Music player and management for GNOME
License: GPL-2
!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.
|
La aplicación que quiere instalar tiene un nombre que corresponde con más de
un paquete. Necesita aportar también el nombre de la categoría. Portage le
informará de los posibles casos entre los que puede elegir.
Dependencias Circulares
Listado de Código 5.9: Aviso de Portage sobre dependencias circulares |
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
|
Dos (o más) paquetes que quiere instalar dependen uno de otro y, por tanto,
no pueden instalarse. Esto casi siempre se considera un error en el árbol
Portage. Por favor, vuelva a sincronizar después de un tiempo e inténtelo de
nuevo. También puede comprobar bugzilla para saber si se tiene
conocimiento sobre el tema o si no, en cuyo caso informe sobre ello.
Fallo en la descarga
Listado de Código 5.10: Aviso de Portage sobre un fallo en la descarga |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
!!! Some fetch errors were encountered. Please see above for details.
|
Portage no es capaz de descargar las fuentes para una aplicación específica y
tratará de continuar instalando el resto de aplicaciones (si es posible). Este
fallo puede deberse a que un servidor réplica no esta bien sincronizado o a que
el ebuild apunta a una localización incorrecta. El servidor donde residen las
fuentes podría estar caído por alguna razón.
Pruebe después de una hora y vea si el problema persiste.
Protección del Perfil de Sistema
Listado de Código 5.11: Aviso de Portage sobre un paquete protegido por perfil |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
|
Está intentando eliminar un paquete que es parte del fundamental de su sistema.
Éste se haya en su perfil y es necesario, por tanto, no debería ser eliminado
del sistema.
Errores en la verificación del digest
A veces, al intentar hacer emerge a un paquete, éste fallará, con el
siguiente mensaje:
Listado de Código 5.12: Falla en la suma de control |
>>> checking ebuild checksums
|
Esta es una señal que hay algún problema con el árbol Portage -- muchas
veces esto es porque un desarrollador ha cometido una equivocación al
ingresar un paquete en el árbol.
Cuando falla la verificación del digest, no intente
recalcularlo. El ejecutar ebuild foo manifest no va a resolver el
problema; seguramente ¡lo empeorará!
En lugar de esto, espere una o dos hora que el árbol estabilice. Es probable
que el error haya sido detectado enseguida, pero podrá tomar algún tiempo
para que propague la corrección al árbol Portage. Mientras espera,
revise Bugzilla a ver si
alguien ha reportado el problema, si no, siga adelante y archive un
"bug" reportando el paquete roto.
Una vez que compruebe que el error ha sido reparado, tal vez quiera
re-sincronizar para recoger la suma de control reparada.
Importante:
¡Esto no implica que vaya re-sincronizar su árbol Portage
múltiples veces! Tal como se establece en la directriz de rsync (al
ejecutar emerge --sync), los usuarios que sincronicen con
demasiada frecuencia ¡serán bloqueados! De hecho, es mejor esperar a su
próxima sincronización programada para no sobrecargar los servidores
rsync.
|
2. Los parámetros USE
2.a. ¿Qué son los parámetros USE?
Las ideas que hay detrás de los parámetros USE
Mientras esté instalando Gentoo (o cualquier otra distribución, incluso
otro sistema operativo), tomará varias decisiones dependiendo del entorno en el
que esté trabajando. Una instalación para un servidor es distinta a
una para una estación de trabajo. También una estación de trabajo dedicada a
juegos es diferente a una estación de trabajo que se use para renderizados
en 3D.
Estas diferencias no solo dependen de los paquetes instalados, si no también
de las características para las que ciertos paquetes tienen soporte. Si no
necesita OpenGL, ¿para qué molestarse en instalar OpenGL y construir la
mayoría de sus aplicaciones con soporte OpenGL? Si no quiere usar KDE, ¿para
qué molestarte en compilar paquetes con soporte para KDE si podrían funcionar
perfectamente sin él?
Para ayudar a los usuarios a decidir qué instalar/activar o no,
necesitamos que el usuario especifique su entorno de una manera
sencilla. Esto obliga al usuario a decidir que es lo que realmente
quiere; además de facilitar a Portage, nuestro sistema de gestión de
paquetes, la tarea de tomar decisiones útiles.
Definición de un parámetro USE
Comencemos por definir qué son los parámetros USE. Un parámetro USE es
una palabra clave que incorpora información de soporte y dependencias
para un concepto en concreto. Si define un determinado parámetro USE,
Portage sabrá que el usuario desea soporte para la palabra clave
escogida. Por supuesto, también altera las dependencias de un paquete.
Veamos un ejemplo específico: la palabra clave kde. Si no la
tiene en su variable USE, todos los paquetes que tengan soporte
opcional para KDE se construirán sin él. Los que tengan
una dependencia opcional con KDE se instalarán sin
instalar las librerías de KDE (como dependencia). Si ha definido la
palabra clave kde, entonces dichos paquetes sí se
construirán con soporte para KDE, y las librería de KDE serán
instaladas
Definiendo correctamente las palabras clave, conseguirá un sistema
confeccionado específicamente para sus necesidades.
¿Qué parámetros USE existen?
Hay dos tipos de parámetros USE: globales y locales.
-
Un parámetro USE global lo usan varios paquetes, en todo
el sistema. Es lo que la mayoría de la gente entiende como parámetros USE.
-
Un parámetro USE local lo utiliza un solo paquete para tomar
decisiones específicas para dicho paquete.
Puede encontrar una lista de los parámetros USE globales en línea o localmente en
/usr/portage/profiles/use.desc.
Se puede encontrar una lista de los parámetros USE locales
en /usr/portage/profiles/use.local.desc.
2.b. Usando los parámetros USE
Declarar parámetros USE permanentes
Esperamos que se haya convencido de la importancia de los parámetros
USE. Ahora pasaremos a explicar como se declaran estos parámetros.
Como ya se ha dicho anteriormente, todos los parámetros USE se
declaran dentro de la variable USE. Para simplificar al usuario
la tarea de buscar y escoger parámetros USE, ya proporcionamos una
configuración predeterminada. Esta configuración es un
compendio de parámetros que creemos se utilizan frecuentemente por los
usuarios de Gentoo. Dicha configuración predeterminada se declara en
los ficheros make.defaults que forman parte de su perfil.
El perfil al que atiende su sistema lo indica el enlace simbólico
/etc/portage/make.profile. Cada perfil funciona sobre
otro, más extenso, y el resultado final es una suma de todos ellos.
El perfil más alto es el perfil base
(/usr/portage/profiles/base).
Echemos un vistazo a la configuración predeterminada para el perfil
13.0:
Listado de Código 2.1: Variable USE acumulada de make.defaults para el perfil 13.0 |
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"
|
Como puede ver, esta variable contiene bastantes palabras
clave. No modifique el fichero make.defaults para
ajustar la variable USE a sus necesidades: ¡los cambios se
perderán al actualizar el árbol del Portage!
Para modificar esta configuración predeterminada, necesita añadir o
eliminar palabras clave a la variable USE. Para llevarlo a
cabo, se define la variable USE en
/etc/portage/make.conf. En esta variable añada los
parámetros USE que necesite o elimine los que no quiera. Para
eliminarlos coloque el símbolo menos ("-") delante.
Por ejemplo, para eliminar el soporte para KDE y QT además de añadir
soporte para ldap, puede definirse el siguiente parámetro USE
en /etc/portage/make.conf:
Listado de Código 2.2: Un ejemplo de confirmación USE en /etc/portage/make.conf |
USE="-kde -qt4 ldap"
|
Declarar parámetros USE para paquetes específicos
A veces le interesará establecer un cierto parámetro USE tan solo para
una o dos aplicaciones, pero no para todo el sistema. Para solventar,
esto, necesitará crear el directorio /etc/portage (si no
existiera) y editar /etc/portage/package.use. Esta ruta
es generalmente un único fichero pero podria ser un directorio; vea
man portaga para más información. Los siguientes ejemplos
asumirán que package.use es un único fichero.
Por ejemplo, si no le interesa soporte global para berkdb pero
lo quiere para mysql, necesita añadir:
Listado de Código 2.3: Ejemplo de /etc/portage/package.use |
dev-db/mysql berkdb
|
Por supuesto también puede desactivar el empleo específico de
un parámetro USE para una aplicación en concreto. Por ejemplo si no
quiere soporte para java en PHP:
Listado de Código 2.4: Segundo ejemplo de /etc/portage/package.use |
dev-php/php -java
|
Declarar parámetros USE temporales
A veces necesitará utilizar una cierta configuración de USE tan solo
una vez. En lugar de editar /etc/portage/make.conf dos
veces (una para hacer y otra para deshacer los cambios) puede declarar
la variable USE como una variable de entorno. Recuerde que, si utiliza
este método, cuando vuelva a emerger o actualice este aplicación
(tanto si es particular como si forma parte de una actualización del
sistema) ¡Perderá los cambios!
Como ejemplo, vamos a eliminar temporalmente el parámetro java USE
durante la instalación de seamonkey.
Listado de Código 2.5: Utilizar USE como una variable de entorno |
# USE="-java" emerge seamonkey
|
Precedencia
Por supuesto, hay una determinada precedencia respecto a qué
configuración tiene prioridad sobre la configuración del USE. No
querrá declarar USE="-java" y comprobar posteriormente que
java continua utilizándose debido a una configuración que tiene
mayor prioridad. La precedencia para la configuración del USE es (el
primero tiene la mínima prioridad):
-
Configuración predeterminada de USE declarada en los archivos
make.defaults de su perfil.
-
Configuración definida por el usuario en
/etc/portage/make.conf
-
Configuración definida por el usuario en
/etc/portage/package.use
-
Configuración definida por el usuario como variable de entorno
Para observar el valor final del USE tal y como lo verá
Portage, ejecute emerge --info. Se listarán una serie de
variables importantes (incluyendo la variable USE) con sus
valores correspondientes.
Listado de Código 2.6: Ejecutar emerge info |
# emerge --info
|
Adaptar su Sistema Completamente a los Nuevos Parámetros USE
Si ha cambiado sus parámetros USE y desea actualizar todo su sistema
para que utilice el nuevo parámetro, utilice la opción de
emerge llamada --newuse:
Listado de Código 2.7: Recompilar todo el sistema |
# emerge --update --deep --newuse world
|
A continuación, ejecute una limpieza completa de Portage para eliminar
las dependencias que habían sido instaladas en su "antiguo" sistema
pero que han quedado obsoletas por los nuevos parámetros de USE.
Aviso:
Ejecutar emerge depclean es una operación peligrosa y debería
tratarse con cuidado. Revise en profundidad la lista de paquetes
"obsoletos" y asegúrese de que no elimina ningún paquete que
necesite. En el siguiente ejemplo hemos añadido -p para mostrar
la lista de paquetes que serían eliminados pero sin eliminarlos
físicamente.
|
Listado de Código 2.8: Desinstalar los paquetes obsoletos |
# emerge -p depclean
|
Cuando haya finalizado la limpieza, ejecute revdep-rebuild para
recompilar las aplicaciones que están enlazadas dinámicamente con los
objetos que proporcionaban los paquetes
eliminados. revdep-rebuild forma parte del paquete
gentoolkit; no olvide hacer emerge primero.
Listado de Código 2.9: Ejecutar revdep-rebuild |
# revdep-rebuild
|
Cuando todo esto haya terminado, su sistema estará utilizando la nueva
configuración de los parámetros USE.
2.c. Parámetros USE específicos de un paquete
Viendo los parámetros USE disponibles
Veamos el ejemplo de seamonkey: ¿Qué parámetros USE influyen
sobre él? Para averiguarlo, usamos emerge con las opciones
--pretend (simula llevar a cabo la acción) y --verbose
(obtener una salida más detallada):
Listado de Código 3.1: Viendo los parámetros USE usados |
# emerge --pretend --verbose seamonkey
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB
|
emerge no es la única herramienta disponible para esta labor.
De hecho, tenemos una herramienta llamada equery dedicada a
obtener información sobre los paquetes; la cual se encuentra en el
paquete gentoolkit. En primer lugar, instale gentoolkit:
Listado de Código 3.2: Instalar gentoolkit |
# emerge gentoolkit
|
Ahora ejecute equery con el argumento uses para ver los
parámetros del USE de un paquete en concreto. Por ejemplo, en el caso
del paquete gnumeric:
Listado de Código 3.3: Utilizar equery para ver los parámetros USE usados |
# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
U I
- - debug : Enable extra debug codepaths, like asserts and extra output.
If you want to get meaningful backtraces see
http://www.gentoo.org/proj/en/qa/backtraces.xml .
+ + gnome : Adds GNOME support
+ + python : Adds support/bindings for the Python language
- - static : !!do not set this during bootstrap!! Causes binaries to be
statically linked instead of dynamically
|
3. Características de Portage
3.a. Características de Portage
Portage tiene varias características adicionales que hacen de su
experiencia con Gentoo algo mucho mejor. Muchas de estas
características residen en ciertas herramientas software que mejoran
el rendimiento, la estabilidad, la seguridad, ...
Para activar o desactivar ciertas características de Portage
necesita editar la variable FEATURES del archivo
/etc/portage/make.conf. Esta variable contiene una lista
con las palabras clave de cada característica separadas por un
espacio en blanco. En algunos casos necesita además instalar la
herramienta que implementa la característica.
No todas las características que soporta Portage están aquí reflejadas.
Para una consulta completa por favor revise la página de la ayuda
referente a make.conf
Listado de Código 1.1: Consultar la página de ayuda sobre make.conf |
$ man make.conf
|
Para conocer qué características están siendo utilizadas por defecto, ejecute
emerge --info y busque la variable FEATURES o utilice grep:
Listado de Código 1.2: Conociendo que características están configuradas |
$ emerge --info | grep FEATURES
|
3.b. Compilación Distribuida
Usar distcc
distcc es un programa para distribuir un trabajo de compilación a
través de muchas, no necesariamente idénticas, máquinas en una red. Los
clientes de distcc envían toda la información necesaria a los
servidores DistCC disponibles (corriendo distccd) así pueden compilar
trozos de código fuente para el cliente. El resultado final, es un tiempo de
compilación más rápido.
Puede encontrar información más detallada sobre distcc (e información
de como tenerlo funcionando sobre Gentoo) en nuestra Documentación Gentoo de Distcc.
Instalar distcc
Distcc se distribuye con un monitor gráfico para monitorizar las tareas que su
computador está enviando para compilar. Si usa Gnome entonces ponga 'gnome' en
su configuración USE. De todas formas, si no usa Gnome pero sigue
deseando disponer de un monitor, entonces debería poner 'gtk' en su
configuración USE.
Listado de Código 2.1: Instalar distcc |
# emerge distcc
|
Activar el soporte en Portage
Añada distcc a la variable FEATURES dentro de
/etc/portage/make.conf. Hecho esto, edite la variable
MAKEOPTS conforme a sus necesidades. Una pauta conocida para
configurarla es poner -jX con X representando el número
de CPUs que ejecutan distccd (incluyendo la máquina local) más
uno, pero quizá obtenga mejores resultados con otros números.
Ahora ejecute distcc-config y cree una lista de los servidores distcc
disponibles. Para un ejemplo simple, supondremos que los servidores DistCC son
192.168.1.102 (el host local), 192.168.1.103 y 192.168.1.104
(los dos hosts "remotos"):
Listado de Código 2.2: Configurar distcc para usar los tres servidores DistCC disponibles |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
Por supuesto, no se olvide ejecutar también el demonio distccd:
Listado de Código 2.3: Arrancar el demonio distcc |
# rc-update add distccd default
# /etc/init.d/distccd start
|
3.c. Compilación utilizando caché
Acerca de ccache
ccache es un caché de compilación rápida. Cuando compila un programa,
puede cachear resultados intermedios, de forma que, si recompila el mismo
programa, el tiempo de compilación se reducirá ampliamente. La primera
vez que se ejecuta ccache, ésta será más lenta que una compilación normal.
Recompilaciones posteriores deberían ser más rápidas. La herramienta
ccache solo es útil si va a recompilar la misma aplicación muchas veces;
por lo tanto en la mayoría de los casos es útil únicamente para los
desarrolladores de software.
Si esta interesado en los pros y los contras de ccache, por favor
visite la página web de ccache.
Aviso:
ccache puede causar numerosos fallos de compilación. Algunas
veces ccache mantendrá objetos con código obsoleto o ficheros corruptos
que pueden llevar a que no se pueda hacer emerge de ciertos paquetes.
Si esto ocurre (Si obtiene errores como "File not recognized: File
truncated"), intente recompilar la aplicación con ccache deshabilitado
(FEATURES="-ccache" en /etc/portage/make.conf)
antes de informar de una incidencia bug. A menos que esté
realizando trabajo de desarrollo, no active ccache.
|
Instalar ccache
Para instalar ccache, ejecute emerge ccache:
Listado de Código 3.1: Instalar ccache |
# emerge ccache
|
Activar el Soporte en Portage
Primero, edite el fichero /etc/portage/make.conf y añada
a la variable FEATURES la palabra clave ccache. A
continuación, añada una nueva variable llamada CCACHE_SIZE y dele el
valor "2G":
Listado de Código 3.2: Editar CCACHE_SIZE en /etc/portage/make.conf |
CCACHE_SIZE="2G"
|
Para comprobar si ccache funciona, pídale a ccache que te muestre
las estadísticas. Ya que Portage utiliza un directorio diferente para
guardar los datos, se necesita fijar la variable CCACHE_DIR para
reflejar esto:
Listado de Código 3.3: Observar las estadísticas de ccache |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
La ruta /var/tmp/ccache es el directorio por defecto que
emplea Portage para ccache; si quiere cambiar esta variable, configure
CCACHE_DIR en /etc/portage/make.conf.
Sin embargo, si ejecuta ccache, empleará como directorio por defecto
${HOME}/.ccache, que es la razón por la cual necesita configurar
la variable CCACHE_DIR cuando se le pide a Portage que muestre las
estadísticas de ccache.
Utilizar ccache para compilaciones de C sin relación con Portage
Si quiere utilizar ccache para compilaciones que no tengan que ver con Portage,
añada /usr/lib/ccache/bin al principio de su variable PATH
(antes de /usr/bin). Esto puede llevarse a cabo editando
el fichero .bash_profile de su directorio home de usuario.
.bash_profile es una de las maneras de definir las variables PATH.
Listado de Código 3.4: Editar .bash_profile |
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
|
3.d. Soporte para Paquetes Binarios
Crear paquetes binarios
Portage soporta la instalación de paquetes precompilados. A pesar de que
Gentoo no proporciona paquetes precompilados por sí mismo (excepto para
las imágenes GRP) Portage puede funcionar perfectamente con paquetes
precompilados.
Para crear un paquete precompilado puede utilizar quickpkg si el paquete
está instado en su sistema, o emerge con las opciones --buildpkg
o --buildpkgonly.
Si quiere que Portage cree paquetes precompilados de cada paquete individual
que instale, añada buildpkg a la variable FEATURES.
Puede encontrar mayor soporte para la creación de conjuntos de paquetes
precompilados con catalyst. Para más información sobre catalyst,
por favor lea las
Preguntas frecuentes sobre Catalyst (en inglés).
Instalar Paquetes Precompilados
A pesar de que Gentoo no proporciona uno, puede crear un repositorio central
donde almacene paquetes precompilados. Si quiere utilizar este repositorio,
necesita que Portage lo conozca a través de la variable PORTAGE_BINHOST
que debe apuntar al repositorio. Por ejemplo, si los paquetes precompilados
están en ftp://buildhost/gentoo:
Listado de Código 4.1: Configurar PORTAGE_BINHOST en /etc/portage/make.conf |
PORTAGE_BINHOST="ftp://buildhost/gentoo"
|
Cuando quiera instalar un paquete precompilado, añada la opción
--getbinpkg a la orden emerge junto a la opción --usepkg.
La primera le indica a emerge que descargue el paquete precompilado
del servidor definido previamente, mientras que el segundo indica a emerge
que intente instalar el paquete precompilado antes de buscar el código fuente
y compilarlo.
Por ejemplo, para instalar gnumeric a través de paquetes precompilados:
Listado de Código 4.2: Instalar el paquete precompilado gnumeric |
# emerge --usepkg --getbinpkg gnumeric
|
Más información sobre las opciones para utilizar paquetes precompilados con
emerge puede consultarse en la página de la ayuda:
Listado de Código 4.3: Leyendo la página de ayuda sobre emerge |
$ man emerge
|
3.e. Descargar los Ficheros
Parallel fetch
Al hacer emerge a una serie de paquetes, Portage puede obtener las
fuentes para el siguiente paquete en el lista aún mientras está
compilando otro paquete, acortando los tiempos de instalación. Para
hacer uso de esta opción agregue "parallel-fetch" a su variable
FEATURES. Observe que está activada por defecto de modo que no
necesitaría activarla explícitamente.
Userfetch
Cuando Portage se ejecuta por el usuario root, FEATURES="userfetch"
permitirá que Portage ejecute sin los privilegios de superusuario
mientras obtiene las fuentes. Este es una pequeña mejora en la
seguridad.
3.f. Obteniendo instantáneas validadas del árbol Portage
Como administrador, puede optar por actualizar únicamente su árbol
Portage local con una instantánea del árbol validada criptográficamente
tal y como publica el equipo de infraestructura de Gentoo. Con esto
se asegura que ningún otro servidor réplica falso está añadiendo
código no deseado u otros paquete en el árbol que está descargando.
Para configurar Portage, en primer lugar cree un almacén de confianza
en el cual pueda descargar y aceptar las claves del equipo de
infraestructura de Gentoo responsable del firmado de las instantáneas
del árbol Portage. Desde luego, si lo desea puede validar esta clave
GPG tal y como muestran estas instrucciones
(por ejemplo comprobar la huella digital). Puede encontrar una
lista de las claves GPG usadas por el equipo en ingeniería de
lanzamientos en su página de
proyecto.
Listado de Código 6.1: Crear un almacén de confianza para Portage |
# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust
|
A continuación, edite el fichero /etc/portage/make.conf
y active el soporte para la validación de las instantáneas del árbol
Portage firmadas (usando FEATURES="webrsync-gpg") y deshabilite
la actualización del árbol Portage usando el método común
emerge --sync.
Listado de Código 6.2: Actualizar Portage para la validacón del árbol firmado |
FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""
|
Eso es todo. La próxima vez que ejecute emerge-webrsync, únicamente
las instantáneas con una firma válida se expandirán en su sistema de
ficheros.
4. Guiones de inicio
4.a. Niveles de ejecución
Iniciando su sistema
Al iniciar, notará que pasará al frente suyo una gran cantidad de
texto. Si pone atención, notará que estos textos son iguales cada vez
que reinicie su sistema. La secuencia de todas estas acciones se llama
la secuencia de inicio y es (más o menos) definido
estáticamente.
En primer lugar, su gestor de arranque cargará en memoria la imagen del
núcleo que definió en la configuración del gestor de arranque, después de
lo cual, se indica a la CPU que debe ejecutar el núcleo. Al ser cargado y
luego ejecutado inicializa todas las estructuras y tareas específicas
del núcleo e inicia el proceso init.
Este proceso asegura que todos los sistemas de archivo (definidos en
/etc/fstab) estén montados y listos para usar. Luego
ejecuta varios guiones en /etc/init.d, correspondientes a
los servicios requeridos para tener un sistema correctamente iniciado.
Finalmente, al concluir la ejecución de los guiones, init
activa los terminales (generalmente solo las consolas virtuales
accesibles con Alt-F1, Alt-F2, etc.) fijándoles un
proceso especial denominado agetty. Este proceso hará posible
que pueda ingresar al sistema a través de uno de estos terminales
ejecutando login.
Guiones de inicio (init scripts)
Ahora bien, init no solamente ejecuta los guiones contenidos en
/etc/init.d de manera aleatoria. Aún más, no ejecuta
todos los guiones del /etc/init.d, solamente los que han
sido seleccionados para ejecutar. Los guiones seleccionados para
ejecutar se encuentran dentro del directorio
/etc/runlevels.
Primero, init ejecuta todos los guiones de
/etc/init.d cuyos vínculos simbólicos se encuentran
dentro de /etc/runlevels/boot. Usualmente los iniciará en
orden alfabético, pero algunos guiones tienen información relativa a
dependencias, para lo cual otros guiones deben ser iniciados
anteriormente.
Cuando se ejecuten todos los guiones referenciados en
/etc/runlevels/boot, init continua su trabajo con los
guiones en /etc/runlevels/default. Una vez más, usará el
orden alfabético, salvo cuando hay dependencias, en cuyo caso es alterado
el orden de inicio para realizar una secuencia válida de arranque.
¿Cómo funciona Init?
Por supuesto que init no decide todo eso por su
cuenta. Requiere un archivo de configuración que especifica las
acciones a tomar. Este archivo es /etc/inittab.
Si recuerda al secuencia de inicio recién explicada, recordará que la
primera acción de init es montar todos los sistemas de
archivo. Esto está definido en la siguiente línea de /etc/inittab:
Listado de Código 1.1: La línea de inicialización del sistema en /etc/inittab |
si::sysinit:/sbin/rc sysinit
|
Esa línea dice a init que debe ejecutar /sbin/rc sysinit al
iniciar el sistema. Los guiones /sbin/rc se encargan de la
inicialización, con lo que podríamos decir que init no hace mucho,
delega la tarea de inicialización del sistema a otro proceso.
En segundo lugar, init ejecutó los guiones con vínculos
simbólicos en /etc/runlevels/boot. Esto se define en la
siguiente línea:
Listado de Código 1.2: Inicialización del sistema, continuada |
rc::bootwait:/sbin/rc boot
|
Una vez más, el guión rc lleva a cabo las tareas
necesarias. Note que la opción de rc (boot) corresponde
al subdirectorio usado bajo /etc/runlevels.
Ahora init revisa su archivo de configuración para ver que
nivel de ejecución debe ejecutar. Para decidirlo, lee la
siguiente línea de /etc/inittab:
Listado de Código 1.3: La línea init por defecto (default) |
id:3:initdefault:
|
En este caso (para la mayoría de usuarios Gentoo), el identificador
del nivel de ejecución será el 3. Con esta información
init revisa qué debe ejecutar para iniciar el nivel de
ejecución 3:
Listado de Código 1.4: Definiciones de niveles de ejecución |
l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
|
La línea que define el nivel 3, de nuevo usa el guión rc para
iniciar los servicios (ahora con el parámetro por defecto
default). Note una vez más que el parámetro pasado al guión
rc corresponde al subdirectorio de /etc/runlevels.
Al terminar rc, init decide cuáles consolas virtuales
debe activar y qué órdenes se deben ejecutar para cada una:
Listado de Código 1.5: Definición de las consolas virtuales |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
|
¿Qué es un nivel de ejecución?
Ha visto que init utiliza un esquema de numeración para decidir
cual nivel de ejecución debe activar. Un nivel de
ejecución es un estado en el cual su sistema está corriendo y
contiene guiones (del nivel de ejecución o initscripts)
que serán ejecutados al ingresar o salir del nivel de ejecución.
En Gentoo, hay siete niveles de ejecución definidos: tres internos y
cuatro definidos por el usuario. Los internos se llaman
sysinit, shutdown y reboot y hacen exactamente lo
que implican sus nombres, inicialización, apagado y reinicio del
sistema.
Los niveles de ejecución definidos por el usuario están acompañados de
un subdirectorio bajo /etc/runlevels: boot,
default, nonetwork y single. El
nivel de ejecución boot inicia los servicios necesarios
que requieren los demás niveles de ejecución. Los tres niveles de
ejecución restantes difieren respecto a los servicios que inician:
default es para uso diario, nonetwork en
caso de no requerirse la red y single es utilizado en
caso de necesitar arreglar el sistema.
Trabajando con los guiones de inicio
Los guiones iniciados por el proceso rc son llamados guiones de
inicio o init scripts. Cada guión en
/etc/init.d puede ser ejecutado con los parámetros
start, stop, restart, pause, zap,
status, ineed, iuse, needsme,
usesme o broken.
Para iniciar, parar o reiniciar un servicio (y sus respectivas
dependencias), deben usarse start, stop y
restart:
Listado de Código 1.6: Iniciar postfix |
# /etc/init.d/postfix start
|
Nota:
Solo los servicios que necesiten (need) del servicio nombrado
serán parados o reiniciados. Los demás servicios, aquellos que usen
(use) el servicio nombrado, pero que no lo necesiten)
continuarán sin ser tocados.
|
Si desea parar un servicio, pero no los que dependan de el, puede usar
el parámetro pause para pausarlo:
Listado de Código 1.7: Detener postfix, manteniendo la ejecución de los demás servicios |
# /etc/init.d/postfix pause
|
Si desea ver el estado de un servicio (iniciado, parado, pausado, ...)
puede usar el parámetro status:
Listado de Código 1.8: Estado del servicio postfix |
# /etc/init.d/postfix status
|
Si la respuesta a status indica que el servicio está corriendo, pero
realmente no es así, puede reajustarlo manualmente con el
parámetro zap:
Listado de Código 1.9: Reajustar la información de estado del servicio postfix |
# /etc/init.d/postfix zap
|
Para preguntar por las dependencias que tiene un servicio, puede usar
iuse o ineed. Con ineed puede ver cuales
servicios son realmente necesarios para el correcto funcionamiento del
servicio nombrado. Por otra parte, el parámetro iuse muestra
los servicios que pueden ser usados por el servicio nombrado, pero que
no son requeridos para su correcto funcionamiento.
Listado de Código 1.10: Solicitar una lista de servicios de los cuales depende postfix |
# /etc/init.d/postfix ineed
|
De igual manera, puede indagar que servicios requieren el servicio
nombrado (needsme) o cuáles pueden usarlo (usesme):
Listado de Código 1.11: Solicitar una lista de todos los servicios que requieren postfix |
# /etc/init.d/postfix needsme
|
Finalmente, puede indagar cuales dependencias son requeridas y están faltando:
Listado de Código 1.12: Solicitar una lista de dependencias faltantes para postfix |
# /etc/init.d/postfix broken
|
4.b. Trabajando con rc-update
¿Qué es rc-update?
El sistema de inicio (init) de Gentoo usa un árbol de dependencias para
decidir qué servicios deben iniciarse primero. Como ésta es una tarea
tediosa, que no deseamos que nuestros usuarios tengan que hacer
manualmente, hemos creado unas herramientas para facilitar la
administración de los niveles de ejecución y los guiones de inicio.
Con rc-update puede añadir o quitar guiones de inicio a un
nivel de ejecución. La herramienta rc-update automáticamente
usará el guión depscan.sh para reconstruir el árbol de dependencias.
Añadiendo y removiendo servicios
Ya hemos agregado guiones de inicio al nivel de ejecución por
defecto durante la instalación de Gentoo. En ese instante tal vez no
haya tenido una idea clara acerca del uso de un nivel de ejecución
"por defecto", aunque ahora sí. El guión rc-update requiere un
segundo parámetro que define la acción a llevar a cabo: add,
del o show para agregar, borrar o mostrar.
Para añadir o quitar un guión de inicio, use rc-update con el
parámetro add o del, seguido por el nombre del guión de
inicio y el nivel de ejecución, por ejemplo:
Listado de Código 2.1: Quitar postfix del nivel de ejecución por defecto |
# rc-update del postfix default
|
La orden rc-update -v show mostrará todos los guiones de inicio
con los niveles de ejecución donde ejecutarán:
Listado de Código 2.2: Recibir información de los guiones de inicio |
# rc-update -v show
|
Es posible ejecutar también rc-update show (sin -v) simplemente
para ver los guiones de inicio activos y sus respectivos niveles de ejecución.
4.c. Configuración de servicios
¿Porqué requerimos configuración adicional?
Los guiones de inicio pueden ser bastante complejos, por lo cual no
es interesante que los usuarios modifiquen directamente el guión de
inicio, ya que esto puede ser propenso a errores. Sin embargo es
importante poder configurar estos servicios, en caso que se
quieren dar más opciones al servicio.
Una segunda razón para mantener esta información fuera del guión de
inicio es para poder actualizar estos guiones sin que los cambios de
configuración sean perdidos.
El directorio /etc/conf.d
Gentoo provee una manera fácil de configurar estos servicios: cada
guión de inicio configurable tiene un archivo dispuesto en
/etc/conf.d. Por ejemplo, el guión de inicio apache2
(llamado /etc/init.d/apache2) tiene un archivo de
configuración de nombre /etc/conf.d/apache2, el cual
contiene las opciones a pasar al servidor web Apache 2 en el momento
de inicio:
Listado de Código 3.1: Variables definidas en /etc/conf.d/apache2 |
APACHE2_OPTS="-D PHP5"
|
Este tipo de archivo de configuración contiene solamente variables
(como /etc/portage/make.conf), lo que facilita la
configuración de servicios. También nos permite suministrar
información adicional acerca de las variables (en forma de
comentarios).
4.d. Escribiendo guiones de inicio
¿Realmente tengo que hacerlo?
Realmente, no. Escribir un guión de inicio usualmente no hace falta,
ya que Gentoo provee guiones listos para usar para todos los
servicios suministrados. Sin embargo, puede haber instalado un
servicio sin usar Portage, en cuyo caso probablemente tenga que crear
un guión de inicio.
No use el guión de inicio suministrado por el servicio si no está
explícitamente escrito para Gentoo: los guiones de inicio de Gentoo ¡no
son compatibles con los de las demás distribuciones!
Disposición
La disposición básica de un guión de inicio se muestra a continuación.
Listado de Código 4.1: Disposición básica de un guión de inicio |
#!/sbin/runscript
depend() {
}
start() {
}
stop() {
}
|
Cualquier guión de inicio requiere la definición de la función
start(). Todas las demás son opcionales.
Dependencias
Hay dos dependencias que puede definir: use y need. Tal
como hemos mencionado anteriormente, la dependencia need es más
estricta que la dependencia use. Siguiendo este esquema, se
declaran los servicios que dependen de éste o la dependencia virtual.
Existen dos ajustes relacionados con las dependencias que puede definir
y que influyen en el arranque o secuenciación de los guiones de inicio:
use y need. Aparte de estas dos, existen también dos
métodos que influyen en el orden llamados: before y after.
Estos últimos no son dependencias en sí mismos, no provocan el fallo del
guión de inicio si el guión seleccionado no está programado para ser iniciado
(o falla al iniciar).
-
Los ajustes use informan al sistema de inicio que este guión
utiliza funcionalidad ofrecida por el guión seleccionado, sin
embargo no depende directamente de él. Un buen ejemplo sería
use logger o use dns. Si estos servicios están disponibles,
se usarán de forma correcta, pero aunque no tenga instalado un programa
de registro (logger) o servidor DNS, los servicios funcionarán de todos
modos. Si estos servicios están presentes en su sistema, entonces se
arrancarán antes del guión que los utiliza.
-
El ajuste need es una dependencia inevitable. Esto significa
que el guión que necesita otro guión, no podrá arrancar antes
de que el otro guión se arranque de forma correcta. Si el otro guión
es reiniciado, entonces el guión que depende de él será reiniciado
igualmente.
-
Cuando se utiliza before, el guión dado es arrancado antes del
guión seleccionado si el seleccionado forma parte del nivel
de inicio. Por lo tanto, si el guión de inicio xdm define
before alsasound, será arrancado antes que el guión
alsasound, pero solo si alsasound está
también programado para ser arrancado en el mismo nivel de inicio.
Si alsasound no está programado para arrancar, entonces
este ajuste en particular no tiene efecto y el guión xdm
será arrancado cuando el sistema de inicio lo juzgue apropiado.
-
De modo similar, after informa al sistema de inicio que el
guión dado debería ser arrancado antes que el seleccionado si el
guión seleccionado forma parte de nivel de inicio. En caso contrario,
el ajuste no tiene efecto y el guión será arrancado por el sistema
de inicio cuando éste lo juzgue apropiado.
Debería quedar claro una vez leida la parte de arriba, que need es
el único ajuste que define un "auténtica" dependencia ya que afecta al hecho
de que el guión sea arrancado o no. Las demás son simplemente apuntes al
sistema de inicio para clarificar el orden en el que los guiones deben
(o deberían ser arrancados).
Si echa un vistazo al muchos de los guiones de inicio disponibles en Gentoo,
observará que algunos tienen dependencias de objetos que no son guiones de
inicio. Estos "objetos" son los llamados virtuals (virtuales).
Una dependencia virtual es una suministrada por un servicio,
pero no solo por ese servicio. Su guión de inicio puede depender de un
gestor de registro de sistema, habiendo disponibilidad de varios
(metalogd, syslog-ng, sysklogd, ...). Como no se necesitan todos
(ningún sistema normal tiene todos estos gestores de registro instalados y
corriendo) nos aseguramos que todos estos servicios provean una
dependencia virtual.
Examinemos la información de dependencia del servicio postfix.
Listado de Código 4.2: Información de dependencias de postfix |
depend() {
need net
use logger dns
provide mta
}
|
Como podemos ver, el servicio postfix:
-
requiere la dependencia (virtual) net (suministrada por, en
este caso, /etc/init.d/net.eth0)
-
usa la dependencia (virtual) logger (suministrada por, en
este caso, /etc/init.d/syslog-ng)
-
usa la dependencia virtual (virtual) dns (suministrada por,
en este caso, /etc/init.d/named)
-
provee la dependencia (virtual) mta (común a todos los
servidores de correo electrónico)
Controlando el orden
Tal y como se ha descrito en la sección anterior, puede indicarle al sistema
de inicio qué orden debe seguir para arrancar (o parar) los guiones. Este
orden es manejado tanto por los ajustes de dependencia use y
need, como por los ajustes de orden before y after. Como
ya hemos descrito estos ajustes, echemos un vistazo al servicio Portmap como
ejemplo de guión de inicio.
Listado de Código 4.3: La función depend() en el servicio portmap |
depend() {
need net
before inetd
before xinetd
}
|
También puede usar el carácter que engloba "*" para todos los servicios,
aunque no es aconsejable.
Listado de Código 4.4: Ejecutando un guión de inicio como el primer guión del nivel de ejecución |
depend() {
before *
}
|
Si su servicio debe escribir a discos locales, debe necesitar
localmount. Si escribe algo en /var/run como un
archivo pid, entonces debería comenzar después de bootmisc:
Listado de Código 4.5: Función ejemplo de depend() |
depend() {
need localmount
after bootmisc
}
|
Funciones estándar
Junto con la función depend(), hará falta definir la función
start(), que contiene las órdenes necesarias para inicializar
su servicio. Es aconsejable usar las funciones ebegin y
eend para informarle al usuario acerca de lo que está
ocurriendo:
Listado de Código 4.6: Ejemplo de función start() |
start() {
if [ "${RC_CMD}" = "restart" ];
then
fi
ebegin "Starting my_service"
start-stop-daemon --start --exec /path/to/my_service \
--pidfile /path/to/my_pidfile
eend $?
}
|
Ambos --exec y --pidfile deben usarse en las funciones
start y stop. Si el servicio no crea un archivo pid, entonces use
--make-pidfile si es posible, aunque debe probar esto para
estar seguro. De otra manera, no use archivos pid. Puede también
agregar --quiet a las opciones al start-stop-daemon,
pero esto no es recomendado a no ser que el el servicio sea
extremadamente verboso. Usando --quiet puede interferir con la
depuración si el servicio no logra arrancar.
Otro ajuste notable usado en el ejemplo de arriba es la comprobación de
los contenidos de la variable RC_CMD. Al contrario que el sistema
de guiones de inicio anterior, el nuevo sistema openrc no soporta
funcionalidad de reinicio específica de los guiones. En lugar de esto,
el guión necesita comprobar el contenido de la variable RC_CMD
para var si una función (sea start() o stop()) se llama
como parte del reinicio o no.
Nota:
Asegúrese que --exec de hecho llame un servicio y no solamente
un guión que lanza un servicio y termina -- después de todo, eso es lo
que el guión de inicio está supuesto de hacer.
|
Si requiere más ejemplos de funciones start(), favor leer
directamente las fuentes de los guiones de inicio en su directorio
/etc/init.d.
Otra función que puede definir es stop(). Sin embargo, ¡No está
obligado a definir esta función! Nuestro sistema de inicio es lo
suficientemente inteligente para rellenar esta función por sí mismo si
utiliza start-stop-daemon.
A continuación se muestra un ejemplo de la función stop():
Listado de Código 4.7: Función stop() de ejemplo |
stop() {
ebegin "Stopping my_service"
start-stop-daemon --stop --exec /path/to/my_service \
--pidfile /path/to/my_pidfile
eend $?
}
|
Si su servicio corre otro guión (por ejemplo, bash, python o perl), y
este guión luego cambia algún nombre (por ejemplo, foo.py a
foo), entonces hará falta agregar --name al
start-stop-daemon. Debe especificar el nombre al cual cambiará
el guión. En este ejemplo, un servicio inicia foo.py, el cual
cambia de nombre a foo:
Listado de Código 4.8: Un servicio que inicia el guión foo |
start() {
ebegin "Starting my_script"
start-stop-daemon --start --exec /path/to/my_script \
--pidfile /path/to/my_pidfile --name foo
eend $?
}
|
El start-stop-daemon tiene una excelente página man si requiere
más información:
Listado de Código 4.9: Obteniendo la página man para el start-stop-daemon |
$ man start-stop-daemon
|
La sintaxis de los guiones de inicio de Gentoo está basada en el
intérprete de comandos POSIX, de manera que es libre de usar
construcciones compatibles con sh dentro del guión de inicio.
No utilice otras construcciones, por ejemplo las del tipo bash, en
los guiones de inicio para asegurarse de que los guiones funcionen
en el futuro incluso si se cambia el sistema de inicio de Gentoo.
Añadiendo opciones personalizadas
Si desea que su guión de inicio soporte un mayor número de opciones
de las que hemos encontrado hasta ahora, debe agregar la opción a la
variable extra_commands y crear una función con el mismo nombre
que la opción. Por ejemplo, para dar soporte a una opción llamada
restartdelay:
Listado de Código 4.10: Soporte para la opción restartdelay |
extra_commands="restartdelay"
restartdelay() {
stop
sleep 3
start
}
|
Importante:
¡La función restart() no puede ser sobreescrita en openrc!.
|
Variables para la configuración de servicios
No hay que hacer nada para soportar un archivo de configuración en
/etc/conf.d: si su guión de inicio se ejecuta, los
siguientes archivos serán automáticamente leídos (sourced) y las
variables estarán disponibles para usar.
- /etc/conf.d/<su guión de inicio>
- /etc/conf.d/basic
- /etc/rc.conf
También, si su guión de inicio provee una dependencia virtual (como
net), el archivo asociado a esa dependencia (el
/etc/conf.d/net) será leído también.
4.e. Cambiando el comportamiento del nivel de ejecución
¿Quién puede beneficiarse de esto?
Muchos usuarios de equipos portátiles conocen la situación: en casa necesita
iniciar net.eth0 mientras que puede no querer iniciar net.eth0
mientras está de viaja (cuando no hay una red disponible). Con Gentoo puede
modificar el comportamiento del nivel de ejecución para sus propios propósitos.
Por ejemplo puede crear un segundo nivel de ejecución "default" con el cual
puede arrancar y que utiliza otros guiones de inicio que le han sido asignados.
Puede seleccionar al arrancar que nivel de ejecución quiere utilizar.
Utilizando softlevel
Antes de nada, cree el directorio para su segundo nivel de ejecución "default".
Como ejemplo vamos a crear el nivel de ejecución offline:
Listado de Código 5.1: Creando el directorio para el nivel de ejecución |
# mkdir /etc/runlevels/offline
|
Añada los guiones de inicio necesarios para el nuevo nivel de ejecución.
Por ejemplo, si quiere una copia exacta de su actual "default" pero sin
net.eth0:
Listado de Código 5.2: Añadiendo los guiones de inicio necesarios |
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
# rc-update del net.eth0 offline
# rc-update show offline
acpid | offline
domainname | offline
local | offline
net.eth0 |
|
Incluso aunque se haya eliminado net.eth0 del nivel de ejecución
offline, puede que udev quiera intentar iniciar cualquier
dispositivo que detecte y lanzar los servicios apropiados, una funcionalidad
llamada hotplugging (enchufado en caliente). Por defecto Gentoo
no habilita esta funcionalidad.
Si quiere habilitar el hotplugging pero solo para un conjunto seleccionado
de guiones, utilice la variable rc_hotplug en
/etc/rc.conf:
Listado de Código 5.3: Deshabilitando los servicions iniciados por dispositivos en /etc/rc.conf |
rc_hotplug="net.wlan !net.*"
|
Nota:
Para más información sobre los servicios iniciados en función de dispositivos,
consulte los comentarios del archivo /etc/rc.conf.
|
Ahora edite la configuración de su gestor de arranca y añada una nueva
entrada para el nivel de ejecución offline. Por ejemplo, en
/boot/grub/grub.conf:
Listado de Código 5.4: Añadiendo una entrada para el nivel de ejecución offline |
title Gentoo Linux Offline Usage
root (hd0,0)
kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline
|
Listo, ha terminado de configurarlo. Si arranca su sistema y selecciona la
nueva entrada al inicio, el nivel de ejecución offline será el utilizado
en lugar del default.
Utilizando bootlevel
Utilizar bootlevel es completamente análogo a softlevel. La
única diferencia es que se define un segundo nivel de ejecución "boot" en lugar
de un segundo "default".
5. Variables de entorno
5.a. ¿Variables de Entorno?
¿Qué son?
Una variable de entorno es un objeto designado para contener información usada
por una o más aplicaciones. Algunos usuarios (especialmente aquellos nuevos
en Linux) encuentran esto un poco extraño o inmanejable. Sin embargo esto no
es cierto: usando variables de entorno hace que cualquiera pueda cambiar una
opción de configuración para una o más aplicaciones fácilmente.
Ejemplos Importantes
La siguiente tabla muestra un listado de variables de entorno usado por un
sistema Linux y describe su uso. Los valores de ejemplo se encuentran después
de la tabla.
| Variable |
Descripción |
| PATH |
Esta variable contiene una lista de directorios separados por ":" en la
cual el sistema buscará los archivos ejecutables. Al introducir el nombre
de un ejecutable (como ls, rc-update o emerge)
que no se encuentre en un de los directorios listados, el sistema no lo
encontrará, (a menos que se introduzca la ruta completa, por ejemplo:
/bin/ls).
|
| ROOTPATH |
Esta variable tiene la misma función que PATH, pero únicamente
contiene los directorios que el sistema debe revisar cuando el usuario
root introduce una orden.
|
| LDPATH |
Esta variable contiene una lista de directorios separados por ":" en la
cual el enlazador dinámico busca para encontrar una librería.
|
| MANPATH |
Esta variable contiene una lista de directorios separados por ":" en
los cuales la orden man buscará las páginas de manual.
|
| INFODIR |
Esta variable contiene una lista de directorios separados por ":" en
la cual la orden info buscará las páginas info.
|
| PAGER |
Esta variable contiene la ruta hacia el programa utilizado para mostrar el
contenido de los ficheros (como less o more).
|
| EDITOR |
Esta variable contiene la ruta hacia el programa utilizado para modificar el
contenido de los archivos (como nano o vi).
|
| KDEDIRS |
Esta variable contiene una lista de directorios separados por ":"
los cuales contienen material específico de KDE.
|
| CONFIG_PROTECT |
Esta variable una lista de directorios separados por espacio los
cuales deben ser protegidos por Portage durante las actualizaciones.
|
| CONFIG_PROTECT_MASK | Esta variable una lista de directorios
separados por espacio los cuales no deben ser protegidos por Portage
durante las actualizaciones.
|
A continuación puedes encontrar ejemplos de definiciones para todas estas
variables:
Listado de Código 1.1: Definiciones de ejemplo |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
|
5.b. Definiendo variables globalmente
El directorio /etc/env.d
Para centralizar la definición de estas variables, Gentoo introduce el
directorio /etc/env.d. Dentro de este directorio se encuentran
varios ficheros como por ejemplo 00basic, 05gcc,
etc. los cuales contienen las variables necesarias para la aplicación de la
cual llevan el nombre.
Por ejemplo, al instalar gcc, un fichero llamado 05gcc
que contiene la definición de las siguientes variables, fue creado por
el ebuild:
Listado de Código 2.1: /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
Otras distribuciones le piden modificar o añadir definiciones de variables
de entorno semejantes en /etc/profile o en otros sitios. Por
otro lado, Gentoo nos hace (y a Portage) más fácil mantener y manejar las
variables de entorno sin tener que prestar atención a los numerosos ficheros
que pueden contenerlas.
Por ejemplo, cuando gcc es actualizado, también es actualizado
el fichero /etc/env.d/05gcc sin ser necesaria ninguna interacción
por parte del usuario.
Esto no solo beneficia a Portage, sino también al usuario. En ocasiones se
podrá pedir establecer cierta variable de entorno para todo el sistema. Como
ejemplo, tomamos la variable http_proxy. En lugar de perder el tiempo
con /etc/profile, puedes crear el fichero
(/etc/env.d/99local) y introducir la(s) definición(es) en él:
Listado de Código 2.2: /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
Usando el mismo fichero para todas las variables, se obtiene una visión rápida
de las variables que definidas por uno mismo.
El guión env-update
Varios archivos de /etc/env.d definen la variable PATH.
esto no es un error: cuando ejecute env-update, este concatenará las
múltiples definiciones antes de actualizar las variables de entorno, haciendo
más fácil a los paquetes (o usuarios) añadir sus propias opciones en las
variables de entorno sin interferir con los valores ya existentes.
El guión env-update concatenará los valores alfabéticamente ordenados
por el nombre de los ficheros de /etc/env.d. Los nombres de
fichero deben comenzar con dos dígitos decimales.
Listado de Código 2.3: Update order used by env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
La concatenación de variables no siempre funciona, solo con las siguientes
variables: ADA_INCLUDE_PATH, ADA_OBJECTS_PATH,
CLASSPATH, KDEDIRS, PATH, LDPATH,
MANPATH, INFODIR, INFOPATH, ROOTPATH,
CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH,
PRELINK_PATH_MASK, PKG_CONFIG_PATH y PYTHONPATH.
Para el resto de variables, se utiliza el último valor definido
(en orden alfabético de ficheros en /etc/env.d).
Puede incluir más variables en esta lista de variables concatenadas
añadiendo el nombre de la variable a la variable COLON_SEPARATED
o a la variable SPACE_SEPARATED (definidas también en el fichero
env.d).
Cuando ejecute env-update, el guión creará todas las variables de
entorno y las colocará en /etc/profile.env (el cual es usado por
/etc/profile). Además, también extraerá la información de la
variable LDPATH y la usará para crear /etc/ld.so.conf.
Después de esto, ejecutará ldconfig para recrear el archivo usado por el
enlazador dinámico: /etc/ld.so.cache.
Si quiere observar el efecto de env-update inmediatamente después de
ejecutarlo, ejecute la siguiente orden para actualizar su entorno.
Posiblemente, los usuarios que instalaron Gentoo ellos mismos, recordarán
estas instrucciones de la instalación:
Listado de Código 2.4: Actualizar el entorno |
# env-update && source /etc/profile
|
Nota:
La orden anterior actualiza únicamente las variables en la terminal actual,
en las nuevas consolas y sus hijas. Sabiendo esto, si se está
trabajando en X11, necesitará ejecutar source /etc/profile en las
nuevas terminales que abra o reiniciar las X para que las nuevas terminales
definan las nuevas variables. Si está utilizando un gestor de inicio,
conviértase en root y ejecute /etc/init.d/xdm restart. En caso
contrario, necesitará salir de la sesión y volver a entrar para que las X
generen hijos con las nuevas variables.
|
Importante:
No se pueden utilizar las variables del terminal para definir otras variables.
Esto implica que cosas como FOO="$BAR" (donde $BAR es otra
variable) están prohibidas.
|
5.c. Definiendo variables locales
Específicas de usuario
No siempre queremos definir variables de entorno globales. Por ejemplo,
podríamos querer añadir /home/my_user/bin y el directorio de
trabajo actual (en el cual nos encontramos), a la variable PATH,
pero no queremos que todos los usuarios de nuestro sistema lo tengan en su
PATH. Si queremos definir una variable localmente, debemos usar
~/.bashrc o ~/.bash_profile:
Listado de Código 3.1: Ampliar el PATH para uso local en: ~/.bashrc |
PATH="${PATH}:/home/my_user/bin:"
|
Cuando vuelva a iniciar la sesión, su variable PATH será actualizada.
Específicas de sesión
En ocasiones, se requieren definiciones aún más estrictas. Puede querer usar
binarios de un directorio temporal que ha creado sin tener que usar la
trayectoria completa a los binarios o sin editar ~/.bashrc. Para
estos momentos necesitará esto.
En este caso, puede definir la variable PATH en su sesión activa
usando la orden export. Mientras no cierre la sesión, la variable
PATH usará los valores temporales.
Listado de Código 3.2: Definir una variable específica a la sesión |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
C. Trabajar con Portage
1. Archivos y directorios
1.a. Ficheros de Portage
Directivas de configuración
Portage viene con una configuración predefinida guardada en
/etc/make.globals. Cuando le eche un vistazo, comprobará
que toda la configuración de Portage se realiza a través de
variables. A qué variables atiende Portage y que significan se
describe un poco después.
Como muchas directivas de configuración varían de unas arquitecturas a
otras, Portage también posee algunos archivos de configuración que son
parte de perfil. Su perfil está apuntado por el enlace simbólico
/etc/portage/make.profile; las configuraciones de Portage
se realizan en los archivos make.defaults de su perfil y
de todos los perfiles padres. Explicaremos algo más sobre perfiles y
el directorio /etc/portage/make.profile más adelante.
Si está pensando en cambiar una variable de configuración, no
modifique /etc/make.globals o make.defaults.
En lugar de eso utilice /etc/portage/make.conf el cual
tiene preferencia sobre los archivos anteriores. También encontrará
usr/share/portage/config/make.conf.example.
Como su propio nombre indica, este archivo es meramente un ejemplo y
Portage no lo utilizará con ningún propósito.
También puede definir una variable de configuración para Portage como
una variable de entorno, pero no es recomendable.
Información específica del perfil
Ya hemos hablado del directorio /etc/portage/make.profile.
Bien, exactamente no es un directorio pero es un enlace simbólico a un
perfil, por defecto uno perteneciente a
/usr/portage/profiles también puede crear un perfil en
cualquier otro lado y apuntarlo. El perfil al cual apunta el enlace
simbólico será el que tenga en cuenta su sistema.
Un perfil contiene información específica para Portage sobre cada
arquitectura, tal como una lista de paquetes que pertenecen al sistema
correspondiente con ese perfil, una lista de paquetes que no funcionan
(o están enmascarados) para ese perfil, etc.
Configuración específica para usuarios
Cuando necesite sobreescribir una característica de Portage relativa a
la instalación de software, necesitará editar los archivos contenidos
en /etc/portage.¡ Se recomienda encarecidamente
que utilice los archivos pertenecientes a /etc/portage y
está desaconsejada la sobreescritura de estas características
con variables de entorno.!
Dentro de /etc/portage puede crear los siguientes
archivos:
-
package.mask el cual especifica los paquetes que
nunca quiere que Portage instale en su sistema.
-
package.unmask especifica los paquetes que quiere
instalar a pesar de haber sido desaconsejados por los
desarrolladores.
-
package.accept_keywords especifica los paquetes que quiere
instalar a pesar de no haber sido considerados adecuados para su
sistema o arquitectura (todavía).
-
package.use especifica la lista de variables USE que
quiere utilizar para unos determinados paquetes sin tener que
configurar el sistema por completo para que use esas variables
USE.
Estos no tienen que ser archivos; también pueden ser directorios que
contengan un archivo por paquete. Podemos obtener más información
acerca del directorio /etc/portage y una lista de
archivos que pueden crearse allí en la página man de Portage.
Listado de Código 1.1: Leyendo la página del manual sobre Portage |
$ man portage
|
Cambiando el fichero de Portage y el lugar del directorio
Los archivos de configuración mencionados anteriormente no pueden ser
guardados en ningún otro sitio, Portage siempre los buscará en esos
lugares exactos. Sin embargo, Portage utiliza otras muchos lugares
para varios propósitos: el directorio de compilación, el lugar donde
guardar el código fuente, la localización del árbol de Portage, ...
Todos estos propósitos tienen unas direcciones predeterminadas muy
claras pero puede cambiarlas por las que más le gusten indicándolo
en /etc/portage/make.conf. El resto de este capítulo
explica los lugares destinados a un propósito especial que utiliza
Portage y como puede ser modificado su emplazamiento en el sistema
de ficheros.
Este documento no pretende ser utilizado como referencia. Si necesita
una cobertura 100%, por favor consulte las páginas del man relativas a
Portage y make.conf:
Listado de Código 1.2: Leyendo las páginas del manual sobre Portage y make.conf |
$ man portage
$ man make.conf
|
1.b. Guardando ficheros
El árbol Portage
La ubicación predeterminada del árbol de Portage es
/usr/portage. Esta definida por la variable
PORTDIR. Cuando guarde el árbol de Portage en cualquier otro lugar
(modificando esta variable), no olvide cambiar el enlace simbólico
/etc/portage/make.profile de acuerdo con su cambio.
Si modifica la variable PORTDIR, seguramente quiera cambiar las
siguientes variables ya que no tienen constancia del cambio de
PORTDIR. Esto es debido a cómo Portage maneja las variables: PKGDIR,
DISTDIR, RPMDIR.
Binarios Pre-compilados
Aunque Portage no utilice binarios pre-compilados por defecto, tiene
un buen soporte para ellos. Cuando a Portage se le indica que trabaje
con paquetes pre-compilados, los buscará en
/usr/portage/packages. Esta ubicación está definida por
la variable PKGDIR.
Código Fuente
El código fuente de las aplicaciones se guarda por defecto en
/usr/portage/distfiles. Esta ubicación viene definida por
la variable DISTDIR.
Base de datos de Portage
Portage guarda el estado del sistema (que paquetes están instalados,
qué archivos pertenecen a cada paquete, ...) en
/var/db/pkg. ¡No se deben modificar estos
archivos manualmente! Podría romper el conocimiento que tiene Portage
sobre el sistema.
Caché de Portage
La caché de Portage (con modificaciones temporales, paquetes
virtuales, árbol de dependencias, ...) se guarda en
/var/cache/edb. Esta ubicación es una verdadera caché: se
puede limpiar si no se está ejecutando ninguna aplicación que tenga
relación con Portage en este momento.
1.c. Compilando aplicaciones
Ficheros temporales de Portage
Los ficheros temporales de portage se guardan por defecto en
/var/tmp. Esta ubicación se define en la variable
PORTAGE_TMPDIR.
Si modifica la variable PORTAGE_TMPDIR, necesitará cambiar las
siguientes variables ya que no tendrán constancia del cambio. Esto es
debido a cómo Portage maneja la variable: BUILD_PREFIX.
Directorio de compilación
Portage crea directorios de compilación específicos para cada paquete
que se emerge dentro de /var/tmp/portage. Esta ubicación
viene definida por la variable BUILD_PREFIX.
Ubicación del sistema de ficheros
Por defecto, Portage instala todas los archivos en el sistema de
ficheros activo (/), pero puede cambiarse esta
configuración a través de la variable de entorno ROOT. Esto es útil
cuando quiera crear nuevas imágenes compiladas.
1.d. Características de registro de acciones (log)
Registro de acciones de Ebuilds
Portage puede crear un registro por ebuild, pero solamente cuando la
variable PORT_LOGDIR esté configurada y apuntando a una dirección con
permisos de escritura para Portage (usuario Portage). De manera
predeterminada está variable está desactivada. Si no configura
PORT_LOGDIR no recibirá los registros con el sistema de registro
actual, aunque tal vez reciba algún registro del nuevo elog. Si
no tiene definido PORT_LOGDIR y usa elog, recibirá los registros de
construcción de paquetes y cualquier otro registro salvado por elog,
como se explica a continuación.
Portage ofrece un control de grano fino sobre el registro de sistema
mediante el uso de elog:
-
PORTAGE_ELOG_CLASSES: Es donde se define cuáles mensajes serán
registrados. Puede utilizarse cualquier cualquier combinación
separada por espacios en blanco de info, warn,
error, log and qa.
-
info: Registra los mensajes "einfo" generados por un
ebuild
-
warn: Registra los mensajes "ewarn" generados por un
ebuild
-
error: Registra los mensajes "eerror" generados por un
ebuild
-
log: Registra los mensajes "elog" encontrados en
algunos ebuilds
-
qa:: Registra los mensajes del tipo "QA Notice"
mostrados por un ebuild.
-
PORTAGE_ELOG_SYSTEM: Selecciona el (los) módulos para procesar los
mensajes de registro. Si se deja sin definir, se desactiva la
función de registro. Puede usar cualquier combinación separada por
espacios en blanco de save, custom, syslog ,
mail, save_summary y mail_summary. Debe
seleccionar al menos un módulo para poder usar elog.
-
save: Almacena un registro por paquete en
$PORT_LOGDIR/elog, o
/var/log/portage/elog si $PORT_LOGDIR no está
definido.
-
custom: Pasa todos los mensajes a una orden definida
por el usuario en $PORTAGE_ELOG_COMMAND; esto se discutirá más
adelante.
-
syslog: Envía todos los mensajes al gestor de registro
de sistema instalado.
-
mail: Pasa todos los mensaje a un servidor de correo
definido por el usuario en $PORTAGE_ELOG_MAILURI; esto se
discutirá más adelante. Las características de correo de elog
requieren >=portage-2.1.1.
-
save_summary: parecido a save, pero fusionando
todos los mensajes en
$PORT_LOGDIR/elog/summary.log, o
/var/log/portage/elog/summary.log si $PORT_LOGDIR
fue definido.
-
mail_summary: parecido a mail, pero envía todos
los mensajes en un solo mensaje de correo cuando emerge
finaliza.
-
PORTAGE_ELOG_COMMAND: Esto solamente se usa al activarse el
módulo custom. Aquí podemos especificar una orden con
la cual se procesarán los mensajes de registro. Observe que
puede hacer uso de dos variables de entorno: ${PACKAGE} es el
nombre del paquete y la versión, mientras que ${LOGFILE} es la
ruta absoluta del archivo de registro. A continuación se muestra
un posible uso:
-
PORTAGE_ELOG_COMMAND="/trayectoria/al/gestor -p '\${PACKAGE}'
-f '\${LOGFILE}'"
-
PORTAGE_ELOG_MAILURI: Contiene la configuración del módulo
mail, tal como dirección, usuario, contraseña, servidor de
correo y número de puerto. Por defecto está configurado a
"root@localhost localhost".
-
Aquí presentamos un ejemplo para un servidor smtp que requiere
autenticación con nombre de usuario y contraseña en un puerto en
particular (el puerto por defecto es el 25):
-
PORTAGE_ELOG_MAILURI="user@some.domain
username:password@smtp.some.domain:995"
-
PORTAGE_ELOG_MAILFROM: Permite configurar la dirección "from" de
los correos de registro; su valor por defecto es "portage".
-
PORTAGE_ELOG_MAILSUBJECT: Permite la creación de una línea de
asunto para los correos de registro. Note que puede hacer uso de
dos variables de entorno: ${PACKAGE} mostrará el nombre y la
versión del paquete, mientras que ${HOST} es el nombre del dominio
completo del anfitrión donde está corriendo Portage.
-
Aquí está un posible uso:
-
PORTAGE_ELOG_MAILSUBJECT="El paquete \${PACKAGE} fue instalado
en \${HOST} con algunos mensajes"
Importante:
Si ha usado enotice con Portage-2.0.*, elimine enotice, ya que
es incompatible con elog.
|
2. Configuración por medio de variables
2.a. Configuración del sistema Portage
Como hemos acotado previamente, Portage es configurable a través de
múltiples variables de entorno que se deben definir en
/etc/portage/make.conf. Por favor, consulte la página
man de make.conf para una información más completa:
Listado de Código 1.1: Lectura de la página man de make.conf |
$ man make.conf
|
2.b. Opciones al momento de construcción
Opciones de configuración y del compilador
Cuando Portage construye las aplicaciones, pasa el contenido de las
siguientes variables al guión de compilación y configuración:
-
CFLAGS & CXXFLAGS define los parámetros deseados para la
compilación de fuentes en C y C++.
-
CHOST define la plataforma correspondiente a la máquina en la que
se construye para el guión de configuración
-
MAKEOPTS se pasa a la orden make para definir el grado de
paralelismo al compilar. Para más información acerca de sus
opciones, vea la página man de make.
El parámetro USE también se usa al configurar y compilar, pero éste ha
sido explicado ampliamente en capítulos previos.
Opciones al integrar
Cuando Portage integra una versión más nueva de algún paquete de
software, también eliminará los archivos obsoletos de la versión
anterior del sistema. Portage otorga un tiempo de gracia de 5 segundos
al usuario antes de llevar esta tarea a cabo. Este tiempo se define
por medio de la variable CLEAN_DELAY.
Puede decirle a emerge que use ciertas opciones cada vez que
sea ejecutado configurando la variable EMERGE_DEFAULT_OPTS. algunas
opciones útiles podrían ser --ask, --verbose, --tree, etc.
2.c. Protección de los archivos de configuración
Ubicaciones protegidas por Portage
Portage sobreescribe los archivos provistos por versiones más nuevas
de un paquete si estos no estan almacenados en un lugar
protegido. Estos lugares protegidos se definen con la
variable CONFIG_PROTECT y generalmente corresponden a rutas de archivos
de configuración. Este listado de directorios es delimitado con espacios en
blanco.
Los archivos de configuración nuevos que se escriban en rutas protegidas
lo serán con un nombre modificado y el usuario será advertido acerca de
su presencia.
Puede averiguar qué lugares están protegidos en la variable
CONFIG_PROTECT con la salida de la orden emerge --info:
Listado de Código 3.1: Obtener información acerca del contenido de CONFIG_PROTECT |
$ emerge --info | grep 'CONFIG_PROTECT='
|
Más información acerca de la protección de archivos de configuración
por Portage está disponible en la sección de archivos de configuración
(CONFIGURATION FILES) de la página man de emerge:
Listado de Código 3.2: Más información acerca de la protección de archivos de configuración |
$ man emerge
|
Exclusión de directorios
Para 'desproteger' ciertos subdirectorios en directorios protegidos,
use la variable CONFIG_PROTECT_MASK.
7.d. Opciones de descarga
Ubicaciones de servidores
Cuando la información o datos no están disponibles en su sistema,
Portage los descargará de la Internet. Las ubicaciones de los
servidores para los canales de información y datos se definen mediante
los siguientes variables:
-
GENTOO_MIRRORS define una lista de servidores que contienen código
fuente (distfiles)
-
PORTAGE_BINHOST define un servidor en particular que contiene
paquetes pre-compilados para su sistema
Un tercer parámetro involucra la ubicación del servidor rsync
utilizado al actualizar el árbol Portage:
-
SYNC define un servidor en particular a ser utilizado por Portage
para descargar el árbol
Las variables GENTOO_MIRRORS y SYNC pueden ser configurados
automáticamente a través de la aplicación mirrorselect. Debe
hacer emerge mirrorselect primero, antes de usarla. Para más
información, vea la ayuda de mirrorselect en línea:
Listado de Código 4.1: Más información acerca de mirrorselect |
# mirrorselect --help
|
Si su entorno requiere el uso de un servidor proxy, configure las
variables http_proxy, ftp_proxy y RSYNC_PROXY para declararlos.
Órdenes para descargar
Cuando Portage requiera descargar fuentes, utiliza por defecto la
orden wget. Puede cambiar esto usando la variable
FETCHCOMMAND.
Portage puede continuar una descarga hecha en forma parcial. Usa
wget por defecto, pero puede cambiarlo usando la variable
RESUMECOMMAND.
Asegúrese que sus FETCHCOMMAND y RESUMECOMMAND guarde las fuentes en
la ubicación correcta. Al definir las variables debe usar \${URI} y
\${DISTDIR} para apuntar a la ubicación de las fuentes y la ubicación
del directorio distfiles respectivamente.
Puede definir manejadores específicos por protocolo con
FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, etc.
Configuración de rsync
Aunque no se puede alterar la orden rsync usada para actualizar el
árbol Portage, podrá configurar algunas de las variables para
modificar su comportamiento:
-
PORTAGE_RSYNC_OPTS configura un número de variables por defecto
usadas durante la sincronización, separado por espacios en
blanco. Estos no deberían ser cambiados a no ser que sepa
exactamente lo que está haciendo. Note que ciertas opciones
requeridas con obligatoriedad serán siempre usadas aunque
PORTAGE_RSYNC_OPTS no tenga valor asignado.
-
PORTAGE_RSYNC_EXTRA_OPTS puede ser usado para configurar opciones
adicionales al sincronizar. Cada opción deberá ser separada con un
espacio en blanco.
-
--timeout=<number>: define la cantidad de segundos que
una conexión rsync puede permanecer sin que caduque. Esta
variable tiene un valor por defecto 180, pero los usuarios con
conexiones dialup o individuos con computadoras lentas podrían
aumentar a 300 o más.
-
--exclude-from=/etc/portage/rsync_excludes: Esto apunta a un
archivo que lista los paquetes y/o categorías que rsync debe
ignorar durante el proceso de actualización. En este caso,
apunta a /etc/portage/rsync_excludes. Por favor
lea Utilizando un subconjunto
del árbol Portage para la sintaxis de este archivo.
- --quiet: Reduces output to the screen
- --verbose: Prints a complete filelist
- --progress: Displays a progress meter for each file
-
PORTAGE_RSYNC_RETRIES defines how many times rsync should try
connecting to the mirror pointed to by the SYNC variable before
bailing out. This variable defaults to 3.
For more information on these options and others, please read man
rsync.
2.e. Configuración de Gentoo
Selección de rama
Puede escoger su rama por defecto a través de la variable
ACCEPT_KEYWORDS. El valor por defecto es la rama estable de su
plataforma. Para más información acerca de las ramas de Gentoo, vea el
capítulo siguiente.
Características de Portage
Puede activar ciertas características de Portage por medio de la
variable FEATURES. Estas han sido discutidas en capítulos previos, por
ejemplo Características de Portage.
2.f. Comportamiento de Portage
Manejo de recursos
Con la variable PORTAGE_NICENESS, puede aumentar o reducir el valor
"nice" con el que ejecuta Portage. El valor de la variable
PORTAGE_NICENESS se suma al valor "nice" actual.
Para más información acerca de valores "nice", vea la página man de nice:
Listado de Código 6.1: Más información acerca de nice |
$ man nice
|
Comportamiento de la salida
El valor de NOCOLOR, que por defecto es "falso", define si Portage
desactiva el uso de los colores en su salida.
3. Mezcla de ramales de software
3.a. Utilizando una sola rama
La rama estable
La variable ACCEPT_KEYWORDS define que rama de programas va a utilizar
en su sistema. Como predeterminada figura la rama estable para su
arquitectura, por ejemplo x86.
Recomendamos que solamente utilice la rama estable. Sin embargo si no
le importa demasiado la estabilidad y quiere ayudar a Gentoo a través
del envío de informes de error a http://bugs.gentoo.org,
siga leyendo.
La rama de pruebas
Si quiere utilizar los programas más recientes, puede considerar
utilizar la rama de pruebas. Para que Portage utilice la rama de
pruebas, añada un ~ delante de su arquitectura.
La rama de pruebas es exactamente para eso - pruebas. Si un
paquete se encuentra en pruebas, eso significa que los desarrolladores
creen que funciona, pero no ha sido probado concienzudamente. Podría,
perfectamente, ser el primero en descubrir un error en el paquete, en
cuyo caso puede rellenar un informe para ponerlo en
conocimiento de los desarrolladores.
Aunque se debe tener cuidado, se pueden experimentar problemas de
estabilidad, gestión del paquete imperfecta (por ejemplo dependencias
erróneas), actualizaciones demasiado frecuentes (que dan cómo
resultado múltiples compilaciones) o paquetes que no funcionan. Si no
se conoce cómo funciona Gentoo y como resolver los problemas,
recomendamos que se quede con la rama probada y estable.
Por ejemplo, para seleccionar la rama de pruebas en una arquitectura
x86, edite /etc/portage/make.conf y escriba:
Listado de Código 1.1: Configurar la variables ACCEPT_KEYWORDS |
ACCEPT_KEYWORDS="~x86"
|
Si actualiza su sistema ahora, encontrará que muchos paquetes
serán actualizados. Tenga cuidado ya que: cuando haya actualizado su
sistema para emplear la rama inestable, normalmente no hay una manera
sencilla de volver a la rama estable (excepto mediante el empleo de
copias de seguridad, claro).
3.b. Mezclando ramales estable con pruebas
La ubicación package.accept_keywords
Puede pedirle a Portage que le permita utilizar la rama de pruebas
para algunos paquetes pero seguir utilizando la rama estable en el
resto del sistema. Para realizar esto, añada la categoría del paquete
y el nombre si quiere utilizar la rama de pruebas al fichero
/etc/portage/package.accept_keywords. Además podría crear un
directorio (con este mismo nombre) y situar allí el paquete en un
fichero. Por ejemplo, para utilizar la rama de pruebas con
gnumeric:
Listado de Código 2.1: Configurar /etc/portage/package.accept_keywords para gnumeric |
app-office/gnumeric
|
Probando versiones específicas
Si quiere utilizar una versión específica de algún paquete de la rama
de pruebas pero no quiere que portage utiliza esa rama de pruebas para
las siguientes versiones, puede añadir la versión a
package.accept_keywords. En este caso se debe utilizar el
operador =. También puede introducir un rango de versiones con los
operadores <=, <, > or >= .
En cualquier caso, si añade información sobre una versión, debe
utilizar un operador. Si lo deja sin información sobre la versión, no
puede emplear un operador.
En el siguiente ejemplo indicamos a Portage que acepte
gnumeric-1.2.13:
Listado de Código 2.2: Utilizar una versión específica de gnumeric |
=app-office/gnumeric-1.2.13
|
3.c. Empleo de paquetes enmascarados
La ubicación package.unmask
Importante:
Los desarrolladores de Gentoo no darán soporte al empleo de
estos archivos. Por favor, tenga cuidado cuando haga esto. Las
peticiones de soporte relacionadas con package.unmask y/o
package.mask no serán respondidas. Considérese advertido.
|
Cuando un paquete ha sido enmascarado por los desarrolladores de
Gentoo y aún así desea utilizarlo a pesar de la razón que se menciona
en el fichero package.mask (situado por defecto en
/usr/portage/profiles), añada la versión deseada
(normalmente será exactamente la misma línea de
profiles) en el fichero
/etc/portage/package.unmask (o en un archivo dentro
de ese directorio, si es que es un directorio).
Por ejemplo, si =net-mail/hotwayd-0.8 está enmascarado, puede
desenmascararlo añadiendo exactamente la misma línea en
package.unmask:
Listado de Código 3.1: /etc/portage/package.unmask |
=net-mail/hotwayd-0.8
|
Nota:
Si una entrada en /usr/portage/profiles/package.mask
contiene un rango de versiones de paquete, necesitará desenmascarar
únicamente la versión o versiones que realmente necesita. Por favor,
lea la sección previa para aprender
cómo especificar versiones en package.unmask.
|
La ubicación package.mask
Cuando no quiera que Portage instale un paquete en concreto o una
versión específica de un paquete en su sistema, puede enmascararlo
simplemente añadiendo la línea apropiada a
/etc/portage/package.mask (tanto si es un fichero como si
es un directorio y se hace en un fichero dentro de él).
Por ejemplo, si no quiere que Portage instale otras fuentes del núcleo
que no sean gentoo-sources-2.6.8.1, añada la siguiente línea a
package.mask:
Listado de Código 3.2: ejemplo de /etc/portage/package.mask |
>sys-kernel/gentoo-sources-2.6.8.1
|
4. Herramientas adicionales de portage
4.a. dispatch-conf
dispatch-conf es una herramienta diseñada para combinar los archivos
._cfg0000_<name>. Los archivos
._cfg0000_<name> son generados por Portage cuando intenta
sobreescribir un archivo en un directorio protegido por la variable
CONFIG_PROTECT.
Empleando dispatch-conf, se puede actualizar la configuración
mientras se registran todos los cambios realizados. dispatch-conf guarda
las diferencias entre las distintas configuraciones como parches utilizando
el sistema de control de versiones RCS. Esto implica que, si se comete un error
en la actualización de un archivo de configuración, se puede regresar a la
versión anterior del archivo en cualquier momento.
Cuando se utiliza dispatch-conf, se le puede indicar que deje el
archivo de configuración tal cual, que utilice la nueva configuración, que
permita editar la configuración actual o que combine los cambios
interactivamente. dispatch-conf además dispone de algunas
funcionalidades adicionales:
-
Automáticamente actualizar el fichero de configuración si las
actualizaciones solamente afectan a comentarios
-
Automáticamente actualizar los ficheros de configuración que sólo difieren
en la cantidad de espacios en blanco.
Hay que asegurarse de primero editar /etc/dispatch-conf.conf y
crear el directorio al que hace referencia la variable archive-dir.
Listado de Código 1.1: Ejecutar dispatch-conf |
# dispatch-conf
|
Cuando se ejecuta dispatch-conf, se procesan todos los ficheros de
configuración que cambian, uno por uno. Pulse u para actualizar
(reemplazar) el fichero actual por el nuevo y continuar con el siguiente.
Pulse z para omitir (borrar) el nuevo fichero de configuración y
continuar con el siguiente. Una vez que se hayan procesado todos los ficheros
, dispatch-conf terminará. También se puede pulsar q en
cualquier momento.
Para más información, consulte la página del manual de dispatch-conf.
Allí se detalla como combinar interactivamente los de configuración
actuales y los nuevos, editar nuevos archivos de configuración,
comprobar las diferencias entre archivos y mucho más.
Listado de Código 1.2: Consultar la página del manual de dispatch-conf |
$ man dispatch-conf
|
4.b. etc-update
También se puede utilizar etc-update para instalar los ficheros
de configuración. No es tan simple como dispatch-conf, ni dispone
de tantas funcionalidades, pero proporciona un método de combinación
interactivo y también puede realizar actualizaciones triviales de
manera automática.
Sin embargo, al contrario que dispatch-conf, etc-update
no conserva las versiones antiguas de los archivos de configuración.
Una vez se ha actualizado el fichero, la versión anterior se habrá eliminado
de manera permanente. Ha de ser cuidadoso, ya que utilizar etc-update
es sensiblemente menos seguro que dispatch-conf.
Listado de Código 2.1: Ejecutar etc-update |
# etc-update
|
Después de combinar los cambios sencillos, se presentará una lista con
los ficheros protegidos que tienen una actualización pendiente. Al final
se muestran las opciones posibles:
Listado de Código 2.2: etc-update options |
Por favor, seleccione el fichero a editar introduciendo el número correspondiente.
(-1 para salir) (-3 para auto-combinar todos los ficheros restantes)
(-5 para auto-combinar SIN usar 'mv -i'):
|
Si se indica -1, etc-update terminará y no continuará con el
resto. Si se introduce -3 o -5, todos los ficheros de
configuración listados serán sobreescritos con las nuevas versiones. Por
tanto es muy importante seleccionar primero los ficheros de configuración
que no deben ser automáticamente actualizados. Esto se consigue simplemente
indicando el número que aparece a la izquierda del fichero de configuración.
Como ejemplo, seleccionamos el fichero de configuración
/etc/pear.conf:
Listado de Código 2.3: Actualizar un fichero de configuración concreto |
Comienzo de diferencias entre /etc/pear.conf y /etc/._cfg0000_pear.conf
Fin de diferencias entre /etc/pear.conf y /etc/._cfg0000_pear.conf
1) Reemplazar el original con la actualización
2) Borrar la actualización, manteniendo el original inalterado
3) Combinar interactivamente el original y la actualización
4) Mostrar de nuevo las diferencias
|
Ahora puede ver las diferencias entre los dos ficheros. Si cree que el
fichero de configuración actualizado puede ser utilizado sin problemas,
indique 1. Si cree que el fichero de configuración actualizado no
es necesario, o no proporciona ninguna información nueva o útil, indique
2. Si quiere actualizar su fichero de configuración actual de forma
interactiva, introduzca 3.
Por ahora, no tiene sentido profundizar más sobre la actualización
interactiva. Para completarlo, listaremos los comandos que están
disponibles durante la combinación interactiva de ambos ficheros. Son
mostradas dos líneas (la original, y la nueva propuesta) y un punto
indicativo en el cual puede introducir uno de los comandos
siguientes:
Listado de Código 2.4: Comandos disponibles en la combinación interactiva |
ed: Editar usando ambas versiones, cada una decorada con una cabecera.
eb: Editar usando ambas versiones.
el: Editar usando la versión de la izquierda.
er: Editar usando la versión de la derecha.
e: Editar una nueva versión.
l: Usar la versión de la izquierda.
r: Usar la versión de la derecha.
s: Incluir las líneas comunes sin comentarios.
v: Incluir las líneas comunes con comentarios.
q: Salir.
|
Cuando haya acabado de actualizar los ficheros de configuración importantes,
puede actualizar automáticamente el resto. etc-update acabará si no
encuentra más ficheros de configuración para actualizar.
4.c. quickpkg
Con quickpkg se pueden crear archivos de paquetes que ya han sido
instalados en el sistema. Estos archivos pueden usarse como paquetes
precompilados. Ejecutar quickpkg es sencillo: basta añadir los
nombres de los paquetes que se quiere archivar.
Por ejemplo, para archivar curl, orage y procps:
Listado de Código 3.1: Ejemplo de uso de quickpkg |
# quickpkg curl orage procps
|
Los paquetes precompilados se almacenarán en $PKGDIR
(por defecto /usr/portage/packages/). Los paquetes
serán ubicados en $PKGDIR/<category>.
5. Divergir del árbol oficial
3.a. Utilizando un subconjunto del árbol Portage
Excluyendo categorías/paquetes
Puede realizar una actualización selectiva de ciertas
categorías/paquetes e ignorar el resto. Esto se realiza indicando
a rsync que excluya categorías/paquetes durante el
proceso emerge --sync.
Necesita definir el nombre del fichero que contiene los patrones
de exclusión en la variable PORTAGE_RSYNC_EXTRA_OPTS de su
/etc/portage/make.conf.
Listado de Código 1.1: Definir el archivo de exclusiones en /etc/portage/make.conf |
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
|
Listado de Código 1.2: Excluir todos los juegos en /etc/portage/rsync_excludes |
games-*/*
|
Recuerde que esto puede provocar ciertos problemas con las dependencias, ya
que paquetes nuevos y aceptados en su sistema pueden depender de otros
excluidos.
5.b. Añadiendo Ebuilds no oficiales
Definiendo un directorio extensión de Portage (overlay)
Puede indicarle a Portage que utilice ebuilds que no están disponibles
oficialmente a través del árbol de Portage. Cree un nuevo directorio (por
ejemplo /usr/local/portage) en el cual guardará los ebuilds
procedentes de otras fuentes. Utilice la misma estructura de directorios
que tenemos en Portage.
Después defina la variable PORTDIR_OVERLAY en
/etc/portage/make.conf y haga que apunte al directorio
creado previamente. Cuando ahora utilice Portage, éste tendrá en cuenta
aquellos ebuilds para no eliminarlos/sobreescribirlos la próxima vez
que ejecute emerge --sync.
Trabajando con varias extensiones (overlays)
Para los usuarios que desarrollan en varias extensiones, probar los paquetes
antes de que lleguen al árbol de Portage o simplemente que quieren utilizar
ebuilds no oficiales procedentes de varias fuentes, el paquete
app-portage/layman incorpora layman, una herramienta
que ayudará a conservar las extensiones actualizadas.
En primer lugar, instale y configure layman como se muestra en
la Guía del Usuario de
Overlays de Gentoo, y añada los repositorios que desee con
layman -a <overlay-name>.
Suponiendo que tiene dos repositorios llamados java (para las
ebuilds en desarrollo) y entapps (para aplicaciones
desarrolladas en casa para su empresa). Puede actualizar estos
repositorios con la orden:
Listado de Código 2.1: Usando layman para actualizar todos los repositorios |
# layman -S
|
Para más información sobre el trabajo con extensiones, por favor, lea
man layman y la
Guía de usuario de layman/overlay.
5.c. Software no mantenido por Portage
Utilizando Portage con programas con auto-mantenidos
En algunos casos querrá configurar, instalar y mantener programas por
sí mismo sin que Portage automatice el proceso, incluso aunque Portage
pueda suministrarle esos programas. Conocidos son los casos de las
fuentes del núcleo y los controladores de nvidia. Puede configurar
Portage para que conozca cuando un determinado paquete ha sido
instalado manualmente en el sistema. Este proceso recibe el nombre de
inyectar y está soportado por Portage a través del archivo
/etc/portage/profile/package.provided.
Por ejemplo, si quiere que Portage le informe sobre
gentoo-sources-2.6.11.6 el cual ha sido instalado manualmente,
añada la siguiente línea a /etc/portage/profile/package.provided:
Listado de Código 3.1: Línea de ejemplo para package.provided |
sys-kernel/gentoo-sources-2.6.11.6
|
6. Características avanzadas de Portage
6.a. Introducción
Para la mayoría de los usuarios, la información recibida hasta ahora
es suficiente para todas sus operaciones en Linux. Sin embargo,
Portage es capaz de mucho más; gran parte de sus características están
dirigidas a usuarios avanzados o aplicable solo en casos muy
particulares. En todo caso, esto es excusa para no documentarlas.
Por supuesto que con gran flexibilidad viene una gran lista de casos
potenciales. No será posible documentarlos todos aquí. En cambio,
esperamos poder enfocarnos en algunas situaciones genéricas que
pueden ser modificadas para cumplir las necesidades de cada quien. Si
requiere afinamientos o datos más específicos, intente encontrarlos
más bien en el Wiki Gentoo.
La mayoría, si acaso no todas estas características adicionales puede
encontrarlas fácilmente leyendo las páginas del manual de Portage:
Listado de Código 1.1: Leyendo las páginas man de Portage |
$ man portage
$ man make.conf
|
Finalmente, sabemos que, si estas características avanzadas no son
usadas correctamente, pueden hacer el solucionar fallos pueda hacerse
muy difícil. Asegúrese de mencionarlas en caso crea que ha tropezado
con un fallo y desea abrir un reporte.
6.b. Variables de entorno por paquete
Usando /etc/portage/env
De manera predeterminada, se usarán en la construcción de un paquete
las variables de entorno definidas en
/etc/portage/make.conf, tales como CFLAGS,
MAKEOPTS etc. Sin embargo, en algunos casos, tal vez quisiéramos
proporcionar diferentes variables para paquetes específicos. Para esto,
Portage soporta el uso de /etc/portage/env y
/etc/portage/package.env.
El archivo /etc/portage/package.env contiene una lista de
paquetes que proporcionan variables con valores distintos y un
identificador específico que indica a Portage los cambios
deseados. Portage buscará este identificador, cuyo nombre puede
escoger uno mismo, en el archivo
/etc/portage/env/<identifier>.
Ejemplo: Depurando fallos en paquetes específicos
Como ejemplo, activaremos la depuración para el paquete
media-video/mplayer.
Primero registramos las variables para depuración en un archivo
llamado /etc/portage/env/debug-cflags. El nombre es
escogido arbitrariamente, pero por supuesto refleja claramente su
razón de ser para que sea obvia en el futuro.
Listado de Código 2.1: Contenido de /etc/portage/env/debug-cflags |
CFLAGS="-O2 -ggdb -pipe"
FEATURES="${FEATURES} nostrip"
|
Luego agregamos el rótulo al paquete media-video/mplayer
para usar su contenido:
Listado de Código 2.2: Contenido de /etc/portage/package.env |
media-video/mplayer debug-cflags
|
6.c. Enganchándose en el proceso del emerge
Usando /etc/portage/bashrc y archivos afiliados
Al trabajar Portage con los ebuilds, usa un entorno bash en el cual
llama las distintas funciones de construcción (como src_prepare,
src_configure, pkg_postinst, etc.). Portage también permite que uno
mismo establezca el entorno bash.
La ventaja de usar un entorno bash propio es poder engancharse en el
proceso de emerge en cada paso realizado. Esto puede hacerse para cada
emerge (por medio de /etc/portage/bashrc) o con entornos
individuales por paquete (con /etc/portage/env, como
expusimos anteriormente).
Para engancharse al proceso emerge, el entorno bash puede inspeccionar
las variables EBUILD_PHASE, CATEGORY y las variables que
siempre están disponibles durante el desarrollo del ebuild (tales como
P, PF, ...). En base a los valores de estas variables,
podemos ejecutar pasos adicionales.
Ejemplo: Actualizando bases de datos de archivos
En este ejemplo usaremos /etc/portage/bashrc para llamar
algunas aplicaciones de bases de datos para asegurar que sus bases de
datos estén actualizadas con respecto al sistema. En el ejemplo
usaremos aide (una herramienta para detectar intrusiones) y
updatedb (usado por locate), pero solo como ejemplo. No
considere que esto sea un CÓMO para aide ;-)
Para usar /etc/portage/bashrc en este caso, necesitaremos
"enganchar" a las funciones postrm (después de borrar archivos)
y postinst (después de instalar archivos) porque es cuando
los archivos en el sistema de archivos han sido cambiados.
Listado de Código 3.1: Ejemplo de /etc/portage/bashrc |
if [ "${EBUILD_PHASE}" == "postinst" ] || [ "${EBUILD_PHASE}" == "postrm" ];
then
echo ":: Calling aide --update to update its database";
aide --update;
echo ":: Calling updatedb to update its database";
updatedb;
fi
|
6.d. Ejecutando tareas después de --sync
La ubicación de /etc/portage/postsync.d
Hasta ahora hemos conversado acerca de engancharnos a procesos del
ebuild. Sin embargo, Portage también tiene otra función importante:
actualizar el árbol Portage. Para ejecutar tareas después de
actualizar el árbol Portage, coloque el guión dentro de
/etc/portage/postsync.d y asegúrese que esté marcado
ejecutable.
Ejemplo: ejecutar eix-update
Aunque no haya usado eix-sync para actualizar el árbol, todavía
puede actualizar su base de datos después de ejecutar la orden
emerge --sync (o emerge-webrsync)) colocando un enlace
simbólico a /usr/bin/eix llamado eix-update
en /etc/portage/postsync.d.
Listado de Código 4.1: Ejecutando eix-update luego de un sync |
# ln -s /usr/bin/eix /etc/portage/postsync.d/eix-update
|
Nota:
Si prefiere usar otro nombre, deberá escribir un guión que llame a
/usr/bin/eix-update. El binario eix puede averigua cómo
ha sido llamado y deduce qué función debe ejecutar. Si crea
un enlace simbólico a eix que no sea eix-update, no
se ejecutará correctamente.
|
6.e. Haciendo caso omiso a la configuración de perfil
La ubicación de /etc/portage/profile
De manera predeterminada, Gentoo usa la configuración del perfil
apuntado por /etc/portage/make.profile (un enlace
simbólico al directorio del perfil correcto). Estos perfiles definen
configuraciones específicas al igual que hereda configuraciones de
otros perfiles (por medio de su archivo parent).
Al usar /etc/portage/profile, podemos hacer caso omiso de
las configuraciones de perfil, tales como packages (los
paquetes considerados parte del conjunto system), ajustes use forzados
y demás.
Ejemplo: Agregar nfs-utils al conjunto system
Si usa sistemas de archivo NFS en sistemas de archivos críticos, tal
vez quiera "proteger" al paquete net-fs/nfs-utils para
que forme parte de system, lo cual ocasionará fuertes advertencias por
parte de Portage en caso que se tratara de borrar.
Para hacer esto, agregamos el paquete a
/etc/portage/profile/packages, antecedido por un
*:
Listado de Código 5.1: Contenido de /etc/portage/profile/packages |
*net-fs/nfs-utils
|
6.f. Aplicando parches no normados
Usando epatch_user
Para manejar varios ebuilds similarmente, los desarrolladores de
ebuilds usan eclasses (especie de librerías al nivel del
intérprete de comandos) que definen funciones comunes. Una de estas
eclasses es eutils.eclass que ofrece una interesante
función de nombre epatch_user.
La función epatch_user aplica parches encontrados en
/etc/portage/patches/<category>/<package>[-<version>[-<revision>]]
al código fuente, en el directorio que encuentre primero. Lamentablemente
no todos los ebuilds llaman automáticamente a esta función, así que el solo
hecho de colocar el parche en esta ubicación no implica que funcione
siempre.
Con suerte, con la información proporcionada arriba, se puede llamar
esta función para enganchar a, por ejemplo, la fase prepare. La
función puede ser llamada cuantas veces lo desee, pero aplicará los
parches una sola vez.
Ejemplo: Aplicando parches a Firefox
El paquete www-client/firefox es uno de los pocos que
llaman a epatch_user desde el ebuild, de manera que no hace
falta sustituir nada en particular.
Si necesita parchear firefox (por ejemplo, en el caso en que un
desarrollador le ofrezca un parche y le pidiera que compruebe si
corrige una incidencia de la que ha informado), coloque el parche en
/etc/portage/patches/www-client/firefox (probablemente
sea mejor usar el nombre completo, incluyendo la versión para que el
parche no interfiera con versiones) y vuelva a construir firefox.
D. Configuración de Redes en Gentoo
1. Iniciándonos
1.a. Comenzando
Nota:
Este documento asume que se tiene correctamente configurado el núcleo,
los módulos para su hardware y que conoce el nombre de su interfaz
hardware. También asumiremos que se está configurando eth0, pero
podría tratarse de eno0, ens1, wlan0, enp1s0
etc.
|
Para comenzar a configurar su tarjeta de red, necesitamos que el sistema
RC (guiones de inicio) de Gentoo la reconozca. Esto se hace
creando un enlace simbólico desde net.lo a
net.eth0 (o el nombre que tenga la interfaz de red
en su sistema) en /etc/init.d.
Listado de Código 1.1: Crear el enlace simbólico net.eth0 apuntando a net.lo |
# cd /etc/init.d
# ln -s net.lo net.eth0
|
El sistema RC de Gentoo ahora conoce la interfaz. También necesita
saber cómo configurar la nueva interfaz. Todas las interfaces de red
son configuradas en /etc/conf.d/net. A continuación
se muestra un ejemplo de configuración para DHCP y direcciones
estáticas:
Listado de Código 1.2: Ejemplos de /etc/conf.d/net |
config_eth0="dhcp"
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
|
Nota:
Si no especifica una configuración para la interfaz entonces se asume
el uso de DHCP.
|
Nota:
CIDR (Classless InterDomain Routing) Originariamente, las direcciones
IPv4 fueron clasificadas en A, B, o C. Esta clasificación temprana no
tuvo en cuenta la gran popularidad que obtendría Internet, y ahora
corre el riesgo de no tener suficientes direcciones únicas. CIDR es un
esquema de direccionamiento que permite que una dirección IP designe
muchas direcciones IP. Una dirección IP CIDR es igual que una
dirección IP normal excepto que termina con una barra invertida
seguida de un número; por ejemplo: 192.168.0.0/16. CIDR se describe
en RFC 1519.
|
Ahora que ya hemos configurado nuestra interfaz, podemos iniciarla o
detenerla utilizando las siguientes órdenes:
Listado de Código 1.3: Comenzar y detener los guiones de red |
# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop
|
Importante:
Cuando esté solucionando problemas con la red, échele una mirada a
/var/log/rc.log. A no ser que haya configurado
rc_logger="NO" en /etc/rc.conf, encontrará
información almacenada en este archivo de registro acerca de las
actividades al arrancar.
|
Ahora que ya ha iniciado y detenido la interfaz de red, quizá quiera que
comience automáticamente cuando Gentoo arranca. Aquí tiene cómo hacerlo.
La última orden "rc" indica a Gentoo que inicie todos los guiones en el
nivel de ejecución actual que todavía no se hayan sido iniciado.
Listado de Código 1.4: Configurar una interfaz de red para que inicie en el arranque |
# rc-update add net.eth0 default
# rc
|
2. Configuración Avanzada
2.a. Configuración Avanzada
La variable config_eth0 es el corazón de la configuración de una
interfaz. Es una lista de instrucciones de alto nivel para configurar la
interfaz (eth0 en este caso). Cada orden en la lista de instrucciones
se ejecuta de manera secuencial. La interfaz será evaluada como OK si, al
menos, un orden funciona.
Aquí tiene una lista de instrucciones integradas:
| Orden |
Descripción |
| null |
No hace nada |
| noop |
Si la interfaz está funcionando y existe una dirección entonces
aborta la configuración con éxito.
|
| una dirección IPv4 o IPv6 |
Añade la dirección a la interfaz |
|
dhcp,adsl o apipa (o una orden propia
perteneciente a un módulo de terceras partes)
|
Ejecuta el módulo que proporciona la orden. Por ejemplo
dhcp ejecutará un módulo que proporcione dhcp, que
pudiera ser uno cualquiera de los siguientes: dhcpcd,
dhclient o pump.
|
Si una orden falla, puede especificar una orden de retorno (fallback).
El retorno tiene que coincidir exactamente con la estructura de la
configuración.
Puede encadenar estas órdenes. A continuación se muestran algunos
ejemplos reales:
Listado de Código 1.1: Ejemplos de configuración |
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
|
Nota:
Cuando se utiliza el módulo ifconfig y se añade más de una dirección,
se crean alias de interfaz para cada dirección extra. De esta manera los dos
ejemplos anteriores tendrán interfaces eth0, eth0:1 y
eth0:2. No se puede hacer nada especial con estas interfaces ya que el
núcleo y otros programas simplemente tratan eth0:1 y eth0:2 como
eth0.
|
Importante:
¡La orden de retorno es importante! Si no especificamos la opción null,
la orden apipa se ejecutaría solo si la orden noop falla.
|
Nota:
APIPA y
DHCP serán tratados más adelante.
|
2.b. Dependencias de red
Los guiones en /etc/init.d pueden depender de una
interfaz de red específica o, simplemente, de net (red). Todos los
interfaces de red en el sistema de inicio de Gentoo proporcionan algo
llamado net.
Si está configurado rc_depend_strict="YES" en
/etc/rc.conf, entonces todos los interfaces de red que
proporcionen net deben estar activos antes que pueda considerarse
cumplida la dependencia en "net". En otras palabras, si tienen los
interfaces net.eth0 y net.eth1 y un guión de
inicio depende de "net", ambos deben estar activados.
Por otro lado, si está configurado rc_depend_strict="NO",
entonces la dependencia de "net" se considera cumplida al momento de
estar activo al menos uno de los interfaces de red.
Pero, ¿y qué pasa si net.br0 depende de net.eth0 y
net.eth1? net.eth1 podría ser un dispositivo
wireless o ppp que necesita configurarse antes de añadirse al puente. Esto no
puede hacerse en /etc/init.d/net.br0 ya que es un enlaces
simbólico a net.lo.
La respuesta es definir nuestra propia requerimiento rc_need_
en /etc/conf.d/net
Listado de Código 2.1: Dependencia de net.br0 en /etc/conf.d/net |
rc_need_br0="net.eth0 net.eth1"
|
Lo anterior no es suficiente. Los guiones de inicio de Gentoo utilizan una
dependencia virtual llamada net para informar al sistema cuando está
disponible la conexión a red. Claramente, en el caso de arriba la conexión
a red debería marcarse como disponible cuando net.br0 está
funcionando, no cuando lo están las otras. Por lo que tenemos que indicar
también esto en /etc/conf.d/net:
Listado de Código 2.2: Actualizar las dependencias y provisiones para los servicios de red |
rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"
|
Para una lectura más detallada sobre dependencias, consulte la sección
Guiones de Inicio en el
manual de Gentoo. Se puede encontrar más información acerca de
/etc/rc.conf en los comentarios dentro del propio archivo.
2.c. Nombre de variables y valores
Los nombre de variables son dinámicos. Normalmente sigue la estructura
variable_${interface|mac|essid|apmac}. Por ejemplo, la variable
dhcpcd_eth0 guarda los valores para las opciones de dhcpcd para eth0
y dhcpcd_essid los valores para dhcpcd cuando cualquier interfaz se
conecta al ESSID "essid".
Sin embargo, no hay ninguna regla que indique que los nombre de las interfaces
sean ethx. De hecho, muchas interfaces wireless tienen nombres como wlanx, rax
o ethx. También, algunas interfaces definidas por el usuario como pueden ser
puentes puede tener cualquier nombre, como foo. Para hacer la vida un poco más
interesante, los puntos de acceso wireless pueden tener nombres con caracteres
no alfanuméricos - esto es importante porque puede configurar los parámetros de
red por ESSID.
La desventaja de todo esto es que Gentoo usa variables bash para la red -
y bash no puede utilizar nada fuera de caracteres alfanuméricos ingleses.
Para solucionar esta limitación cambiamos cada carácter que no sea alfanumérico
inglés por un carácter _.
Otra desventaja de bash es el contenido de las variables - algunos caracteres
necesitan especificarse de manera especial. Esto se hace utilizando \
delante del carácter. A continuación tenemos una lista de caracteres
especiales que necesitamos indicar de esta manera. ",' y
\.
En este ejemplo utilizamos ESSID wireless ya que puede contener un amplio
abanico de caracteres. Deberemos utilizar ESSID My "\ NET:
Listado de Código 3.1: Ejemplo de nombre para la variable |
dns_domain_My____NET="My \"\\ NET"
|
8.d. Nombrado de las interfaces de red
Cómo funciona
Los nombres de la interfaces de red no se obtienen de forma arbitraria,
el núcleo Linux y el gestor de dispositivos (la mayoría de sistemas
utilizan udev como gestor de dispositivos, aunque existen otros)
obtiene el nombre de la interfaz mediante una serie de reglas prefijadas.
Cuando se detecta una interfaz en un sistema, el núcleo Linux recolecta
los datos disponibles para esa tarjeta de red. Estos datos incluyen:
-
el nombre registrado de tarjeta de red (en la propia interfaz) y
que más tarde se podrá obtener a través del parámetro
ID_NET_NAME_ONBOARD;
-
la ranura en la cual se ha insertado la tarjeta de red y que más
tarde se podrá obtener a través del parámetro
ID_NET_NAME_SLOT;
-
la ruta a través de la cual se accede a la tarjeta de red y que
más tarde se podrá obtener a través del parámetro
ID_NET_NAME_PATH;
-
la dirección MAC (que ofrece el fabricante) de la tarjeta y que
más tarde se podrá obtener mediante el parámetro
ID_NET_NAME_MAC;
Basándose en esta información, el gestor de dispositivos decide como
nombrar a las interfaces presentes en el sistema. Por defecto,
utiliza el primero de los tres primeros parámetros que se muestran
arriba. Por ejemplo, si se encuentra un valor para
ID_NET_NAME_ONBOARD y éste es eno1, entonces la interfaz
de red se llamará eno1.
Si sabe el nombre de su interfaz, puede ver los valores de los
parámetros mediante la orden udevadm:
Listado de Código 4.1: Leer la información de la tarjeta de interfaz de red |
# udevadm test-builtin net_id /sys/class/net/enp3s0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
ID_NET_NAME_PATH=enp3s0
|
Como el primer (y realmente el único) de los parámetros que aparecen
es ID_NET_NAME_PATH, su valor se utiliza para nombrar al
interfaz de red. Si no se encuentra ninguno de los parámetros,
entonces el sistema utiliza los nombres que ofrece el núcleo
(eth0, eth1, etc.)
Utilizar el nombrado al viejo estilo del núcleo
Antes de este cambio, era el núcleo el que ponía los nombres a las
tarjetas de red, dependiendo del orden en el que se cargaran
sus controladores (entre otras, probablemente oscuras razones). Este
comportamiento se puede aún activar definiendo la opción
net.ifnames=0 en el gestor de arranque.
Otra forma de deshabilitar este comportamiento (y así, volver
a los nombres que utilizaba el núcleo anteriormente), es crear
una regla para udev vacía y llamarla
80-net-name-slot.rules, la cual sustituirá a la
regla ofrecida por el paquete udev (que tiene el mismo nombre)
responsable del nombrado de las interfaces de red.
Listado de Código 4.2: Sustituir el esquema de nombrado de red |
# ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
|
Usar sus propios nombres
La idea detrás de este cambio en el nombrado es la de no confundir
a la gente y hacer los cambios de nombre de forma fácil. Suponga
que tiene dos interfaces que se llamarían eth0 y eth1. Una se
utiliza para acceder a la red a través de cable y la otra es
inalámbrica. Con el soporte para el nombrado de interfaces, puede
llamarlas lan0 (cableada) y wifi0 (inalámbrica, es mejor
evitar usar los nombres anteriores bien conocidos como eth* y
wlan* ya que todavía pueden parecerse a los nombres que hemos
sugerido).
Todo lo que necesita ahora es encontar los parámetros para las
tarjetas y utilizar esta información para definir su propia regla
de nombrado:
Listado de Código 4.3: Definir el nombre lan0 para la interfaz actual eth0 |
# udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
# vim /etc/udev/rules.d/76-net-name-use-custom.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_MAC}=="enxc80aa9429d76", NAME="lan0"
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp3s0", NAME="wifi0"
|
Debido a que las reglas se disparan antes de la regla por defecto (las reglas
se disparan en orden alfanumérico, por lo que la 70 se lee antes que la 80), los
nombres ofrecidos en el fichero de reglas se utilizarán en lugar de los
que se usan por defecto. El número asignado al fichero debería estar
entre 76 y 79 (las variables de entorno se definen mediante una regla que
comienza por 75 y el nombrado por defecto lo realiza una regla con el
número 80).
3. Trabajo Modular con Redes
1.a. Módulos de Red
Ahora tenemos soporte para guiones de red, lo cual significa que podemos
fácilmente añadir soporte para nuevos tipos de interfaces y módulos de
configuración mientras mantenemos la compatibilidad con los actuales.
Los módulos se cargan por defecto si el paquete que los requiere está instalado.
Si especifica un modulo aquí que no tiene su paquete instalado, entonces
obtendrá un error acerca del paquete que necesita instalar. Lo ideal sería
que solamente use la configuración con módulos si tiene dos o
más paquetes que proporcionen el mismo servicio y necesita marcar su
preferencia de uno sobre los otros.
Nota:
Todas las configuraciones que aquí se comentan, son almacenadas en
/etc/conf.d/net a menos que se especifique lo contrario.
|
Listado de Código 1.1: Preferencias en los módulos |
modules="ifconfig"
modules_eth0="pump"
modules="!iwconfig"
|
3.b. Manejadores de interfaces
Proporcionamos dos manejadores de interfaces: ifconfig e
iproute2. Hará falta uno de estos para cualquier tipo de
configuración de red.
Por defecto se instala ifconfig (el paquete net-tools es
parte del perfil system). El paquete iproute2 es más poderoso
y flexible, pero no se incluye por defecto.
Listado de Código 2.1: Para instalar iproute2 |
# emerge sys-apps/iproute2
modules="ifconfig"
|
Ya que ifconfig e iproute2 hacen cosas muy parecidas, nos
permitimos usar la misma configuración básica para ambos. Los ejemplos a
continuación funcionarán sin importar cuál módulo tenga instalado.
Listado de Código 2.2: Ejemplos de ifconfig e iproute2 |
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"
config_eth0="192.168.0.2/24 brd 192.168.0.255"
config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
|
3.c. DHCP
El DHCP es un medio para obtener información de red (dirección IP,
servidores DNS, puerta de enlace, etc) de un servidor DHCP. Si existe
un servidor DHCP en su red, apenas tendrá que decirle a cada cliente que
utilice DHCP y el servidor se encargará de configurar el resto. Por
supuesto, tendrá que configurar otras cosas la red inalámbrica, el
ppp, etc. u otros si hacen falta antes de poder utilizar DHCP.
DHCP puede ser proporcionado por: dhclient, dhcpcd o
pump. Cada módulo DHCP tiene sus propios pros y contras - aquí
tiene un pequeño resumen:
| Módulo DHCP |
Paquete |
Pros |
Contras |
| dhclient |
net-misc/dhcp |
Creado por la ISC, la misma gente que hacen el software dns BIND.
Muy configurable
|
Configuración excesivamente complicada, software bastante hinchado,
no se puede obtener servidores NTP desde DHCP, no envía el nombre
de host por defecto.
|
| dhcpcd |
net-misc/dhcpcd |
Durante largo tiempo ha sido la opción por defecto de Gentoo, no
depende de herramientas externas, activamente desarrollada por
Gentoo.
|
Puede ser un poco lento a veces, no se convierte en demonio
cuando el arrendamiento de la dirección es infinito.
|
| pump |
net-misc/pump |
Ligero, no depende de herramientas externas.
|
Ya no es mantenido por los desarrolladores, no es fiable
especialmente a través de modems, no se puede obtener
servidores de NIS desde DHCP.
|
Si tiene más de un cliente DHCP instalado, hará falta
especificar cuál utilizar - sino, utilizaremos dhcpcd por
defecto, si está disponible.
Para enviar opciones específicas al módulo dhcp, utilizamos
module_eth0="..."(cambie "module" por el nombre del módulo dhcp
que vaya a utilizar - por ejemplo: dhcpcd_eth0).
Tratamos que el servicio DHCP sea relativamente agnóstico,
de manera que soportamos los siguientes comandos usando la variable
dhcp_eth0. Por defecto no se configuran ninguno de ellos.
-
release- suelta la dirección IP para ser re-utilizada
-
rnodns - no sobre-escriba el /etc/resolv.conf
-
rnontp - no sobre-escriba el /etc/ntp.conf
-
rnonis - no sobre-escriba el /etc/yp.conf
Listado de Código 3.1: Ejemplo de configuración DHCP en /etc/conf.d/net |
modules="dhcpcd"
config_eth0="dhcp"
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
Nota:
dhcpcd y dpump envían el nombre de máquina al servidor
DHCP por defecto así que no necesita especificarlo más.
|
3.d. ADSL con PPPoE/PPPoA
Primero necesitamos instalar el software ADSL.
Listado de Código 4.1: Instalar el paquete rp-pppoe |
# emerge net-dialup/ppp
|
Segundo, cree el guión de red PPP y el guión de red para la interfaz
ethernet que se utilizará con PPP:
Listado de Código 4.2: Crear los guiones para PPP y ethernet |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
|
Asegúrese de configurar rc_depend_strict a "YES" en
/etc/conf.d/rc.
Ahora necesitamos configurar /etc/conf.d/net.
Listado de Código 4.3: Una configuración básica PPPoE |
config_eth0=null
config_ppp0="ppp"
link_ppp0="eth0"
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
rc_need_ppp0="net.eth0"
|
También puede configurar su password en /etc/ppp/pap-secrets.
Listado de Código 4.4: Ejemplo /etc/ppp/pap-secrets |
"nombre-usuario" * "contraseña"
|
Si utiliza PPPoE con un modem USB necesitará instalar br2684ctl.
Por favor, lea /usr/portage/net-dialup/speedtouch-usb/files/README
para conseguir la información de cómo configurarlo adecuadamente.
Importante:
Por favor, lea con detenimiento la sección sobre ADSL y PPP en
/usr/share/doc/openrc-0.8.3-r1/net.example.bz2. Contiene
muchas explicaciones mucho más detalladas de las configuraciones que
su instalación PPP podría necesitar. Por supuesto, cambie
0.8.3-r1 a la versión de OpenRC que esté instalada en su
sistema.
|
3.e. APIPA Direccionamiento Privado Automático (Automatic Private IP Addressing)
APIPA intenta encontrar una dirección libre en el rango
169.254.0.0-169.254.255.255 haciendo arping a direcciones aleatorias
en ese rango para el interfaz. Si no se obtiene respuesta, se asigna
esa dirección al interfaz.
Esto es útil solamente en redes donde no hay servidor DHCP y no hay
conexión directa al Internet y que todos los demás computadores
también usen APIPA.
Para soporte APIPA, haga emerge net-misc/iputils
o net-analyzer/arping.
Listado de Código 5.1: Configuración de APIPA en /etc/conf.d/net |
config_eth0="dhcp"
fallback_eth0="apipa"
config_eth0="apipa"
|
3.f. Bonding
Para unir enlaces con bonding/trunking haga emerge
net-misc/ifenslave.
El "bonding" se utiliza para aumentar el ancho de banda hacia la
red. Si tiene dos interfaces que van a usar la misma red, puede
unirlos (bond, en inglés) para que las aplicaciones vean solo uno,
aunque en realidad use ambos interfaces.
Listado de Código 6.1: Configuración del bonding en /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0="null"
rc_need_bond0="net.eth0 net.eth1 net.eth2"
}
|
3.g. Puentes (soporte para 802.1d)
Para soportar puentes, haga emerge net-misc/bridge-utils.
Los puentes se usan para unir redes. Por ejemplo, puede tener un
servidor conectando al internet vía modem ADSL y una tarjeta
inalámbrica para que otros computadores se conecten al
internet por medio del modem ADSL. Se puede crear un puente para unir
ambos interfaces.
Listado de Código 7.1: Configurar un puente en /etc/conf.d/net |
brctl_br0="setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0="null"
config_eth1="null"
config_br0="192.168.0.1/24"
rc_need_br0="net.eth0 net.eth1"
}
|
Importante:
Para usar algunas configuraciones de puente, tal vez tenga que
consultar la documentación de Configuración por medio de
variables.
|
3.h. Dirección MAC
Si lo requiere, también puede cambiar la dirección MAC de los
interfaces por medio del archivo de configuración de red.
Listado de Código 8.1: Ejemplo de cambio de una dirección MAC |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
3.i. Haciendo túneles
No se requiere hacer emerge de paquete alguno para túneles, ya que el
manejador del interfaz se encarga de esto.
Listado de Código 9.1: Configuración de túneles en /etc/conf.d/net |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
config_vpn0="192.168.0.2 peer 192.168.1.1"
|
3.j. VLAN (soporte para 802.1q)
Para soporte VLAN, haga emerge net-misc/vconfig.
Las redes virtuales son un grupo de dispositivos de red que se
comportan como si estuviesen conectados a un solo segmento de red -
aunque no lo estén. Miembros de una VLAN solo pueden ver miembros de
la misma VLAN, aunque no compartan la misma red física.
Listado de Código 10.1: Configuración de VLANs en /etc/conf.d/net |
vlans_eth0="1 2"
vconfig_eth0="set_name_type VLAN_PLUS_VID_NO_PAD"
vconfig_vlan1="set_flag 1" "set_egress_map 2 6"
config_vlan1="172.16.3.1 netmask 255.255.254.0"
config_vlan2="172.16.2.1 netmask 255.255.254.0"
|
Importante:
Para usar algunas configuraciones de VLAN, tal vez haga falta
consultar la documentación de Configuración por medio de
variables.
|
4. Redes Inalámbricas
4.a. Introducción
Las redes inalámbricas en Linux, normalmente se configuran de forma
fácil. Hay dos formas de realizar esta configuración: clientes
gráficos y la línea de comandos.
La forma más fácil es usar el cliente gráfico, una vea haya
instalado un entorno de
escritorio. La mayoría de clientes gráficos, como wicd y NetworkManager,
son bastante autoexplicativos. Ofrecen una interfaz del tipo apuntar y
hacer clic que le conectan a una red en cuestión de segundos.
Nota:
wicd ofrece una utilidad de línea de comandos además de
la interfaz gráfica principal. Puede obtenerla haciendo emerge de
wicd con el ajuste USE ncurses activado. Esta utilidad
wicd-curses es particularmente útil para aquéllos que no usan
un entrono de escritorio basado en gtk, pero quieren una herramienta
de línea de comandos fácil que no requiere configuración a mano de los
ficheros.
|
Sin embargo, si no quiere usar un cliente gráfico, puede configurar la
red inalámbrica con la línea de comandos, editando unos pocos ficheros
de configuración. Esto toma un poco más de tiempo, pero también
requiere de menos paquetes que descargar e instalar. Ya que los
clientes gráficos son en su mayoría autoexplicativos (con capturas de
pantalla útiles en sus páginas oficiales), nos centraremos en las
alternativas de línea de comandos.
Puede configurar una red inalámbrica usando la línea de comandos,
instalando wireless-tools o wpa_supplicant. Lo
importante a recordar es que puede configurar las redes locales de
forma global, no dependiendo de la interfaz.
La mejor opción es wpa_supplicant. Para un listado de los
controladores soportados, lea la página de
wpa_supplicant. Además, actualmente, wpa_supplicant sólo
puede conectarse a SSIDs para los cuales haya sido configurado.
Los wireless-tools soportan casi todas las tarjetas y
controladores, pero no puede conectarse a PAs (puntos de acceso) con
WPA solamente. Si sus redes ofrecen únicamente cifrado WEP o están
completamente abiertas, puede que prefiera la simpleza de
wireless-tools.
Aviso:
Actualmente el controlador linux-wlan-ng no está soportado por
baselayout. Esto es debido a que linux-wlan-ng tiene su propia
configuración que es completamente diferente a las demás. Se rumorea
que los desarrolladores de linux-wlan-ng están pensando en
cambiar su configuración a wireless-tools. Cuando esto suceda,
podremos utilizar linux-wlan-ng con baselayout.
|
4.b. WPA Supplicant
WPA Supplicant
es un paquete que le permite conectarse a puntos de acceso
habilitados con WPA.
Listado de Código 2.1: Instalación de wpa_supplicant |
# emerge net-wireless/wpa_supplicant
|
Importante:
Debe activar CONFIG_PACKET en su kernel para que funcione
wpa_supplicant. Intente ejecutar
grep CONFIG_PACKET /usr/src/linux/.config para comprobar si
lo tiene activado en su núcleo.
|
Nota:
Dependiendo de sus ajustes USE, wpa_supplicant puede instalar
una interfaz gráfica escrita en Qt4, que se integrará de forma
adecuada con KDE. Para obtenerla, ejecute echo
"net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use como
root antes de hacer emerge de wpa_supplicant.
|
Ahora debemos configurar /etc/conf.d/net para elegir
wpa_supplicant sobre wireless-tools (si ambos están
instalados, wireless-tools será usado por defecto).
Listado de Código 2.2: Configurar /etc/conf.d/net para wpa_supplicant |
modules="wpa_supplicant"
wpa_supplicant_eth0="-Dmadwifi"
|
Nota:
Si está usando el controlador host-ap, hará falta colocar el interfaz
en modalidad gestión (Managed mode) antes de poder usarlo
correctamente con wpa_supplicant. Para esto puede usar
iwconfig_eth0="mode managed" en /etc/conf.d/net.
|
Eso fue sencillo, ¿verdad? Sin embargo, todavía nos queda configurar
wpa_supplicant, que es algo más difícil, dependiendo de cuán
seguros son los PAs a los cuales tratamos de conectarnos. A
continuación mostramos un ejemplo simplificado del archivo
/etc/wpa_supplicant.conf.example, parte del paquete
wpa_supplicant.
Listado de Código 2.3: Un ejemplo de /etc/wpa_supplicant.conf |
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="sencillo"
psk="contraseña-frase muy secreta"
priority=5
}
network={
ssid="segundo ssid"
scan_ssid=1
psk="contraseña-frase muy secreta"
priority=2
}
network={
ssid="ejemplo"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
network={
ssid="prueba-noencriptada"
key_mgmt=NONE
}
network={
ssid="prueba-estatica-wep"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
network={
ssid="prueba-estatica-wep2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
network={
ssid="prueba adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="contraseña-frase secreta"
}
|
4.c. Wireless Tools
Configuración inicial y modo manejado
Los
Wireless Tools proveen una manera genérica para configurar los
interfaces inalámbricos básicos hasta el nivel de seguridad
WEP. Aunque WEP es un sistema de seguridad débil, también es el más
prevalente.
La configuración de Wireless Tools es controlado por algunas variables
principales. El archivo ejemplo de configuración a continuación deberá
describir todo lo requerido. Algo para mantener presente es que
ninguna configuración significa "conectarse al punto de acceso sin
encriptación que tenga la señal más fuerte" - de manera que siempre
tratará de conectarse con lo que sea.
Listado de Código 3.1: Instalar wireless-tools |
# emerge net-wireless/wireless-tools
|
Nota:
Aunque pueda almacenar su configuración inalámbrica en
/etc/conf.d/wireless, esta guía le recomienda hacerlo en
/etc/conf.d/net.
|
Importante:
Hará falta consultar la documentación acerca de nombres de variables.
|
Listado de Código 3.2: Configuración ejemplo con iwconfig en /etc/conf.d/net |
modules="iwconfig"
key_ESSID1="[1] s:suclaveaqui key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
preferred_aps="'ESSID1' 'ESSID2'"
|
Afinamiento en la selección de puntos de acceso
Puede agregar opciones adicionales para afinar la selección de puntos
de acceso, pero normalmente esto no hace falta.
Puede decidirse si conectarse solamente a PAs preferidos o no. Por
defecto, si falla todo lo configurado y nos podemos conectar a un PA
no encriptado, entonces se hará. Esto puede ser controlado con la
variable associate_order (orden asociado). Sigue una tabla de
valores y como estos ejercen este control.
| Valor |
Descripción |
| any |
(cualquiera) Comportamiento por defecto |
| preferredonly |
(solo preferidos) Solamente nos conectaremos a PAs
visibles en la lista de preferidos |
| forcepreferred |
(obligado a preferidos) Nos conectaremos obligatoriamente a los
PAs en el orden preferido aunque no se encuentren en un barrido |
| forcepreferredonly |
(solamente preferidos obligados) No barrer buscando PAs
- solo tratar de conectar a cada uno en orden |
| forceany |
(obligar a cualquiera) Igual que forcepreferred y además
se conecta a cualquier otro disponible |
Finalmente podemos hacer una lista negra de PAs (blacklist_aps)
y seleccionar un único PA (unique_ap). blacklist_aps
funciona de manera similar a preferred_aps. unique_ap es
un valor si o no (yes o no) que determina si un segundo
interfaz inalámbrico se puede conectar al mismo punto de acceso que el
primer interfaz.
Listado de Código 3.3: Ejemplo de blacklist_aps y de unique_ap |
blacklist_aps="'ESSID3' 'ESSID4'"
unique_ap="yes"
|
Modos Ad-Hoc y Master
Si desea establecerse como un nodo Ad-Hoc al no lograr conectarse a
algún PA en modo manejado, puede hacerlo también.
Listado de Código 3.4: Usar modo ad-hoc en caso de no conectar en modo manejado |
adhoc_essid_eth0="This Adhoc Node"
|
Y ¿qué tal conectarse a redes Ad-Hoc o funcionar en modo Master para
convertirse en PA? ¡Aquí tenemos una configuración justo para eso! Tal
vez tenga que especificar alguna clave WEP como se muestra arriba.
Listado de Código 3.5: Ejemplo de configuración ad-hoc/master |
mode_eth0="ad-hoc"
essid_eth0="This Adhoc Node"
channel_eth0="9"
|
Importante:
A continuación citamos la documentación wavelan de BSD encontrado en
la documentación de NetBSD Existen 14 canales posibles; Se nos
informa que los canales 1-11 son legales para Norteamérica , los
canales 1-13 para la mayor parte de Europa, los canales 10-13 para
Francia y sólo el canal 14 para el Japón. En caso de duda, por favor
eche un vistazo a la documentación que acompaña la tarjeta o el
PA. Asegúrese que el canal que selecciona es el mismo del PA (o de la
otra tarjeta en caso de ser red ad-hoc). Para las tarjetas vendidas en
Norteamérica y la mayor parte de Europa, es el canal 3 por defecto; en
Francia el 11 y en el Japón es el 14.
|
Solucionar problemas con Wireless Tools
Existen más variables que sirven para ayudar a configurar y operar una
red inalámbrica por problemas ambientales o del manejador. Aquí
presentamos una tabla de otras cosas para intentar.
| Variable |
Valor por defecto |
Descripción |
| iwconfig_eth0 |
|
Vea la página man de iwconfig para detalles acerca de qué
enviar a iwconfig
|
| iwpriv_eth0 |
|
Vea la página man de iwpriv para detalles acerca de qué enviar
a iwpriv
|
| sleep_scan_eth0 |
0 |
La cantidad en segundos a dormir antes de intentar un
barrido. Esto hace falta cuando el manejador/firmware requiere
de más tiempo para activarse antes de poder usarlos.
|
| sleep_associate_eth0 |
5 |
La cantidad en segundos a esperar para que el interfaz se asocie
con el PA antes de continuar al siguiente.
|
| associate_test_eth0 |
MAC |
Algunos manejadores no resetean la dirección MAC asociada a una
inválida cuando pierden la señal o intentan asociarse.
Algunos manejadores no resetean el nivel de calidad cuando
pierden la señal o intentan asociarse.
La configuraciones válidas son MAC, quality y all.
|
| scan_mode_eth0 |
|
Algunos manejadores tienen que hacer el barrido en modo ad-hoc,
así que, si falla el barrido, intente configurar aquí como ad-hoc.
|
| iwpriv_scan_pre_eth0 |
|
Envía algunas órdenes iwpriv al interfaz antes del barrido.
Consulte la página man de iwpriv para más detalles.
|
| iwpriv_scan_post_eth0 |
|
Envía algunas órdenes iwpriv al interfaz después del barrido.
Vea la página man de iwpriv para más detalles.
|
4.d. Definir la configuración de la red por ESSID
A veces, se necesita una dirección IP estática cuando se conecta a un
ESSID1 y cuando lo hace a ESSID2, se utiliza DHCP. De
hecho, casi todas las variables de módulo pueden cambiarse por
ESSID. A continuación mostramos cómo se hace.
Nota:
Esto funciona sin importar si usa WPA Supplicant o Wireless Tools.
|
Importante:
Necesitará consultar la documentación variable name.
|
Listado de Código 4.1: Reemplazar configuración de red por ESSID |
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"
config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="algun.dominio"
dns_search_domains_ESSID1="busque.eneste.dominio busque.enaquel.dominio"
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"
|
5. Agregar Funcionalidad
5.a. Puntos de enlace standard en las funciones
Se pueden definir cuatro funciones en /etc/conf.d/net,
que pueden ser llamadas antes o después de las operaciones
start/stop, de arranque/parada. Sus nombres se componen
empezando con el nombre de interfaz, de manera que una función puede
controlar múltiples interfaces.
Los valores de retorno de las funciones preup y predown
deben ser cero (éxito) indicando que la configuración o la
des-configuración de los interfaces pueden continuar. Si preup
devuelve un valor no-cero, se detendrá la configuración del interfaz.
Si predown devuelve un valor no-cero, no se permite que el
interfaz continúe desconfigurándose.
Los valores de retorno de las funciones postup() y
postdown() serán ignorados, ya que no hay nada que hacer si
hay indicación de algún fallo.
${IFACE} es el interfaz que será encendido/apagado,
${IFVAR} es ${IFACE} convertido a un nombre de variable
válido según bash.
Listado de Código 1.1: Ejemplo de funciones pre/post up/down |
preup() {
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
Nota:
Para mayor información acerca de escribir sus propias funciones,
agradecemos lea
/usr/share/doc/openrc-*/net.example.bz2.
|
5.b. Puntos de enlace para las herramientas inalámbricas
Nota:
Esto no funcionará con WPA suplicante - pero las variables
${ESSID} y ${ESSIDVAR} están disponibles en la función
postup().
|
Se pueden definir dos funciones en /etc/conf.d/net que se
ejecutan antes y después de la función asociada referida. Estas
funciones se nombran antecediéndole el nombre del interfaz, de manera
que la misma función puede controlar múltiples interfaces.
El valor retornado por la función preassociate() debe ser 0 (éxito)
para indicar que la configuración o desconfiguración del interfaz puede
continuar. Si la función preassociate() retorna un valor no-cero, se
interrumpirá la configuración del interfaz.
El valor retornado por la función postassociate() se ignora, ya
que no hay nada que hacer si llegase a indicarse una falla.
A ${ESSID} se le asigna el ESSID exacto del PA al cual se está
conectando, ya que ${ESSIDVAR} es ${ESSID}, convertido a
un nombre de variable permitido por bash.
Listado de Código 2.1: Funciones pre/post asociación en /etc/conf.d/net |
preassociate() {
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
return 0
}
|
Nota:
Las variables ${ESSID} y ${ESSIDVAR} no están
disponibles en las funciones predown() y postdown().
|
Nota:
Para mayor información acerca de cómo escribir sus propias
funciones, agradecemos lea
/usr/share/doc/openrc-*/net.example.bz2.
|
6. Manejo de Redes
6.a. Gestión de la red
Si el ordenador está en continuo movimiento, no siempre tendrá un cable
ethernet conectado o un punto de acceso disponible. También, puede querer
que la red funcione automáticamente cuando un cable ethernet se conecte
o se encuentre un punto de acceso.
Aquí se encuentran algunas herramientas que puede ayudar a gestionar
esto.
Nota:
Esto documento solamente tiene habla sobre ifplugd, pero hay
alternativas como netplub. netplug es una alternativa
ligera a ifplugd, pero confía en que tus controladores de red
del núcleo funcionen correctamente, cosa que muchas veces no es así.
|
1.b. ifplugd
ifplugd es un
demonio que arranca y para las interfaces de red cuando un cable se conecta o
se desconecta. También puede gestionar la detección asociándose a un punto de
acceso o cuando uno nuevo entra dentro del radio de detección.
Listado de Código 2.1: Instalar ifplugd |
# emerge sys-apps/ifplugd
|
La configuración de ifplugd es bastante clara. El archivo de configuración
se encuentra en /etc/conf.d/net. Ejecute man ifplugd para
obtener más detalles sobre las variables disponibles. Además, puede consultar
más ejemplos en
/usr/share/doc/openrc-*/net.example.bz2.
Listado de Código 2.2: Ejemplo de configuración de ifplug |
ifplugd_eth0="..."
ifplugd_eth0="--api-mode=wlan"
|
Además, para manejar múltiples conexiones de red, quizá quiera instalar una
herramienta que facilita el trabajo con múltiples configuraciones y servidores
DNS. Es realmente útil cuando se recibe la dirección IP via DHCP. Simplemente
instale openresolv.
Listado de Código 2.3: Instalar openresolv |
# emerge openresolv
|
Consulte man resolvconf para aprender más cosas sobre sus
características.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|