Archive

Archive for the ‘Portage’ Category

Instalación de Gentoo: Instalando el sistema base

28 agosto 2009 2 comentarios

Una vez que creadas y formateadas las particiones como ya explicamos anteriormente ahora nos toca montarlas. Para ello hay que seguir los siguentes pasos. Primero hay que crear una carpeta donde se monta la partición con el directorio raíz /, y luego diferente subdirectorios donde se van montando las particiones correspondientes. Vamos a crear la carpeta donde se montará el directorio raíz y a montarlo. Para ello ejecutamos los siguientes comandos:

$ sudo mkdir /mnt/gentoo
$ sudo mount /dev/hda3 /mnt/gentoo

Ahora tocar hacer lo mismo con las demás particiones. Es decir como la partición raíz / está en /mnt/gentoo si quisieramos montar la partición /boot, primero creamos el subdirecterio correspondiente /mnt/gentoo/boot y luego la montamos ahí. Para hacer esto para todas las particiones simplemente hay que ejecutar los siguientes comandos:

$ sudo mkdir /mnt/gentoo/boot
$ sudo mount /dev/hda2 /mnt/gentoo/boot
$ sudo mkdir -p /mnt/gentoo/usr/src
$ sudo mount /dev/hda6 /mnt/gentoo/usr/src
$ sudo mkdir -p /mnt/gentoo/usr/portage
$ sudo mount /dev/hda7 /mnt/gentoo/usr/portage
$ sudo mkdir -p /mnt/gentoo/usr/portage/distfiles
$ sudo mount /dev/hda8 /mnt/gentoo/usr/portage/distfiles
$ sudo mkdir -p /mnt/gentoo/var
$ sudo mount /dev/hda9 /mnt/gentoo/var
$ sudo mkdir -p /mnt/gentoo/tmp
$ sudo mount /dev/hda10 /mnt/gentoo/tmp
$ sudo mkdir -p /mnt/gentoo/home
$ sudo mount /dev/hda11 /mnt/gentoo/home/

Una vez hecho esto tenemos nuestras particiones montadas y listas para ser usadas, pero antes de seguir como tenemos que darle permisos a la partición /tmp ya que la tenemos en su propia partición. Lo mismo ocurriría para /var/tmp si la hubieramos montado en una partición expresa. Para ello ejecutamos:

sudo chmod 1777 /mnt/gentoo/tmp/

Antes de seguir comprobamos que tenemos la hora correctamente ajustada, ya que si no es así pueden suceder cosas extrañas en algún momento. Para hacerlo ejecutamos simplemente:

$ date

y comprobamos que la hora sea la adecuada. Si no es así la cambiamos con el siguiente comando:

$ sudo date MMDDhhmmAAAA

donde MM es el mes correspondiente con dos cifras, DD es el día con dos cifras también, hhmm se corresponden con la hora y minutos que sea y AAA es el año con 4 cifras.

Ahora vamos a descargar e instalar el sistema base de Gentoo, para ello vamos al punto de montaje en el que hemos montado el directorio raíz, es decir, /mnt/gentoo. Por comodida ejecutamos ahora:

$ sudo su

Con esto logramos acceder como superusuario. Esto es necesario porque a partir de ahora todo lo que ejecutemos requerirá de permisos de superusuario (o root), por ello el código comenzará por # si no se necesitan permisos de superusuario entonces comenzará por $ y lo puedes ejecutar con tu usuario. Hasta lo hemos hecho todo con el usuario normal pero como escribiamos sudo al inicio lograbamos ejecutar ese comando como superusuario. También hubiera sido posible hacer esto anteriormente, pero cuanto menos se trabaje como superusuario mejor. Ahora sí accedemos al directerio donde hemos montado todo:

# cd /mnt/gentoo

Ahora vamos a descargar el sistema base de Gentoo, para ello usaremos un stage3 que es simplemente descargar, descomprimir y listo. Para usaremos links que es un navegador web para consola. El stage lo descargaremos de la lista de servidores réplica:

# links http://www.gentoo.org/main/en/mirrors.xml

Al ser la primera vez que lo ejecutamos nos saldrá un recuadro de bienvenida que nos explica donde obtener ayuda. Pulsamos enter para cerrarlo y ya podemos navegar por la página. Ahora con el cursor de dirección bajamos hasta encontrar la lista de servidores réplica y escojemos uno cercano pulsando enter cuando esté seleccionado:

Luego vamos a releases y seleccionamos la arquitectura que se corresponda con nuestro ordenador en mi caso x86:

luego entramos en 2008.0/stages. Nos posicionamos sobre stage3-i686-2008.0.tar.bz2 y pulsamos D para descargarlo, hacemos lo mismo con los archivoa stage3-i686-2008.0.tar.bz2.DIGESTS y stage3-i686-2008.0.tar.bz2.CONTENTS que nos servirán para comprabar que el stage se ha descargado bien y no tiene ningún problema. Una vez terminadas las descargas pulsamos Q para cerrar links:

Ahora usamos md5sum para comprobar si el stage se ha descargado correctamente:

# md5sum -c stage3-i686-2008.0.tar.bz2.DIGESTS

Ahora extraemos el stage usando tar para ello:

# tar xvjpf stage3-*.tar.bz2

Verás cpor la pantalla de la consola empiezan a salir todos los archivos que están siendo extraidos. Las opciones que hemos usado son xvjpf y tienen las siguientes funciones:

  • x se usa para extraer.
  • v (verbose) se usa para que muestre en la pantalla lo que está pasando, es por eso que aparecen en la pantalla todos los archivos extraidos. Es opcional.
  • j para indicar que descomprima con bzip2.
  • p para preservar los permisos de los archivos comprimidos.
  • f para indicar que extraemos un archivo.

Ahora toca instalar Portage que es muy parecido a como hemos hecho con el sistema base. Nos situamos en el punto de montaje del sistema de ficheros:

# cd /mnt/gentoo

Ejecutamos nuevamente links en la lista de servidores réplica:

# links http://www.gentoo.org/main/en/mirrors.xml

Nuevamente seleccionamos un servidor cercano a nosotros:

Esta vez entramos en el directorio snapshots:

y descargarmos la última imagen disponible. El nombre es: portage-latest.tar.bz2. Así como el archivo portage-latest.tar.bz2.md5sum para comprobar que se ha descargado correctamente. Para ello seleccionamos el archivo y pulsamos D para descargarlo:

Una vez acabado comprobamos que Portage se ha descargado correctamente:

# md5sum -c portage-latest.tar.bz2.md5sum

Ahora extraemos la imagen descargada con el siguiente comando:

# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

<img src="https://gentooing.files.wordpress.com/2009/08/sistema-base16.png” alt=”” />

Ahora vamos a configurar Portage para que nos permita tener nuestro sistema perfectamente optimizado. Para configurar Portage se utiliza el siguiente archivo de configuración: /etc/make.conf. Aquí no voy a explicar todas las opciones de configuración disponibles si no sólo las que necesitemos configurar en cada momento. Para saber más podéis mirar el archivo /etc/make.conf.example que explica las principales opciones disponibles. Para editar el archivo podéis usar el editor que prefiráis. Yo en mi caso usaré nano. Para ello ejecuta:

# nano -w /mnt/gentoo/etc/make.conf

Como podéis ver tenemos muy pocas opciones configuradas. Os voy a explicar lo que son las que aparecen:

  • CHOST: Es el objetivo de compilación del sistema. Esta variable debe concordar con la arquitectura de tu sistema y no debes cambiarla. Si no concuerda es que has descargado un stage que no se corresponde con tu ordenador.
  • CFLAGS y CXXFLAGS son respectivamente parámetros de optimización para el compilador de C y C++ de gcc. Aquí en este archivo se definen globalmente por lo tanto se suelen usar las más flags más seguras para evitar problemas e inestabilidades en el sistema. Luego se pueden definir específicamente para cada programa y así permitir una mayor optimización sin repercutir en la estabilidad general del sistema.

Bueno, después de esta pequeña explicación pongámonos manos a la obra. Como ya he dicho la variable CHOST no se toca. Así que vamos a configurar las CFLAGS y CXXFLAGS.

El primer parámetro es -march= aquí va la arquitectura de destino. Ahí muchas opciones y depende de tu procesador. Pero a partir de la versión 4 de gcc existe la opción -march=native que permite que el compilador detecta tu CPU y las optimizaciones que acepta y define las opciones de acuerdo a eso. Esta es la opción recomendada y la que usaré.

Luego viene -O que indica el nivel de optimización de gcc. Las posibilidades son s para optimizar el tamaño, 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). Hay mucha gente que usa -O3. Pero puede provocar problemas al usarlo goblalmente y es practicamente inapreciable la diferencia con -O2 que es la que yo usaré. Estas son las opciones básicas pero se le pueden agregar algunas más. Para saber cuales son las flags seguras disponibles para nuestra CPU miramos en gentoo-wiki (inglés). Más concretamente el artículo sobre las flags seguras. Como explica ahí, lo primero es ejecutar cat /proc/cpuinfo para obtener información sobre nuestra CPU. Lo hacemos:

$ cat /proc/cpuinfo

Como se puede ver en la captura mi CPU es un Intel Core Duo T2300. Para saber las flags seguras disponibles hacemos click en el enlace al final de la página que se corresponda con nuestra CPU. En mi caso es Intel y luego allí voy a la sección correspondiente: Intel Core Solo/Duo, Pentium Dual-Core T20xx/T21xx. Donde sale:

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Estas serán las que use. La opción -pipe lo que hace es que el compilador en vez de crear archivos temporales durante la compilación usa tuberías para enviar los datos a la siguiente función. Lo cual ahorra tiempo de compilación a costa de un mayor uso de memoria RAM (si tienes poca RAM no es aconsejable activarlo).

La otra opción -fomit-frame-pointer evita el usao de punteros permitiendo liberar registros en la CPU. Pero sin embargo no nos permite usar la opción de depuración de errores de los programas (debugging).

Por último indicar que lo que hay escrito en las CXXFLAGS indica que use las mismas que las CFLAGS

Aparte de eso vamos a añadir la variable MAKEOPTS que indica el número de compilaciones paralelas que se pueden llevar a cabo. El número que se pone es el número de CPUs (núcleos de CPU) más uno. En mi caso como es un procesador doble núcleo pondré 3:

MAKEOPTS="-j3"

Si en vuestro caso no es así simplemente cambiad el 3 por lo que corresponda y voilá.

Ahora añadimos las siguientes opciones al archivo make.conf:

GENTOO_MIRRORS="http://trumpetti.atm.tut.fi/gentoo/"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
PORTAGE_RSYNC_RETRIES="3"

La primera variable indica desde que servidor réplica va a descargar los archivos fuentes de los programas. Yo siempre uso el finlandés porque aunque no este aquí al lado siempre funciona sin problemas y es rápido. La segunda variable indica el servidor rsync usado para actualizar el árbol Portage (la colección de ebuilds, scripts que contienen toda la información que Portage necesita para descargar e instalar software). Yo he seleccionado los europeos porque así cada vez va cambiando por uno nuevo. Ya que si sincronizas el árbol Portage más de tres veces al día con un mismo servidor te banea por un tiempo (días creo). Esto para evitar sobrecargar los servidores. De todos modos con hacer una vez al día o incluso menos va perfecto. El último es el número de veces que intenta la conexión antes de probar otro servidor si el actual no responde. Al final mi archivo make.conf ha quedado así:

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /etc/make.conf.example for a more detailed example.
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j3"

GENTOO_MIRRORS="http://trumpetti.atm.tut.fi/gentoo/"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
PORTAGE_RSYNC_RETRIES="3"

Una vez hamos acabado de editarlo salimos pulsando CTRL+X e introducimos y para que guarde los cambios efectuados.

Todavía quedan un par de cosillas antes de pasar al siguiente paso de la instalación… Pero como ahora no tengo tiempo de hacerlo lo haré mañana y actualizaré esta entrada 😉

Categorías:Gentoo, Linux, Portage, Tutorial

Instalación de Gentoo: Preparación previa.

17 agosto 2009 1 comentario

Para la instalación de Gentoo se puede usar cualquier LiveCD de cualquier distribución linux. En mi caso he optado por Knoppix ya que es una distro muy ligera ya que en su última verisón han cambiado de entorno de escritorio, de KDE a XFCE. Para descargarlo simplemente haced click aquí. Si no funcionase el link podéis elegir otro mirror aquí para descargarlo. Una vez descargardo sólo queda grabarlo para utilizarlo luego.

Ahora toca pensar en como vamos a particionar el disco duro. Como todo esto es muy subjetivo y hay muchas opinones al respecto. Normalmente se recomiendan 3 particiones:

  • Una para el directorio raíz cuyo punto de montaje es /.
  • Otra para los archivos personales de cado uno y donde se guarda la configuración de todos nuestros programas de tal manera que si por alguna razón tuvieramos que formatear (altamente improbable usando Linux) tendremos todos nuestros programas configurados como estaban antes sin hacer nada. Esta partición se monta en /home.
  • La última partición es el área de intercambio. No tiene punto de montaje y hay que darle formato swap. Circula por ahí una leyenda urbana respecto a esta partición que dice que tiene que ser el doble de grande que la ram.. En los ordenaderos antiguos que no tenían mucha ram era así. Pero en los ordenadores actuales donde casi todos tienes mínimo un Gb de ram ya no es cierto. Mi punto de vista es el siguiente: Hasta 256 mb de ram hay que tener el doble de swap. De 256 mb hasta 1 Gb de ram con 512 mb tendrás suficiente y seguramente te sobre. Desde 1 Gb de ram en adelante con 300-400 mb de swap vas sobrado. Aunque si piensas hibernar tu equipo necesitarás un tamaño igual a tu memoria ram ya que cuando lo hagas el contenido de la memoria ram se vuelca al disco duro usando para ello la swap.

A ese esquema se le suele añadir otra partición más que es la partición de arranque cuyo punto de montaje es /boot y contiene la información de inicio, los parámetros del kernel, las rutas donde están los respectivos sistemas operativos (más especificamente la imagen del kernel en el caso de Linux).

Este sistema básico se puede usar perfectamente sin problemas para la instalación de gentoo. Pero en mi caso lo voy a complicar algo más. El esquema será el siguiente:

  • Una para el directorio raíz. El tamaño depende de si piensas instalar muchas aplicaciones o no. Yo como siempre estoy probando cosas nuevas necesito mucho espacio y por eso le doy 15 Gb. El sistema de archivos utilizado será ext3. Su punto de montaje será /.
  • Una partición de arranque. En esta partición irán las imagenes del kernel que compilemos. Con 50 mb va de sobra para tener más de un kernel instalado a la vez. El sistema archivos será ext2 y su punto de montaje /boot.
  • Otra para los archivos personales y de configuración de cada uno. El tamaño es libre y yo usaré todo lo que me quede libre del disco. También será ext3 y se montará en /home.
  • Otra para la partición de intercambio. Como ya he icho depende de la ram que tengamos. En mi caso tengo 2 Gb de ram y como es un pórtatil y pienso ponerlo en modo hibernar frecuentemente le daré 2,5 Gb de tamaño. Su formato será swap y no tiene punto de montaje.
  • Otra para las fuentes del kernel. Tendrá un tamaño de 3 Gb para permitirnos tener instaladas a la vez las fuentes de varias versiones del kernel. Por si al instalar una nueva versión del kernel algo sale mal siempre podemos volver a la anterior sin problemas así. Su formato será ext2 formateado con tamaño de inodos y bloques de 1024 bytes. Su punto de montaje será /usr/src.
  • Otra para Portage. Portage dicho a lo basto para los que vengáis de otras distros es como los repositorios, pero mil veces más versátil y útil. Básicamente es un gestor de paquetes con tanta verstiilidad y opciones de configuración y optimización que una vez que lo probéis no querréis volver a usar otra cosa nunca más 🙂 El tamaño será de 500 mb y su formato será ext2 ormateado con tamaño de inodos y bloques de 1024 bytes. Lo hago ya que portage contiene millones de archivos muy pequeños. Así nos permitirá tenerlo almcenado en menos espacio. Su punto de montaje será /usr/portage.
  • Otra para los archivos que descagará portage al instalar los paquetes que necesitmos. Básicamente será el código fuente y parches. Como serán simplemente unos cientos de bastante/gran tamaño lo separamos de la partición anterior. El tamaño dependerá de la frecuencia con la que borres los archivos que tengas aquí que no sirvan ya. Pero yo le voy a dar 5 Gb ya que la última vez con 3 Gb se me estaba quedando pequeña al final. Su formato será ext2 y su punto de montaje /usr/portage/distfiles.
  • Otra cuyo punto de montaje será /var.  Esta partición es importante tenerla separada en servidores sobre todo. Yo he experimentado como servidor que tengo iba mucho más rápido después de separar esta partición del directorio raíz. En esta partición irán las colas de impresión de la impresora y los archivos de registro de actividades del sistema, más conocido por logs. El tamaño que le daré será de 5 Gb, ya que 2 Gb será utilizados por ccache (ya explicaré en su momento lo que es esto). Su formato será ext3 y su punto de montaje /var.
  • Otra para los archivos temporales. La separo del directorio raíz porque alguna vez he tenido problemillas con esto haciendo que se jodiera el sistema. Mientras que si está separada y falla por algo la formateas de nuevo y listo. El tamaño que le voy a dar va a ser 10 Gb, parece una burrada pero si piensas copiar dvds, se suele usar esta partición para almacenar la imagen del dvd que estés copiando. Su formato será ext2 también y su punto de montaje /tmp.

Aunque pueda parecer exagerado y muy lioso tener tantas particiones la verdad es que no es así e influye positivamente en el rendimiento de nuestro sistema. Lo ideal sería poder separar algunas de ellas en otros discos duros pero como tengo un portátil esto no es posible. Pero cuando explique como montar nuestro propio servidor ciego explicaré cuales separo y por qué.

En la próxima entrada nos pondremos a formatear el disco tal y como lo hemos planificado y empezaremos a instalar Gentoo. Se aceptan todo tipo de críticas y sugerencias.

PD: Es mi primer blog y todavía no se como usar wordpress por lo tanto no os extrañéis si véis cosas raras o de un momento para otro se cambia el formato y todo eso. Estoy experimentando y buscando un estilo para el blog que me guste…