Mi pequeño manual de instalación de gentoo ( por g0su )

Iniciado por ..sR. aDiKtO.., 16 Junio 2004, 17:58 PM

0 Miembros y 1 Visitante están viendo este tema.

..sR. aDiKtO..

El siguiente manual es de un usuario de los foros de gentoo, llamado g0su. Simplemente espectacular.

Instalación:

Esto es una miniguia de instalación basica de la distribucion Linux Gentoo, notar que puede tener muchisimos fallos puesto que la acabo de escribir y esta orientado al usuario medio-bajo en conocimientos del sistema Linux. He modificado y quitado pasos de la instalacion basica, como la creación de una particion especifica para el boot para facilitar la instalación de esta.

Recordar que siempre que aparezca el simbolo # y un comando lo que se debera de poner es unicamente el comando, el simbolo # se refiere al icono de identificación de una shell de usuario.


1ºObtención de la distribucion gentoo:

La distribución gentoo la obtendremos de los servidores de www.gentoo.org. En nuestro caso tendremos dos versiones, la minimal que unicamente es el live cd sin stage(ocupa cerca los 100mb) y la universal, la cual si que posee los stage(ocupa cerca los 700mb):

Minimal:
http://ftp.uni-erlangen.de/pub/mirrors/gentoo/releases/x86/2004.1/livecd/install-x86-minimal-2004.1.iso

Universal:
http://gentoo.inode.at/releases/x86/2004.1/livecd/install-x86-universal-2004.1.iso

Personalmente me bajaria la version Minimal y obtendria mas adelante los stage. Una vez descargada deberemos de grabar la iso en un cd virgen.


2ºArranque desde el CD:

Introducimos el cd en la unidad lectora y encendemos el ordenador. Acontinuación deberemos indicarle a la bios que arranque desde cd y no desde el disco duro(HD). Para acceder a la BIOS  deberemos de apretar la letra de "Supr" que se encuentra alado del intro, justo cuando nos aparezca las letras de informacion de nuestro hardware, antes de ver el arranque de nuestro sistema operativo.

Una vez hecho, al llegar al arranque nos leera el cd, nos aparecera un dibujo de gentoo y en la zona inferior nos aparecera "boot:", donde deberemos de ponerle opciones especiales que queremos que cargue con el arranque(apretar la letra F2 para ver las opciones), normalmente no nos hara falta poner nada, por lo que pulsaremos intro para cargar el kernel.

Una vez cargado el kernel nos aparecera una shell donde comenzara nuestra instalación.


3ºConexion a Internet y configuraciones basicas:

Si disponemos de cable o adsl monopuesto deberemos de introducir lo siguiente:

# dhcpcd eth0

Si por lo contrario disponemos de adsl multipuesto, deberemos de introducir:

# net-setup eth0

Es importante asegurarnos que tenemos conexion antes de seguir con la instalación, para ello mandaremos unos paquetes icmp a alguna web importante que estemos seguros de que se encuentre operativa:

# ping -c 5 www.google.com

Si nos responde, tendremos correctamente configurada la conexion, si no es asi, esque no hemos sido capaces de ello. Mirar entonces los manuales de route y de ifconfig.

Acontinuación deberemos de asegurarnos que la hora introducida es la correcta:

# date

Si la hora introducida no es la correcta tendremos que poner la que rectificarlo, la sintaxis es date MMDDhhmmyy, siendo los 2 primeros numeros el mes, los otros dos el dia, los otros dos la hora y los otros dos los minutos y por ultimo el año, si quisieramos poner 5 de enero a las 14:31 del 2004 seria:

# date 0105143104

Para mas información:

# date --help


4ºParticionar:

Para particionar el disco duro usaremos el comando fdisk, este comando crea destrulle particiones pero no es capaz de reasignar particiones. Si tenemos una particion que se encuentra ocupando todo el espacio de nuestro disco duro tenemos que reparticionarla con otro programa como pudiera ser Partition Magic o borrar la particion que tenemos y crearla nueva con menos espacio asignado.

Notar que los dispositivos en linux se encuentran en el directorio /dev/ y tienen una terminologia muy concreta.

Los dispositivos ide se conocen como hdX ej: /dev/hda. La X es el modo en que se encuentra, es decir, si veis una placa base tiene el ide0 o ide master y el ide1 o ide sclavo, dentro de cada ide este a su vez tiene un ide master y un ide sclavo, por lo que el maximo de dispositivos ide que puedes conectar a la placa con 4:

hda -> ide0 cable master(maestro)
hdb -> ide0 cable slave(esclavo)
hdc -> ide1 cable master
hdd -> ide1 cable slave


Para especificar que particion dentro de cada unidad(ejemplo un HD) tenemos va seguido el dispositivo de un numero: /dev/hdXX, por ejemplo la particion del disco duro que esta conectado al ide0 master y cuyo numero es el 1 seria:  /dev/hda1

En el caso que usemos dispositivos S-ATA o dispositivos SCSI, deberemos de activar el modulo de nuestra controladora mediante: modprobe modulo, para listar los modulos disponibles sera asi:

# modprobe -l

Las particiones para estos discos duros son de la siguiente forma /dev/sdX siendo una X una letra que identifica el disco duro, siendo /dev/sda para el disco duro 1, /dev/sdb para el disco duro 2 etc.. Para identificar las particiones dentro de cada unidad se hace igual que con los ide /dev/sdaX siendo X un numero identificativo, por ejemplo: /dev/sda1

Opciones del fdisk:

m   -> podemos ver las opciones
p   -> muestra las particiones
a   -> decimos cual es la particion de arranque
n   -> añadimos una particion nueva(siempre las crearemos primarias no extendidas, tanto swap como no)
d   -> borramos la particion
t   -> elejimos el tipo de particion(linux, swap linux, vfat...) una vez creada la particion.
q   -> salir sin grabar
w   -> para salir grabando los datos.


Nota: una vez modificado la tabla de particiones se debera de reiniciar para poder ver los cambios.

Vamos a ver un ejemplo de creación de particiones linux.Partiremos que queremos crear unas particiones en el hda, el cual tiene ya una partición de otro sistema operativo llamada hda1. Crearemos una particion hda2 que sera donde tengamos nuestro linux y una particion hda3 que sera la swap. Recordar que el fdisk cuando se crea una partición la toma como tipo linux, por lo cual, en el caso de la swap habra que cambiarla por tipo linux swap. Ademas comentar que a la hora de crear particiones fdisk las crea por medio de cilindros, como esto suele ser un poco engorroso las crearemos dejando el inicio de la particion la predeterminada(pulsando intro) y como final de partición las Megas que queremos que tenga la particion, usando +XM siendo X la cantidad de megas.

# fdisk /dev/hda

The number of cylinders for this disk is set to 116301.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)


Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (2043-116301, default 2043):                *Los numeros de los cilindros pueden variar
(presionamos intro)
Using default value 2043
Last cylinder or +size or +sizeM or +sizeK (2043-116301, default 116301): +10000M 

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (19378-116301, default 19378):
(presionamos intro)
Using default value 19378
Last cylinder or +size or +sizeM or +sizeK (19378-116301, default 116301): +200M

Command (m for help): p      *Mostramos las particiones

Disk /dev/hda: 60.0 GB, 60022480896 bytes
16 heads, 63 sectors/track, 116301 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System         
/dev/hda1        1        2042        2000+   b  W95 FAT32           
/dev/hda2            2043       19377     9765976+  83  Linux             
/dev/hda3           19378       19766      196056   83  Linux             

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): L
(Listado de particiones)
Hex code (type L to list codes):  82
Changed system type of partition 3 to 82 (Linux swap)

Command (m for help): p

Disk /dev/hda: 60.0 GB, 60022480896 bytes
16 heads, 63 sectors/track, 116301 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System         
/dev/hda1        1        2042        2000+   b  W95 FAT32           
/dev/hda2            2043       19377     9765976+  83  Linux             
/dev/hda3           19378       19766      196056   82  Linux Swap             

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#



5ºFormatear particiones:

Vamos a darles formato a las particiones. Existen actualmente 3 formatos principalmente, el ext3 que es el antiguo ext2 con journalist(si se apaga el ordenador no perdemos la información ni se producen daños), Reiserfs y XFS. En mi caso por pruebas la que mejor resultado me ha dado es la reiserfs, aunque ahi gente que opina que ext3 es mejor que reiserfs. XFS sera seguramente el mejor sistema de ficheros(formato) que ahi pero esta aún un poco verde, por lo que no lo recomiendo.

Los pasos a seguir a continuación seran los siguientes:
Activamos el dma de nuestro hd por si no lo tubieramos, para aumentar la velocidad de nuestro discoduro:

# hdparm -d 1 /dev/hda

Damos formato a la particion swap:

# mkswap /dev/hda3

Acontinuación escogeremos nuestro tipo de ficheros, no voy a explicar la XFS por motivos citados anteriormente:

# mke2fs -j /dev/hda2     -> si queremos formatear la particion linux como ext3.

# mkreiserfs /dev/hda2      -> si queremos formatear la particion como reiserfs.


6ºMontar las particiones:

Acontinuacion montaremos las particiones para poder ser usadas, esto es un concepto algo raro para los usuarios que no usen linux/unix. Montar una particion seria algo asi como activar una partición para poder ser usada. En el arranque de linux escribiremos en /etc/fstab las particiones que queremos que se arranque(tambien podemos decirle que no arranquen) con un conjunto de caracteristicas como pueda ser acceso de solo lectura etc etc Esto lo veremos mas alante pero es interesante ir sabiendolo ya.

Vamos a montar la particion swap:


# swapon /dev/hda3

Ahora montaremos la particion linux donde tendremos nuestra gentoo, tenemos que crear un directorio donde queremos montar la particion:

# mkdir /migentoo      -> creamos el directorio "migentoo"

Ahora dependiendo del tipo de formato haremos:

# mount -t reiserfs /dev/hda2 /migentoo      ->montamos la nueva particion si la elejimos reiserfs
o
# mount -t ext3 /dev/hda2 /migentoo        ->montamos la nueva particion si la elejimos ext3

El comando mount solo puede ser usado por el usuario root y su sintaxis basica es la siguiente:

mount -t tipo /dev/dispositivo /directorio/de/montage

Los tipos mas usados son los siguientes:

reiserfs -> para reiserfs
ext3 -> para ext3
vfat -> para fat32
ntfs -> para ntfs
iso9660 -> para cdroms


Para mas información man mount.



7ºStage:[/b]

Vamos a obtener nuestro stage. El stage es la distribucion gentoo con una cantidad de programas para poder ser usada. Existen 3 stage, cada uno con un mayor numero de programas basicos instalados, en nuestro caso vamos a usar stage1 que es la mas simple. Recordar que hay stage2 y stage3 compiladas para nuestras CPU's pero que usan opciones muy basicas, como veremos en la parte de make.conf(mas adelante) se pueden poner un gran numero de opciones.

El stage lo podremos obtener principalmente de dos formas:

1ª)En nuestra live cd en el directorio /mnt/gentoo/stage. Recordar que el cdrom ya estara montado(se monto cuando cargamos el live cd). Tened en cuenta que tendremos el stage en el livecd, si el live cd que descargamos fue el universal:

# cd /mnt/cdrom/stage
# cp basic-stage1.tar.gz /migentoo    -> el nombre del stage puede variar, pero las palabras stage y basic

# cd /migentoo


2º)Si por lo contrario el livecd que tenemos es el minimal, deberemos de descargarlo de la red, mediante wget y copiarlo en nuestra recien creada particion raiz(hda2 en nuestro ejemplo):

# cd /migentoo
# wget http://gentoo.inode.at/releases/x86/2004.1/stages/x86/stage1-x86-2004.1.tar.bz2


Acontinuación vamos a desempaquetar y descomprimir el stage, con la opcion p para que mantenga los privilegios originales del stage en que fue empaquetado:

# tar -xvjpf basic-stage1.tar.bz2


8ºPreparandonos nuestra partición:[/b]

Montamos la proc del livecd(que se cargo y se creo con el kernel del live-cd) en nuestra gentoo:

# mount -t proc /proc /migentoo/proc

Copiamos los DNS que nos permitiran resolver dominios de internet:

# cp /etc/resolv.conf /migentoo/etc/resolv.conf

Cambiamos nuestra raiz del live-cd por lo nuestra particion donde tenemos la gentoo. Notar que es interesante que leamos el punto 9 antes de pasar a este punto, puesto que los programas a usar una vez hecho el chroot para edicion de texto pueden resultar complejos(nano y vi):

# chroot /migentoo /bin/bash

Cargamos las configuraciones de nuestro usuario, de lo que sera nuestra futura gentoo:

# env-update
# source /etc/profile    -> cargamos la configuración del profile



9ºPortage y emerge:

El portage es el gestor de paquetes de gentoo(perdonarme los expertos, por ser tan poco especifico). La herramienta usada para la gestion de este es el comando emerge.

El portage se encuentra en /usr/portage y su configuración la tenemos en el fichero /etc/make.conf que veremos en el siguiente punto.

El portage esta ordenador por subcategorias, y dentro de cada categoria su correspondiente herramienta/programa.

Los ficheros descargados, que en su mayoria son fuentes se descargan en el fichero /usr/portage/distfiles.

Los comandos mas usados del emerge son los siguientes(un paquete es un programa o agrupacion de estos):

# emerge -s paquete          -> busca en el portage "paquete"
# emerge paquete              -> Instala el paquete
# emerge -p paquete          -> Nos muestra las dependencias que necesitamos instalar para instalar el paquete
# emerge -f paquete           -> Se descarga el programa pero no lo compila
# emerge -u paquete          -> Actualiza el paquete
# emerge -C paquete         -> Desinstala el paquete
# emerge sync                    -> Actualiza la lista de paquetes del portage
# emerge world                  -> Reinstala todo el sistema(No lo uses jamas, por la vida de tu CPU xD)
# emerge -u world              -> Actualiza la distribución
# emerge -b paquete          -> Compila el programa, lo instala y nos genera el binario
# emerge -B paquete          -> Compila el programa y nos genera el binario, usado si tenemos dos maquinas y una es muy potente y la otra no lo es
# emerge -k paquete          -> Instala un paquete binario anteriormente compilado


Muchas de las preguntas acerca de gentoo, va relacionado con el tiempo que tarda en compilar un programa y si realmente puede ser usado para un servidor. Para intentar solventar esta cuestion gentoo permite que una vez compilado un paquete podamos crear el binario optimizado para nuestra plataforma.

Gracias a ello podemos tener nuestros programas optimizados para nuestra plataforma, con lo que, si hubiera algun tipo de fallo y necesitaramos reinstalar un programa unicamente deberiamos de "cargar" el binario que creamos cuando compilamos la primera vez.

# emerge -b paquete


(Y si necesitamos reinstalarlo con poner lo siguiente nos instalara el binario que hemos creado) 

# emerge -k paquete

En gentoo existen unos paquetes, que nos aparecen como[MASKED], esto puede ser por 2ºmotivos:

1º)
El paquete es muy nuevo y se encuentra como "inestable" puesto que no se le ha realizado las suficientes pruebas, esto pasara si no aceptamos la rama inestable de gentoo en el make.conf. Con poner el siguiente comando lo instalaremos:

# ACCEPT_KEYWORDS="~x86" emerge paquete

2º)
El programa tiene algun tipo de error que aún no ha sido solucionado por sus programadores, como por ejemplo un error de seguridad.

Podemos verlo en /usr/portage/profiles/package.mask, si deseamos instalarlo de todas formas, unicamente con comentar en el fichero el paquete sobra. No lo recomiendo nunca.

# vim /usr/portage/profiles/package.mask
# emerge paquete


El emerge nos muestra la version de la aplicación que se dispone actualmente, pero si queremos instalar una versión anterior o posterior a la que nso ofrece, deberemos de ir al portage y emergerla. Un ejemplo seria el siguiente:

# emerge -s gentoo-source
Searching...   
[ Results for search key : gentoo-source ]
[ Applications found : 1 ]

*  sys-kernel/gentoo-sources
      Latest version available: 2.4.26_pre6
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 32,178 kB
      Homepage:    http://www.kernel.org/ http://www.gentoo.org/
      Description: Full sources for the Gentoo Kernel.

      License:     GPL-2

# cd /usr/portage/sys-kernel/gentoo-sources/
# ls

ChangeLog                         gentoo-sources-2.4.22-r3.ebuild    gentoo-sources-2.4.26_pre5.ebuild
files                             gentoo-sources-2.4.22-r5.ebuild    gentoo-sources-2.4.26_pre6.ebuild
gentoo-sources-2.4.19-r13.ebuild  gentoo-sources-2.4.22-r9.ebuild    Manifest
gentoo-sources-2.4.20-r16.ebuild  gentoo-sources-2.4.25-r2.ebuild    metadata.xml
gentoo-sources-2.4.20-r7.ebuild   gentoo-sources-2.4.26_pre3.ebuild

# emerge gentoo-sources-2.4.25-r2.ebuild


Podriamos haber emergido cualquiera de las versiones que aparecian con el .ebuild, en nuestro caso instalariamos un kernel mas antiguo que el que nos ofrecia el emerge.

Esto es algo unico de gentoo, puesto que en la mayoria de distribuciones solo te ofrecen una version del programa.

Existe una aplicación que nos permite mostrar el tiempo que tardamos en compilar un programa. Realmente es un script del log del portage, es como para hacernos a la idea de lo que puede tardar una apliación en compilar, el programa se llama genlop:

# emerge genlop
# genlop -t paquete


Para mas información acerca de las posibilidades que tiene genlop: genlop -help.

Una nota importante, mirando para un futuro, son las actualizaciones en gentoo, una vez actualicemos gentoo mediante las siguientes dos instrucciones:

# emerge sync         
# emerge -u world


Puede ocurrir que hayamos actualizado paquetes que poseen uno o mas ficheros de configuración. Gentoo, a diferiencia de otras distribuciones, no nos va a escribir encima de esos ficheros, sino que usaremos una utilidad/script que nos permite el control de estas actualizaciones, esta utilidad/script es:

# etc-update

Una vez lo ejecutemos nos apareceran todos los ficheros de configuración que pueden ser modificados precedidos de un numero), y al final el siguiente codigo:

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):


Lo que tendremos que hacer es introducir el numero) (solo el numero sin signo delante) del fichero a configurar, y entonces nos aparecera un 2º menu de configuración, donde se nos permite hacer 3 cosas: hacer una copia de seguridad del actual y reescribir el fichero, o reescribir el fichero sin hacer copia de seguridad, o no modificar el fichero y dejar nuestro antiguo fichero de configuración.


10ºModificamos el fichero make.conf:

El fichero /etc/make.conf es el fichero de configuración del portage, donde le pasamos los flags de la compilación, los USE o opciones/modulos con que queremos que nos instale el programa. Asi como configuración de nuestro portage.

El fichero make.conf comienza con un USE="opcion1 opcion2 opcion 3...", esto es una de las cosas que hace que gentoo sea especial, gracias a esto, cuando compilamos una aplicación cargamos lo que nos interesa unicamente, asi como cargamos modulos que de forma predeterminada no estan accesibles.

Un ejemplo seria el soporte de sonido. El soporte tradicional OSS va a ser substituido por el ALSA, pero muchas de las aplicaciones compiladas(binarios) y lista para ser instaladas, siguen sin tener soporte de ALSA pero si de OSS. Pues introduciendo en el USE"alsa -oss" nos compilara los programas con soporte alsa y no con soporte oss.

Como hemos podido apreciar introduciendo el caracter "-" delante de la opcion, hacemos lo contrario, es decir, le decimos que no tenga esa opción. Esto es muy usado por ejemplo por los amante de gnome que no quieren tener librerias de kde puesto que no las van a usar y son de gran tamaño ponen la opcion "-kde".

Acontinuación voy a poner un conjunto de USE. No estaran todos pero si los mas usados:

->dvdr y cdr para poder grabar dvd y cdrom respectivamente
->vcd,dvd para reproducir peliculas para video cd o video dvd
->mmx, sse y 3dnow son para optimizacion para usar estas instrucciones, causaban bastantes fallos(Especialmente mmx)
->x,opengl,dga para el motor de las X(entorno grafico), si tienes tarjeta 3dfx inclullelo tambien
->xv,fbcon, directfbi,gpm  para consola(framebuffer,raton, peliculas  y demas)
->oss o arts o alsa para el sonido dependiendo de tu "eleccion de sonido"
->gphoto2 por si tienes camara digital
->kde,qt y arts por si usas kde(si no lo vas a usar con un simple -kde desactivaras el soporte)
->gnome, gtk, bonobo, gbm gtkhtml por si usas gnome(si no lo vas a usar con un simple -gnome desactivaras el soporte)
->aalib,ncurses,sd1 y svga librerias graficas en consola(recomendado)
->gif,jpeg,png y tiffoporte formatos
->avi,mpeg,encode y quicktime librerias de video(si quieres ver vidios o codificar formatos multimedia)
->java,flash,perl,python,slang,guile,libg++ librerias de programacion(permite el soporte a ciertos lenguajes dep rogramacion)
->pam,ssl,crypt seguridad(directamente ya tardas en ponerlas)
->spell,truetype,pdflib,tetex para fuentes correcion ortografica etc...
->nls soporte para mas de un idioma
->samba soporte para samba(para windows)
->tcpd,pam,ssl directivas de seguridad(obligado)


Existe una utilidad que facilita la elección de los USE, asi como una pequeña expliación de la función de cada USE, esta utilidad es ufed:

# emerge ufed
# ufed


Ahora elijiremos la plataforma de nuestro sistema gentoo, es decir:

->i386       #Para los 386
->i486       #Para los 486
->i586       #Para los Pentium o derivados
->i686       #Para pentium Pro en adelante(Pentium 2,3,4, K6, K6-2, K6-3, K7 etc...).
->PowerPC    #Para los MAC

CHOST="i386-pc-linux-gnu"
CHOST="i486-pc-linux-gnu"
CHOST="i586-pc-linux-gnu"
CHOST="i686-pc-linux-gnu"
CHOST="powerpc-unknown-linux-gnu"


Entonces vienen los Flags de compilación, con lo que obtendremos un pequeño aumento de velocidad, existen 2 variables CFLAGS y CXXFLAGS, los flags usados para estos dos son iguales por lo que con ponerlo en uno bastara.

Aqui teneis una lista de Flags para cada tipo de procesadores, esta lista no es de las mas optimizadas que ahi, pero estar seguros que no os dara ningun tipo de problema:

386 (Intel)
CFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"

i486 (Intel)
CFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"

Pentium 1 (Intel)
CFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"

Pentium MMX (Intel)
CFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"

Pentium PRO (Intel)
CFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"

Pentium II (Intel)
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"

CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"

Celeron (Mendocino)
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"

Pentium III (Intel)
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"

Celeron (Coppermine)
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"

P4A o P4Celeron(Willamette)
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"

Pentium 4 (Intel)
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"

Eden C3/Ezra (Via)
CFLAGS="-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer"

K6 (AMD)
CFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"

K6-2 (AMD)
CFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"

K6-3 (AMD)
CFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"

Athlon(AMD)
CFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"

Athlon-tbird
CFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"

Athlon XP (AMD)

CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"

Athlon MP (AMD)
CFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"

603/604 (PowerPC)
CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"

750/G3 (PowerPC)
CFLAGS="-mcpu=750 -O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-mcpu=750 -O3 -pipe -fomit-frame-pointer -fsigned-char"

7400/G4 (PowerPC)
CFLAGS="-mcpu=7400 -O3 -pipe -fomit-frame-pointer -fsigned-char -maltivec"
CXXFLAGS="-mcpu=7400 -O3 -pipe -fomit-frame-pointer -fsigned-char -maltivec"


Al fichero make.conf se le puede añadir tambien un conjunto de variables, que estan relacionadas con el portage de gentoo:

->Acepta paquetes de la rama inestable, si no se quiere con comentar la linia sobra(comentar es poner # delante del texto):
ACCEPT_KEYWORDS="~x86"
->Directorio Temporal del Portage, /var/tmp es el predeterminado:
PORTAGE_TMPDIR=/var/tmp
->Directorio del Portage, /usr/portage es el predeterminado:
PORTDIR=/usr/portage
->Directorio de descarga de los paquetes del portage, es decir donde descargamos las fuentes de los programas:
DISTDIR=${PORTDIR}/distfiles
->Binarios compilados para nuestra maquina, es decir, donde almacenamos los binarios que hemos compilado:
PKGDIR=${PORTDIR}/packages
->Limpieza de paquetes viejos del portage, recomendado poner yes:
AUTOCLEAN="yes"

Un ejemplo de fichero /etc/make.conf para un athlon XP(es mi fichero de configuración) seria el siguiente:

USE="dvdr vcd dvd cdr x opengl xv fbcon directfb gpm gphoto2 alsa kde qt gtk aalib ncurses sd1 -svga gif jpeg png tiff avi mpeg quicktime encode flash python perl libg++ pam ssl crypt mozillai spell truetype pdflib tetex nls samba -arts mmx tcpd pam ssl"

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -m3dnow -msse -mfpmath=sse -mmmx -O3 -pipe -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4 -maccumulate-outgoing-args -ffast-math -fprefetch-loop-arrays"

CXXFLAGS="${CFLAGS}"

ACCEPT_KEYWORDS="~x86"
PORTAGE_TMPDIR=/var/tmp
PORTDIR=/usr/portage
DISTDIR=${PORTDIR}/distfiles
PKGDIR=${PORTDIR}/packages
AUTOCLEAN="yes"



11ºStage 2:

Actualizamos la lista de paquetes de nuestro portage, en nuestro caso como es la primera vez, la generamos nueva:

# emerge sync

Vamos al directorio del portage y ejecutamos el script bootstrap el cual tiene una lista de los programas basicos que componene el stage 2:

# cd /usr/portage
# scripts/bootstrap.sh


Nota: vete a darte una vuelta... que va pa rato


12ºStage3:

Acontinuación instalaremos el stage3 y terminaremos con la instalación basica de gentoo!:

# emerge system

Es algo mas rapido que el stage2 pero tampoco excesivamente mas... asi que...

Establecemos la hora de nuestra gentoo de la siguiente forma: ln -sf /usr/share/zoneinfo/path/to/timezoneinfo /etc/localtime, para los españoles seria asi:

# ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime


Y por ultimo introduciremos nuestro password de root, aqui poner importancia enque sea un password o clave que este compuesto tanto por mayusculas como minusculas, asi como con numeros y con signos, notar que  gentoo usa MD5/FreeBSD lo que es un gran abance frente al obsoleto DES. Un pequeño truco es escribir una frase que nos acordemos y cambiar las vocales por numeros, siendo a-> 4, e->3, i->1,o->0 u->w y la primera letra y ultima de una palabra, si no es un numero o "una vocal cambiada" con el truco anteriormente citado, ponerla en mayusculas y las demas letras en minusculas.
Por ejemplo:

-> mi camion es grande     
-> m1 c4m10n 3s gr4nd3    *No se puede dejar espacios en blanco
-> m1-c4m10n-3s-gr4nd3
-> M1-C4m10N-3S-Gr4nd3


Como veis de una frase tonta obtenemos una contraseña de cierta dificultad para ser descifrada, para mas informacion recomendaria una buena guia de seguridad. El comando para cambiar el password seria este:

# passwd

Si aparece un mensage de este estilo BAD PASSWORD: it is based on a dictionary word, es que no usasteis un passwd fuerte(seguro), aunque si que acepte que lo introduzcais, el programa os advierte de la mala idea de usar una contraseña de ese tipo.


13ºCompilación de nuestro kernel:

Gentoo dispone de tanto kernels 2.4.2X, como kernels 2.6.X, asi como pequeñas kernels donde se han cogido al kernel vanilla(kernel basico sin ningun tipo de modificación) y se le ha añadido un conjunto de parches. En principio estos kernels funcionana mejor puesto que son iguales que al tradicional y aparte le han añadido varios parches que nos pueden ser utiles como el bootsplash. El problema que tienen es que los kernel gentoo suelen ir unas revisiones de versiones o una version como mucho por detras de los oficiales, es decir si el oficial es el 2.6.6 puede darse que el gentoo sea el 2.6.5.rc3

2.6 de gentoo     -> sys-kernel/gentoo-dev-sources
2.4 de gentoo     -> sys-kernel/vanilla-sources
2.6 basico          -> sys-kernel/development-sources
2.4 basico          -> sys-kernel/vanilla-sources

Ahora introducimos el que mas nos guste, yo recomiendo el 2.6 el que queramos, por ejemplo el de gentoo:

# emerge gentoo-dev-sources

Gentoo dispone de una utilidad que se encarga de configurarnos el kernel de muy buena forma, y se encarga de realizar todos los pasos para ello. Esta herramienta se llama  sys-kernel/genkernel, y para instalarla sobra con poner:

# emerge genkernel

En mi caso no la usare ya que, la use una vez, y me dio mucho quebrarero de cabeza puesto que me metia modulos donde no debia y me modifico varias cosas. Yo soy muy raro para mis configuraciones y si las cosas no estan donde deben de estar me pongo nervioso. Pero si sois iniciados y no quereis poneros a tocar kernel es una buena opción usarlo.

Pero por si lo contrario nos disponemos a comenzar la configuracion y compilación del kernel deberemos de hacer los siguientes pasos, una vez emergido el kernel.

Accedemos al directorio donde se suele encontrar las fuentes del kernel(/usr/src/) en el cual tendremos o deberemos de crear un link o enlace dinamico("acceso directo" de los windows) de las sources del kernel que estemos usando, en nuestro caso, al ser recien instalado solo tendremos un directorio.

# ls /usr/src
linux-2.6.5-gentoo-r1
# ln -s /usr/src/linux-2.6.5-gentoo-r1 /usr/src/linux    *(si tubieramos el enlace no haria falta este paso)
# cd /usr/src/linux


Como vemos en mi caso tenemos el kernel de gentoo 2.6.5.rc1 pero no teniamos el link por lo que lo hemos creado. Acontinuación eligiremos el mejor menu para configurar nuestro kernel. Existen 3º tipos, el mas simple es el config, el siguiente es menuconfig el cual usa las ncurses y es muy facil de usar(recomiendo este) y por ultimo el xconfig que se usa en las X(motor de los entornos graficos de linux), con la version 2.6 ha sufrido una mejora visual y faciliyad la configuración Al tener gentoo recien instalado no disponemos todavía de las X por lo que la mejor opcion seria el menuconfig.

# make config
o
# make menuconfig
o
# make xconfig

Ahora viene la parte mas dificil o compleja del kernel que es la configuración de este. Voy a poner unas opciones basicas para un usuario medio, nada especifico, si alguien quiere algo mas especifico que se lea cualquier manual que ahi del kernel. No es prioridad en la instalación de Linux Gentoo la configuración de un kernel y acordaros que existe el genkernel para no tener que entrar aqui.

Pondre unicamente las opciones escogidas. Puede que existen opciones que no esten correctamente, espero mejorarlo mas adelante. Puede ocurrir que tengais opciones identicas ya que, esto evoluciona, el kernel usado para el ejemplo es el 2.5.6 rc1 gentoo-dev-source:


Code maturity level options  --->
[*] Prompt for development and/or incomplete code/drivers                                   
                [*] Select only drivers expected to compile cleanly                                       
[*] Select only drivers that don't need compile-time external firmware
General setup  --->
[*] Support for paging of anonymous memory (swap)                                   
[*] System V IPC
[*] Sysctl support                                                                 
[*] Support for hot-pluggable devices                                             
[*] Kernel .config support                                                         
[*] Enable access to .config through /proc/config.gz
Loadable module support  --->
[*] Enable loadable module support                                           
[*] Module unloading                                                       
[*] Forced module unloading
[*] Automatic kernel module loading
Processor type and features  --->
Subarchitecture Type (PC-compatible)  --->
(X) PC-compatible
Processor family (Athlon/Duron/K7)  --->   (Escoger el vuestro en mi caso es un AMD XP-M por eso escogi esa opción).
[*] Generic x86 support
[ ] Symmetric multi-processing support  (Seleccionar esta opción si disponemos de mas de 1 procesador).
[*] Local APIC support on uniprocessors (Si tenemos mas de un procesador no seleccionarla)
[*] Machine Check Exception                                                               
   <*>   Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
   [ ]   check for P4 thermal throttling interrupt  (Si tenemos un P4 escogerlo)
<*> /dev/cpu/microcode - Intel IA32 CPU microcode support
High Memory Support (4GB)  ---> 
( ) off    (Seleccionar esta opcion si disponemos de menos de 1GB de memoria ram)
(X) 4GB    (Seleccionar esta opcion si disponemos de 1GB a 4GB de memoria ram)
[*] MTRR (Memory Type Range Register) support
Power management options (ACPI, APM)  --->
[*] Power Management support
ACPI (Advanced Configuration and Power Interface) Support  --->
[*] ACPI Support                                                         
[*]   Sleep States (EXPERIMENTAL)                                       
<*>   AC Adapter                                                       
<*>   Battery                                                           
<*>   Button                                                           
<*>   Fan                                                               
<*>   Processor                                                         
<*>   Thermal Zone
APM (Advanced Power Management) BIOS Support  --->
<*> APM (Advanced Power Management) BIOS support
CPU Frequency scaling  --->   (Si la estamos instalando en un portatil esta opcion es importantisima para la bateria)
[*] CPU Frequency scaling
<M>   'powersave' governor
<*>   'userspace' governor for userspace frequency scaling
<*>   CPU frequency table helpers
<*> ACPI Processor P-States drive
---   CPUFreq processor drivers
<*> ACPI Processor P-States drive
(Aqui escogemos nuestro procesador mobile)
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
[*] PCI support
[*] Legacy /proc/pci interface

[*] PCI device name database
[ ] ISA support  (Si disponemos de tarjeta ISA(muy antiguas) o para la deteccion de algunos sensores de temperatura)
PCMCIA/CardBus support  --->  (Si disponemos de PCMCIA dar un vistazo a esto)
Executable file formats  --->
[*] Kernel support for ELF binaries
<*> Kernel support for a.out and ECOFF binaries
<*> Kernel support for MISC binaries
Device Drivers  --->     (Esta zona es muy facil de entender, aqui esta donde dareis soporte a todo vuestro hardware...)
Parallel port support  ---> (Entrar aqui si usar el puerto paralelo, el que antiguamente se usaba para impresora)
Block devices  --->
<*> Normal floppy disk support   
<*> Loopback device support
<*>   Cryptoloop Support
<*> RAM disk support
(8192) Default RAM disk size
[*]   Initial RAM disk (initrd) support
[*] Support for Large Block Devices
ATA/ATAPI/MFM/RLL support  --->   (A diferiencia del 2.4, no ahi que emular el ide como scsi para grabar)
<*> ATA/ATAPI/MFM/RLL support
<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
<*>   Include IDE/ATA-2 DISK support   (Si disponemos de disco duro ide)
[*]     Use multi-mode by default
<*>     Include IDE/ATAPI CDROM support (Si disponemos de cdrom/dvd ide)
[*]     IDE Taskfile Access
[*]     IDE Taskfile IO (EXPERIMENTAL)
<*>     generic/default IDE chipset support
[*]     PCI IDE chipset support
[*]     Generic PCI IDE Chipset Support
[*]     Generic PCI bus-master DMA support
[*]     Use PCI DMA by default when available   (Debajo de esta opcion ahi un gran numero de chipsets, selecciona el tuyo)
<*>         AMD and nVidia IDE support  (Selecciono el mio, ya que tengo una nvidia nforce2, vosotros seleccionar el vuestro)
< >         Intel PIIXn chipsets support (Si teneis un chipset(northbridge) que de intel seleccionar esta opción
SCSI device support  --->
--- SCSI device support
[*]   legacy /proc/scsi/ support
<*>   SCSI disk support   (Si tenemos un disco duro scsi o s-ata)
< >   SCSI CDROM support  (Si disponemos de un cdrom/dvd scsi)
<*>   SCSI generic support
SCSI low-level drivers  --->
[*] Serial ATA (SATA) support  (Seleccionamos si tenemos s-ata, y debajo nuestra controladora s-ata)
<M>   Silicon Image SATA support  (Yo selecciono este porque mi controladora es esa, de una abit an7)
Multi-device support (RAID and LVM)  --->  (Si queremos poner algun tipo de RAID esta es nuestra opción)
IEEE 1394 (FireWire) support  --->   (Si disponemos de un firewire)
<*> IEEE 1394 (FireWire) support
<M>   OHCI-1394 support  (Por lo general sera este vuestro modulo firewire)
Networking support  --->
[*] Networking support
Networking options  --->
<*> Packet socket
<*> Unix domain sockets
[*] TCP/IP networking

[*]   IP: multicasting
[*]   IP: advanced router
[*] Network packet filtering (replaces ipchains)  --->
--- Network packet filtering (replaces ipchains)
[*]   Network packet filtering debugging
IP: Netfilter Configuration  --->
<*> Connection tracking (required for masq/NAT)
<M> IRC protocol support
<*> IP tables support (required for filtering/masq/NAT)
<M> limit match support
<M>   Packet type match support
<M> Connection state match support
<M> Packet filtering
<M> Full NAT
<M> MASQUERADE target support
<M> REDIRECT target support
[*] NAT of local connections (READ HELP)
[*]   Network device support
Ethernet (10 or 100Mbit)  --->  (Si disponemos de tarjeta de red de 10 a 100mbit, las convencionales)
[*] Ethernet (10 or 100Mbit)
<*>   Generic Media Independent Interface device support
[*] EISA, VLB, PCI and on board controllers   (Acontinuación seleccionamos nuestra tarjeta de red)
<M>   Reverse Engineered nForce Ethernet support (EXPERIMENTAL) (Esta es la integrada en placa)
<M>   RealTek RTL-8139 PCI Fast Ethernet Adapter support (Y esta es la PCI)
Ethernet (1000 Mbit)  --->   (Para tarjetas de red Gigalan, entramos y elegimos la nuestra)
Input device support  --->
(1280) Horizontal screen resolution (En mi caso es la resolucion que tengo, 1280x1024 si la vuestra es otra cambiarla)
(1024) Vertical screen resolution
[*] Mice
<*>   PS/2 mouse
Character devices  --->
[*] Legacy (BSD) PTY support
(256) Maximum number of legacy PTY in use
<*> Intel/AMD/VIA HW Random Number Generator support
<*> /dev/nvram support
<*> Enhanced Real Time Clock Support
<*> /dev/agpgart (AGP Support)   (Acontinuacion salen un conjunto de controladoras agp, seleccionamos la nuestra)
<*>  NVIDIA nForce/nForce2 chipset support  (Esta es la mia :))
[ ] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) (Si teneis una tarjeta mencionada acontinuacion seleccionar esta opcion)
Multimedia devices  --->
Video For Linux  --->  (Seleccionar el chipset de vuestra tarjeta de TV)
<M> BT848 Video For Linux
Graphics support  --->  (Para Frame Buffer)
[*] Support for frame buffer devices
<*>   VGA 16-color graphics support
[*]   VESA VGA graphics support  (Si dispones de algunas de las tarejtas de abajo seleccionala)
<*> Virtual Frame Buffer support (ONLY FOR TESTING!)
Console display driver support  --->
--- VGA text console
[*]   Video mode selection support
<*> Framebuffer Console support
Logo configuration  --->
[*] Bootup logo
[*] Standard 16-color Linux logo
Graphics support  --->  (Para Bootsplash, los gentoo-sources llevan ya el parche, si usastes el basico deberas parchearlo)
[*] Support for frame buffer devices
[*]   VESA VGA graphics support 
Console display driver support  --->
--- VGA text console
[*]   Video mode selection support
<*> Framebuffer Console support
Logo configuration  --->
[*] Bootup logo
[*] Standard 16-color Linux logo
Bootsplash configuration  --->
[*] Bootup splash screen
Sound  --->
<*> Sound card support 
  Advanced Linux Sound Architecture  --->
  <*> Advanced Linux Sound Architecture
<M> Sequencer support
<*> OSS Mixer API
<*> OSS PCM (digital audio) API
[*] OSS Sequencer API
<M> RTC Timer support
PCI devices  --->  (Aqui seleccionamos nuestra tarjeta de sonido)
<M> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111 (esta es la mia, una soundstorm)
USB support  --->
<*> Support for Host-side USB
[*]   USB device filesystem
---   USB Host Controller Drivers
<M>   EHCI HCD (USB 2.0) support  (Soporte para USB 2.0)
<M>   OHCI HCD support   (Esta es mi controladora USB 1.0(nforce2), para ver la tuya #  cat /proc/pci | grep USB)
< >   UHCI HCD (most Intel and VIA) support  (La mayoria de controladoras usb 1.0 usan esta)
<M>   USB Printer support  (Para impresoras USB)
<M>   USB Mass Storage suppor   (Para dispositivos de escritura lectura, como una camara digital)
[*]   Microtech/ZiO! CompactFlash/SmartMedia support  (La mayoria de camaras digitales usan este dispositivo)
---   USB Human Interface Devices (HID)                             
      <*>   USB Human Interface Device (full HID) support                 
     [*] HID input layer support (NEW)                                               
     [*] /dev/hiddev raw HID device support
(Existen un monton mas de dispositivos USB, buscarlo en este punto y elegirlo como M)
File systems  --->                  (Si vemos algun formato que nos vayamos a usar seleccionarlo tambien)
<*> Second extended fs support
<M> Ext3 journalling file system support   (Si alguna de nuestras particiones es ext3 escogerla como * y no como M)
[*]   Ext3 extended attributes
<*> Reiserfs support            (Yo uso reiserfs, si vosotros no lo usais ponerla como M)
[*]   Stats in /proc/fs/reiserfs
<M> JFS filesystem support
<M> XFS filesystem support
<*> ROM file system support
CD-ROM/DVD Filesystems  --->
<*> ISO 9660 CDROM file system support
[*]   Microsoft Joliet CDROM extensions
[*]   Transparent decompression extension
<*> UDF file system support
DOS/FAT/NT Filesystems  --->
<M> DOS FAT fs support
<M> MSDOS fs support
<M> VFAT (Windows-95) fs support
<M> NTFS file system support
[*] NTFS write support  (Ojito con esta opción que las grabaciones en ntfs desde linux pueden dañar una partición)
Pseudo filesystems  --->
[*] /proc file system support
[*] /dev file system support (OBSOLETE)
[*] /dev/pts Extended Attributes
[*] Virtual memory file system support (former shm fs)
<*> Supermount removable media support
Network File Systems  --->
<M> NFS file system support
<M> NFS server support
<M> SMB file system support (to mount Windows shares etc.)
Native Language Support  --->
--- Base native language support
(iso8859-15) Default NLS Option (Apretando intro podemos poner la que nosotros creamos)
<*>   NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
Cryptographic options  --->
<M>   MD5 digest algorithm
<*>   Deflate compression algorithm


       
Una vez compilado deberemos de guardar nuestra configuración en la opcion de: Save Configuration to an Alternate File, con el nombre que nosotros deseemos. Y acontinuación compilaremos el kernel y sus modulos, asi como copiaremos el kernel compilado en el directorio boot preparado para ser cargado.

# make bzImage
# make modules
# make modules_install
# cp arch/i386/boot/bzImage /boot


Acontinuacion tendriamos que editar el fichero /etc/modules.autoload y poner los modulos necesarios que queremos que se carguen en el arranque del kernel. Notar que solo ahi que poner el nombre y no modprobe ni insmod:

# vim /etc/modules.autoload

Un ejemplo de fichero modules.autoload seria este:

# cat /etc/modules.autoload
usb-storage
nvidia
8139too
iptable_filter
iptable_mangle
iptable_nat
ip_conntrack_irc
ipt_limit
ipt_state
ip_nat_irc
#


Existe una utilidad que tiene los modulos ordenador por categoria, ademas de un explicación sobre cada uno de ellos que nos puede facilitar la tarea ciertamente. Esta utilidad es muy usada sobretodo por la gente que pasa de Debian a Gentoo, hacer mención de que la utilidad esta aún un poco verde:

# emerge modconf
# modconf


Si esta herramienta no funcionara correctamente, puesto que en ocasiones ocurre, una buena opción para editar el fichero seria usar la opcion -l del modprobe para listar todos los posibles modulos que podemos cargar:

# modprobe -l

Ahora deberiamos de cargar nuestro sistema de arranque. Existen principalmente dos, LiLO y GRUB, en mi caso siempre he usado LILO por lo que usaremos este, puesto que me parece mas facil de entender. No os preocupeis si no habeis entendido muy bien lo que haces con el LILO puesto que en el siguiente punto se explica muy bien.

# emerge lilo
# lilo


Y por fin ya hemos terminado, veis como no es tanto como parece ;).

..sR. aDiKtO..

14ºLILO:

Lilo o linux loader es el encargado dearrancar el sistema operativo linux, ademas de soportar el arranque otros sistemas operativos.
Lilo tiene su configuración en el ficher /etc/lilo.conf, tienes un fichero de ejemplo en el /etc/lilo.conf.example. Acontinuación expondre un ejemplo de fichero lilo.conf:

# vim /etc/lilo.conf

lba32      #Permite poder cargar kernel en discos duros de "gran tamaño"(gran numero de cilindros, los actuales).
boot = /dev/hda    #Le decimos de que disco duro leeremos el mbr(master boot record), es decir, donde tenemos cargado el lilo
map =/boot/System.map            #Establece la ubicación del fichero de mapeado(generado por lilo)
install = /boot/boot-menu.b       #Instala el fichero especificado como nuevo sector de arranque.
menu-scheme=Wb                     #Local de entorno
prompt                   #Permite tener una "mini-shell" donde introducimos por comando el "label" de la particion a cargar
delay=20          #Una vez cargado el lilo, espera 20 segundos, si no aprietas nada carga el kernel que tenga como default
timeout=150              #Tienes 150 segundos para elegir, si no eliges pasado 150 segundos arrancara el kernel default
default=gentoo2.6     #Indicamos que kernel queremos cargar como default
    image=/boot/bzImage           #Indicamos donde se encuentra el kernel que queremos cargar(el que compilamos nosotros)
        root=/dev/hda2                #Aqui le decimos cual es la partición root(/) de nuestra distribución
        vga=normal                     #Aqui como queremos que arranque(800x600, 1024x768 y con que profundidad de color)
        label=gentoo2.6    #Introducimos el nombre que mostrara a la hora de elegir el arranque(en el ej: gentoo2.6)
        read-only
       
    image=/boot/rescue             #Aqui tenemos como seria para meter un segundo kernel en nuestro sistema
        root=/dev/hda2
        vga=normal
        label=Linuxrescue
        read-only
       
    other=/dev/hda1                 #Si tubieramos otro sistema operativo que no fuera windows
        label=Ventanukos
        table=/dev/hda


#


Los valores de vga pueden ser los siguientes:

Normal VGA console:

  vga = normal

VESA framebuffer console(Se puede poner de 2 formas):


              640x480  800x600  1024x768
256             771     771       773
32k             784     787       790
64k             785     788       791

            640x480  800x600  1024x768 1280x1024
256          0x301     0x303   0x305    0x307   
32k          0x310     0x313   0x316    0x319   
64k          0x311     0x314   0x317    0x31A   
16M          0x312     0x315   0x318    0x31B


Si tubieramos otro disco duro, y quisieramos que se arrancara con el lilo, unicamente deberiamos especificarle que particion sera la raiz, por ejemplo si nuestro disco duro fuera el hdb y la partición raiz fuera la hdb1 sera asi:

    image=/boot/mikernel
        root=/dev/hdb1
        vga=normal
        label=otrohd
        read-only

   
Pero si la otra partición fuera de otro sistema operativo, como pudiera ser un windows deberiamos de añadir 2 opciones con lo que quedaria de la siguiente forma:

    other=/dev/hda1         
        label=Ventanukos
        table=/dev/hda
        map-drive = 0x80
        to = 0x81

   
Para cargar lilo en el mbr sobrara con llamar al programa(Recuerda que si no lo emergistes en la creación del kernel deberas de hacerlo ahora):

# emerge lilo           *(si no lo hicistes al compilar el kernel)
# lilo


Y nos apareceran los nucleos cargados, asi como si cometemos algun tipo de error que produza que no arranque. Para mas información man lilo.

15ºRunlevels en Gentoo:

Los runlevels en gentoo siguen otro sistema distinto al acostumbrado con los linux tradicionales. Los runlevels en gentoo se dividen en:

-> boot                       #Programas que se cargan en el arranque seguido del kernel ej: alsa
-> default                    #Programas que se cargan una vez cargado el kernel y toda la distribucion, justo antes de proporcionarte una prompt de login. ej: apache
-> nonetwork              #Programas que se cargan antes de la conexion a inet
-> single                      #Desconozco su uso Ò.Ó!


Se encuentran en /etc/runlevels. Los programas se cargan usando la siguiente sintaxis: rc-update add programa/demonio runlevel siendo runlevel cualquiera de los 4 expuestos anteriormente y programa la implementación de programa que se encuentra en /etc/init.d/. Por ejemplo para el apache2:

# rc-update add apache2 default
* apache2 added to runlevel default
* Caching service dependencies...
* rc-update complete.
#


Para eliminarlos pondremos unicamente: rc-update dell programa/demonio, sin especificar el runlevel, puesto que el rc-update ya lo busca en los 4 posibles, un ejemplo con el apache2 seria:

# rc-update del apache2
* apache2 removed from the following runlevels: default
* Caching service dependencies...
* rc-update complete.
#


Al cargarlos deben de tener una implementación en en /etc/init.d/. Si queremos cargar un fichero con un script de shell que no este implementado en el /etc/init.d deberemos de usar los ficheros local.start y local.stop que se encuentran en /etc/conf.d/

Para ver todos los posibles programas(Servicios) que tenemos arrancados, asi como los que disponemos pero no los tenemos asignados a ningun runlevel:

# rc-status -a

Como habreis visto, cuando instalais un programa que necesita de los runlevels, para la ejecución de un demonio/servicio/etc se genera su pertinente implementación en el directorio /etc/init.d/ pero ademas existen unos pequeños scripts localizados en /etc/conf.d que deberian de ser usados, para por ejemplo el uso de iptables. A mi gusto esta es la zona donde gentoo peca mas de falta de "edad"(junto con el emerge).

Recordar que muchos de los programas que cargamos en los runlevels son demonios/servicios. Estos servicios se cargaran automaticamente al haber sido añadidos con el rc-update al runlevel. Si queremos pararlos, reiniciarlos o volverlos a arrancar una vez parados, un ejemplo seria con el ssh, apache, proftpd etc. se usa los siguientes comandos:

# /etc/init.d/servicio stop         ->Detiene la ejecución
# /etc/init.d/servicio start        ->Arranca de nuevo el demonio/servicio, si ya esta arrancado dara error
# /etc/init.d/servicio restart    ->Rearranca el servicio, es equivalente a hacer un stop y un start


Un ejemplo de lo anteriormente citado seria este:

# /etc/init.d/apache2 stop
* Stopping apache2...                                                   [ ok ]
DarkTemplar root # /etc/init.d/apache2 start
* Starting apache2...                                                   [ ok ]
DarkTemplar root # /etc/init.d/apache2 restart
* Stopping apache2...                                                   [ ok ]
* Starting apache2...                                                   [ ok ]
#


16ºCreación de usuarios:

La creación de usuarios debe de ser obligatorio aunque solo usemos el ordenador una persona. El usurio ROOT solo debe de usarse cuando tengamos la necesidad de configurar/administrar nuestro sistema, puede parecer algo engorroso, pero os dareis cuenta que siendo usuarios normales si cometeis algun tipo de error,  si no soys root, es deificil que dañeis el sistema, ademas que no siendo root evitais problemas como pudean ser: troyanos, gusanos,etc etc

Para la creación de ficheros podemos hacerlo a "mano" usando los comandos de:

# adduser nombre_usuario
# passwd nombre_usuario       
# mkdir /home/nombre_usuario


Acontinuación debemos de comprobar si el usuario esta creado, y verificar que fue correctamente. Para ello editaremos el fichero /etc/passwd y verificaremos que el usuario sigue una estructura asi(se encontrara en la ultima linea): nombre_usuario:x:1000:100::/home/nombre_usuario:/bin/bash (el valor 1000 es el identificador del usuario, puede ser 1000 o superior).

# cat /etc/passwd | grep usuario   
usuario:x:1000:100:,,,:/home/usuario:/bin/bash
#


Ahora deberemos de agregar el usuario a los grupos que nos interese añadir, es importante, remarcar que ahi un grupo en gentoo(y en otras distribuciones de linux/unix muy seguras) que tienen el grupo wheel el cual es necesario tener a nuestro usuario si queremos que sea capaz de usar el comando su - para tener acceso como root, sin tener que abrir una consola nueva. Los grupos que seria logico añadir al usuario serian: wheel, audio, cdrom, games, cdrw, usb. Para añadir usuarios seria: grupo:usuario1,usuario2,usuario3.... Un ejemplo:

cat /etc/group | grep wheel
wheel::10:root,usuario
#


Gentoo implementa un script para la edición facil y rapida de usuarios. Se llama superadduser. Yo os lo recomiendo puesto que os ahorrara tiempo. el script se encuentra en /usr/sbin/superadduser. Vamos a emergerlo:

# emerge superadduser

Un ejemplo de uso sera el siguiente, recordar que al preguntarnos siempre aparece entre [ ] la opcion default y que con apretar "intro", sin introducir nada, te toma la opción default si la tiene o simplemente no te introduce nada en esa opción. Un ejemplo es el siguiente:

# superadduser

Login name for new user []: nombre

User ID ('UID') [ defaults to next available ]: (enter)               *(pulsar intro, dejamos la opcion predeterminada o default)

Initial group [ users ]: (enter)

Additional groups (comma separated) []: wheel,audio,cdrom,games,cdrw,usb


Home directory [ /home/nombre ]  (enter)

Shell [ /bin/bash ]  (enter)

Expiry date (YYYY-MM-DD) []:  (enter)

New account will be created as follows:

---------------------------------------
Login name.......:  nombre
UID..............:  [ Next available ]
Initial group....:  users
Additional groups:  wheel,audio,cdrom,games,cdrw,usb
Home directory...:  /home/nombre
Shell............:  /bin/bash
Expiry date......:  [ Never ]

This is it... if you want to bail out, hit Control-C.  Otherwise, press
ENTER to go ahead and make the account.
(enter)

Creating new account...

Changing the user information for nombre
Enter the new value, or press ENTER for the default
        Full Name []: (enter)
        Room Number []: (enter)
        Work Phone []: (enter)
        Home Phone []: (enter)
        Other []: (enter)
New UNIX password: (password)
Retype new UNIX password:  (password)
passwd: password updated successfully

Account setup complete.
#


Como veis es bastante facilillo la creación de usuarios con este script.


17ºConfiguración de ficheros basicos de gentoo:

Vamos a comenzar con la edición de los ficheros mas importantes/basicos de gentoo. Comenzaremos con la castellanización/españolización de nuestra distribución editando el fichero /etc/rc.conf:

# vim /etc/rc.conf

En este fichero introduciremos nuestra KEYMAP o "el idioma del teclado", tambien introduciremos la fuente a usar en consola, asi como el tipo de reloj a usar(si tenemos mas de un SO usar local), asi como protocolos de internet y si queremos un gestor de arranque de las X. Un ejemplo del fichero seria el siguiente:

# vim /etc/rc.conf
KEYMAP="es euro2"
CONSOLEFONT="lat9w-16"
CLOCK="local" #"UTC"
PROTOCOLS="1 2"
#DISPLAYMANAGER=xdm #[ xdm | gdm | kdm ]          *Yo no uso gerstores de arranque por eso esta comentado
#


Acontinuación vamosa seguir castellanizando nuestra gentoo, cambiando los mensajes que nos da esta, por ejemplo en el arranque del ingles al español mediante la instalación del init-es:

# emerge init-es

Y por ultimo vamos a instalar el man en castellano, decir que no estan todas las paginas man basicas, pero si la mayoria. Esto ayuda a la gente que no tiene mucha idea del ingles:

# emerge manpages-es

Una vez tengamos esto, vamos a introducir las locales comunes para nuestra gentoo. Editaremos un fichero llamado .environment en el cual tendremos una lista completa de locales, este fichero se encontrara en nuestro directorio personal para que, dependiendo del usuario usemos unas locales u otras. Recordar que el . delante de los ficheros implica fichero oculto(podemos listarlos con la opcion -a del comando ls), asi mismo mencionar que el caracter ~ hace referencia al directorio home del usuario, por lo que si ponemos ~ como root hacemos referencia al directorio /root y si lo hacemos como usuario hacemos referencia al directorio /home/directorio_usuario. Un ejemplo del ocales para una persona de españa seria asi:

# vim ~/.environment
export LANG=es_ES@euro
export LC_CTYPE="es_ES@euro"
export LC_NUMERIC="es_ES@euro"
export LC_TIME="es_ES@euro"
export LC_COLLATE="es_ES@euro"
export LC_MONETARY="es_ES@euro"
export LC_MESSAGES="es_ES@euro"
export LC_PAPER="es_ES@euro"
export LC_NAME="es_ES@euro"
export LC_ADDRESS="es_ES@euro"
export LC_TELEPHONE="es_ES@euro"
export LC_MEASUREMENT="es_ES@euro"
export LC_IDENTIFICATION="es_ES@euro"
export LC_ALL=es_ES@euro
#


Acontinuación crearemos un fichero alias, es decir, un ficheros donde sustituimos una larga cadena por una cadena mas simple, por ejemplo si ponemos esto: alias gossh='ssh usuario@192.0.0.1', con poner gossh nos evitaremos tener que poner la cadena ssh usuario@192.0.0.1.

Tendremos 2 ficheros alias. El primero sera el general de la distribución en el cual haremos una separación de alias para usuarios "normales", otro para usuario ROOT y tambien alias generales para todos los usuarios, este fichero se encontrara en: /etc/alias y un ejemplo de este podria ser:

# vim /etc/alias
#!/bin/bash
#Alias
if [ $(whoami) == "root" ]; then   
        #Alias del root
        alias re='shutdown -r now'
        alias au='shutdown -h now'
        alias tapar='vlock -a'
        alias startx='startx -- :1'
else
        #Alias de los user
        alias su='su -'
        alias rm='rm -i'
fi

#Alias Globales
alias ls='ls --color=always'
alias ll='ls -lh'
alias la='ls -a'
#


Luego editaremos otro fichero en el ~/.alias donde tendremos varios alias que sean propios de cada usuario. Este fichero lo editara cada usuario si necesita algun alias especifico para él. En principio no pondre nada.

Despues lo cargaremos estos 3 ultimos archivos de configuración con el ~/.bashrc de cada usuario de la siguiente forma: source ~/.environment, source /etc/alias y source ~/.alias(este es opatativo).

Acontinuación vamos a introducir el nombre de nuestra maquina, si por ejemplo queremos que se llame "SexMachine" pondremos lo siguiente:

# echo SexMachine > /etc/hostname

Ahora vamos a editar el fichero /etc/hosts donde acosicamos un nombre a una ip. Debemos de asignar al localhost el 127.0.0.1, asi como asignar nuestro nombre de maquina a su correspondiente IP, si fuera dinamica nuestra IP no asignariamos ya que no lo podemos saber(se puede utilizar un script para que nos introduza la ip conque hemos conectado, pero eso esta fuera del objetivo de esta guia). Un ejemplo de /etc/hosts seria este:

# vim /etc/hosts
127.0.0.1    localhost
192.0.0.2    SexMachine
#


Una vez configurado todo esto, nos queda configurar el fichero /etc/inittab. En nuestro caso vamos a usar todas las terminales desde la 1 hasta la 11 pero dejando la 7 y la 8 sin usar. Ya que estas seran usadas por el entorno grafico de las X. Para un usuario cualquiera se usara la terminal 7 y para el usuario root usaremos la 8, para no tener que salir de las x para entrar como root en las X(ver el alias del startx del usurio root expuesto anteriormente). Notar que no necesitariamos tener que entrar como root en las X y si esto es necesario, es porque algo se esta haciendo mal. La terminal 12 tampoco se usara, puesto que sera usada por un programa que veremos mas adelante. Acontinuación vamos a descomentar la instruccion de control+alt+supr para reiniciar el ordenador, ya que, solo el usuario root debe de tener permisos para ello. Recordar tambien que el fichero inittab tiene el runlevel a usar(runlevel tradiciónal) asi como los runlevels de que disponemos. Un ejemplo del fichero seria este:

# vim /etc/inittab

#Default runlevel.
id:3:initdefault:
#
# System initialization, mount local filesystems, etc.
si::sysinit:/sbin/rc sysinit
#
# Further system initialization, brings up the boot runlevel.
rc::bootwait:/sbin/rc boot
#
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
#z6:6:respawn:/sbin/sulogin
#
# TERMINALS
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
c9:12345:respawn:/sbin/agetty 38400 tty9 linux
c10:12345:respawn:/sbin/agetty 38400 tty10 linux
c11:12345:respawn:/sbin/agetty 38400 tty11 linux
#
#ca:12345:ctrlaltdel:/sbin/shutdown -r now
#
x:a:once:/etc/X11/startDM.sh
#


Ahora modificaremos el fichero /etc/fstab donde le indicamos a ciertos dispositivos su punto de montage asi como un conjunto de propiedades.
El ejemplo basico de configuración de este fichero es: /dev/dispositivo   /punto/de/montage  tipo   opciones 0 0. Los tipos mas usado son los mencionados en el principio de la instalación de gentoo: reiserfs, ext3, iso9660, ntfsm vfat ... En el caso de la particion raiz deberemos de poner la opcion noatime, si por lo contrario es una particion de tipo ext3 deberemos de poner defaults.

Las opciones mas usadas son las siguientes:

->sw                 #Usado para particiones swap
->defualts        #Esta es un conjunto de opciones: rw, suid, dev, exec, auto, nouser, y async
->auto             #Se monta en el arranque
->noauto         #No se monta en el arranque, muy usado en los cdrom, ya que puede darse que no tengamos un cdrom introducido
->ro                #Solo lectura
->rw               #Lectura y escritura
->exec            #Permite la ejecución de binarios
->noexec        #No permite la ejecución de binarios
->noatime      #No actualizar los tiempos de acceso a nodo-í en este sistema  de ficheros
->users          #Permite que los usuarios puedan montar la partición


Un ejemplo de fichero /etc/fstab seria este:

# vim /etc/fstab
#Dispositivo    #Punto de montage       #tipo           #opciones
/dev/hda2               /               reiserfs        noatime                 0 0
#Ejemplo de particion Swap:
/dev/hda3               none            swap            sw                      0 0

#Ejemplo de particion en otro HD:
/dev/hdb1               /ftp            reiserfs        noatime,users           0 0
#Ejemplo de particion en windows con ntfs:
/dev/hda1               /mnt/win        ntfs            ro,auto                 0 0
#Ejemplo de particion en windows con vfat:
/dev/hda1               /mnt/win        vfat            users,auto,rw           0 0
#Montage de un cdrom:
/dev/cdroms/cdrom0      /mnt/cdrom     iso9660          noauto,ro,users         0 0
#Sistema, necesario para los virtual filesystem:
proc                    /proc           proc            defaults                0 0
tmpfs                   /dev/shm        tmpfs           defaults                0 0

#


Nota: al poner la opcion users, como usuario normal puedes montar la partición pero sin hacer objetivo ni a tipo ni a dispositivo, por ejemplo, en el caso del cdrom, para montarlo como usuario normal tendremos que introducir lo siguiente:

# mount /mnt/cdrom   *Si el punto de montage /mnt/cdrom esta en el fstab y tiene la opcion de user/s entonces si podremos montar
Pero no podemos indicar ni opciones ni dispositivo:
# mount -t iso9660 /dev/cdroms/cdrom0 /mnt/cdrom    *solo el usuario root puede hacer eso

Para mas información man mount y man fstab.

Acontinuación usaremos un programa que transforma un texto en otra cadena texto mediante caracteres ascii y introduciremos el resultado en /etc/motd para que cada vez que nos logueemos aparezca dicho mensage:

# emerge figlet
# figlet MiMensage > /etc/motd


Ya hemos editado los ficheros basicos de nuestra distribución gentoo.


18ºProgramas interesantes para instalar:

Un programa interesante seria, la instalación de un fenomenal programa que se encarga de vigilar nuestro ordenador y de generar un gran numero de logs(registros donde se almacena algun tipo de suceso) a nivel local.

# emerge sysklogd
# rc-update add sysklogd default




EL fichero de configuración se encuentra en /etc/syslog.conf, lo dejamos como esta ya que esta bien configurado de serie, unicamente seria conveniente añadir la siguiente linea:

# vim /etc/syslog.conf
...
*.*  /dev/tty12           *con esta liena conseguimos que cualquier suceso aparezca en la terminal 12
...
#


Otro programa interesante, tambien para el uso de logs, pero en este caso de las conexiones,seria el ip personality o  IPPL. Comenzaremos con la instalación del programa:

# emerge ippl

Acontinuación editaremos el fichero de configuración que se encuentra en /etc/ippl.conf. Introducire un fichero de configuración basico, si teneis alguna duda, leeros el manual de IPPL que hice ya hace cosa de un año:

# vim /etc/ippl.conf
run icmp tcp udp
log-in tcp /var/log/tcp_ippl.log
log-in icmp /var/log/icmp_ippl.log
log-in udp /var/log/udp_ippl.log
log-in all /var/log/all_ippl.log
logformat detailed all
ignore icmp type echo_replay
log option ident,resolve tcp port ftp
log option ident,resolve tcp port telnet
#


Ahora pondremos el demonio para que arranque con la distribucion usando la herramienta rc-update:

# rc-update add ippl default

Un programa muy util es el Openssh(administración remota mediante ssh).

# emerge openssh
# rc-update add sshd default


No esperamos a reiniciar el ordenador para arrancar el servicio, la 1ºvez que lo carguemos generara las clave privada y publica:

# /etc/init.d/sshd start     

El fichero de configuración del servidor se encuentra en /etc/ssh/sshd_config, seria interesante leerse una pequeña guia para saber administrar correctamente.

Yo lo que recomiendo es que no permitamos el permitir que el usuario root pueda conectarse desde ssh introduciendo la siguiente linea en el fichero sshd_config:

# vim /etc/ssh/ssh/sshd_config
...
PermitRootLogin no
...
#


Si necesitamos entrar como root, con entrar como usuario normal, estando este usuario en el grupo wheel, nos sobraria con el comando su- y la correspondiente contraseña de root nos encontraremos como root.

Por ultimo introduciremos el gpm, programa encargado de hacer funcionar el raton en consola:

# emerge gpm

Una vez instalado, editaremos el fichero de configuración gpm en /etc/conf.d/gpm, un ejemplo de configuración para un raton ps/2 con rueda seria este:

# vim /etc/conf.d/gpm
MOUSE=imps2
MOUSEDEV=/dev/psaux
REPEAT_TYPE=raw
APPEND="-l \"a-zA-Z0-9_.:~/\300-\326\330-\366\370-\377\""
#


Si nuestro raton no tuviera rueda cambiar MOUSE=imps2 por MOUSE=ps2. Si en vez de ser ps/2 es usb ponemos MOUSEDEV=/dev/input/mice en vez de MOUSEDEV=/dev/psaux.

Acontinuación introduciremos el demonio en el runlevel para que se cargue con el arranque del ordenador, y cargaremos el gpm para comprobar su correcto funcionamiento:

# rc-update add gpm default
# /etc/init.d/gpm start


Ya tenemos raton en consola. Recordar que en linux para copiar algo sobra con subrayar el texto que queremos copiar y pulsar con el boton de la rueda del raton donde queremos pegar el texto.

Ahora estaria interesante usar un buen firewall mediante iptables. Aqui yo uso mi propio script puesto que no me gusta el que ahi en /etc/conf.d/iptables.

Yo me creo un fichero llamado firewall en /etc/conf.d/. Y lo cargo en /etc/conf.d/local.start. Los pasos serian los siguientes:

# emerge iptables

Acontinuación editaremos el fichero de iptables basico:

# vim /etc/conf.d/firewall

#!/bin/bash
#Limpieza Total
iptables -F
iptables -t nat -F

#Aceptar todo lo mio
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -s miipinternet -j ACCEPT

#No aceptados
#iptables -A INPUT,FORWARD -s IP -j DROP

#Servicios

#Sistema Grafico X
iptables -A INPUT -i eth0 -p TCP -s 0/0 --dport 6000:6005 -j DROP
iptables -A INPUT -i eth0 -p UDP -s 0/0 --dport 6000:6005 -j DROP

#ICMP
iptables -A INPUT -i eth0 -p ICMP --icmp-type 8 -j DROP
iptables -A INPUT -i eth0 -p ICMP --icmp-type 0 -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 1/s -j ACCEPT

#Cualquier conexion que habra "yo" me lo aceptara
iptables -A INPUT -p TCP -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p UDP -m state --state RELATED,ESTABLISHED -j ACCEPT

#Cualquier otra conexion nueva o invalida de fuera hacia mi es desechada
iptables -A INPUT -m state --state NEW,INVALID -j DROP

#Pongo mi politica
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

#


Acontinuación añadimos el script al fichero /etc/conf.d/local.start:

#vim /etc/conf.d/local.start
/etc/conf.d/firewall
#


Si quisieramos poder hacer funcionar cualquier servicio, tendriamos que poner debajo de "#servicios" la siguiente cadena:
iptables -A INPUT -i eth0 -p tipo --dport puerto -m limit --limit 1/s -j ACCEPT

Siendo tipo: TCP o UDP y puerto el numero de puerto, por ejemplo, para openssh que escucha en el puerto 22 seria:

iptables -A INPUT -i eth0 -p TCP --dport 22 -m limit --limit 1/s -j ACCEPT

Los modulos necesarios de las iptables los he puesto en /etc/modules.autoload :

iptable_filter             #Cargamos el modulo de la tabla filter
iptable_mangle        #Cargamos el modulo de la tabla mangle
iptable_nay              #Cargo el modulo de la tabla nat
ipt_state                  #Cargo el modulo para poder usar el --state
ipt_limit                   #Permite limitar los paquetes
ip_conntrack_irc     #Permite poder usar el dcc en el irc


Para mas información: man iptables o www.netfilter.org

Nota: antes el fichero de iptables lo llama iptables y lo colocaba en /etc/init.d/iptables o en /etc/conf.d/iptables, pero muchas veces haciendo el etc-update machacaba el fichero, por lo que he decidido llamarlo de otra forma.

19º Reiniciar:

Ahora saldremos de nuestra flamante y nueva gentoo y reiniciaremos para cargar con nuestro nuevo kernel. Acordaros de volver a poner en la bios el arranque desde disco duro y de retirar el cd live.

# exit
# unmount /migentoo
# reboot



20ºConfiguraciones del entorno grafico:

Que tal la nueva gentoo? ;)

Una vez tengamos ya cargada la nueva gentoo, lo que normalmente se suele hacer es ponerse a instalar los programas que necesitemos mediante el emerge.  Asi como la configuración de dispositvos como tarjetas de sonido, aceleración grafica, internet, etc y sobretodo nuestro entorno grafico tan querido.

Comencemos con la instalación del motor de nuestro entorno grafico, las Xfree(apartir de ahora las X:

emerge xfree

Despues de un cierto tiempo, tendremos listo nuestro motor para ser configurado y usado. El archivo de configuracion de las X se llama /etc/X11/XF86Config, existen un gran numero de utilidades para poder configurarlo, entre ellas destaco una herramienta facil de usar y configurar:

# xf86config

Como vereis con este menu las preguntas son intuitivas y faciles de contestar. Vamos a ver un ejemplo para ver como lo deberia de usar:

# xf86config
This program will create a basic XF86Config file, based on menu selections you make.
....
Press enter to continue, or ctrl-c to abort.   (Pulsamos enter)
(Configuración del raton...)
First specify a mouse protocol type. Choose one from the following list:

1.  Auto
2.  SysMouse
     ...
7.  IMPS/2
     ...
The recommended protocol is Auto. If you have a very old mouse
or don't want OS support or auto detection, and you have a two-button
or three-button serial mouse, it is most likely of type Microsoft.

Enter a protocol number: 7 (seleccionamos el de la lista, en mi caso es un raton normal con rueda)

If your mouse has only two buttons, it is recommended that you enable
Emulate3Buttons.

Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons? y

Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.

Mouse device: /dev/psaux       (Esto es si la conexion es PS/2, si es USB poner /dev/input/mice)
(Ahora el teclado...)
lease select one of the following keyboard types th at is the better
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)

  1  Generic 101-key PC
  2  Generic 102-key (Intl) PC
  3  Generic 104-key PC
       ...
Enter a number to choose the keyboard.

Press enter for the next page(Pulsamos enter si queremos ver mas ocpiones)
3

1  U.S. English
2  U.S. English w/ ISO9995-3
    ....
71 Spanish  (Esta opcion aparecer pulsando 3 veces enter)
    ...
Enter a number to choose the country.
Press enter for the next page(Pulsamos enter si queremos ver mas ocpiones)
71
Please enter a variant name for 'es' layout. Or just press enter
for default variant
es

Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)? (pulso enter)

(Ahora le toca al monitor)
Now we want to set the specifications of the monitor...
...
Press enter to continue, or ctrl-c to abort. (Enter)

You must indicate the horizontal sync range of your monitor...
...
11  Enter your own horizontal sync range

Enter your choice (1-11): 11
Please enter the horizontal sync range of your monitor, in the format used
in the table of monitor types above. You can either specify one or more
continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.

Horizontal sync range: 50-70 (dependera de tu monitor)

You must indicate the vertical sync range of your monitor...
...
5  Enter your own vertical sync range

Enter your choice: 5

Vertical sync range: 50-120(depende de tu monitor)

You must now enter a few identification/description strings...
...
Enter an identifier for your monitor definition: Mimonitor

Now we must configure video card specific settings...
...
Do you want to look at the card database? y

0  * Generic VESA compatible                         -
...
Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.
(enter hasta encontrar nuestra grafica)
...
349  NVIDIA GeForce                                    GeForce
....
Your selected card definition:
349

Identifier: NVIDIA GeForce (estos datos seran distintos)
Chipset:    GeForce
Driver:     nv
Do NOT probe clocks or use any Clocks line.

Press enter to continue, or ctrl-c to abort. (enter)

Now you must give information about your video card...
...
10  131072K
...

Enter your choice: 10 (porque tengo 128 megas)
...
Enter an identifier for your video card definition: migrafica

For each depth... (aqui seleccionamos el que queramos y lo configuramos)
...
2  Change the modes for 16-bit (32K/64K colors)
...
Enter your choice: 2 (elijo configurar el de 16 bits que es el que uso)
Select modes from the following list:

1  "640x400"
       ...
Which modes?5 4 3 (elijo estas resoluciones, siendo la primera la defualt)
...
Do you want a virtual screen that is larger than the physical screen? n
(Volvemos al menu de la prufundidad(bits))
...
4  The modes are OK, continue.

Enter your choice: 4
...
4  16 bits (65536 colors)
5  24 bits (16 million colors)

Enter a number to choose the default depth. 4(en mi caso 16bits)
...
Shall I write it to /etc/X11/XF86Config? y


Ya hemos editado el fichero /etc/X11/XF86Config mediante un script muy sencillito.

Ahora vamos a añadir opciones para obtener un mejor compatibilidad con nuestro hardware en las X.

El raton, aunque lo hemos configurado correctamente habremos notado que la rueda del raton(si disponemos de ella) no funciona, asi mismo, como si ejecutamos las X teniendo el gpm activado el raton no nos funcionara. Para resolver el problema editaremos el fichero /etc/X11/XF86Config y en la sección del raton añadiremos:

# vim /etc/X11/XF86Config
...
Section "InputDevice"
    Identifier "MiRaton"
    Driver "mouse"
    Option "CorePointer"
    Option "Device" "dispositivo"
    Option "Protocol" "ImPS/2"        #PS/2 sino tenemos rueda
    Option "ZAxisMapping" "4 5"       #esto nos permite tener rueda
EndSection
...
Section "ServerLayout"
...
    InputDevice "MiRaton" "CorePointer"
...
EndSection


En la opcion de Option "Device" "dispositivo" deberemos de indicarle nuestro dispositivo, pero esto variaria dependiendo de nuestra configuración:

Option "Device" "/dev/gpmdata"    #si usamos el gpm
Option "Device" "/dev/psaux"      #Si no usamos gpm y la conexion es ps/2
Option "Device" "/dev/input/mice" #Si no usamos gpm y la conexiones USB


Como veis, si usamos gdm, da igual que sea nuestro raton USB o ps/2 ya que, esto se lo indicamos en el fichero de confiuración del  gpm /etc/conf.d/gpmgpm, como vimos anteriormente. Existe una pequeña incompatibilidad entre el gpm y las X, y esto ocurre cuando estando en consola, pasamos a las X, donde tardaramos unos 2 segundos en poder usar las X(se quedaran como bloqueadas).

Una vez hecho estos pequeños cambios tendremos el motor de las X listo para ser usado. Para cargas las X ejecutaremos el comando:

$ startx

Recordar que no tiene que existir ningun motivo para ejecutar las X, como usuario root por eso, en vez del simbolo # indicativo de usuario root, para indicar que lo debe de ejecutar un usuario sin altos privilegios(usuario medio o normal) usaremos $.

Una vez tengamos cargado el motor de las X sin haber usado ningun entorno grafico, instalaremos el entorno grafico que mas nos interese(si nunca habias instalado un distribución desde 0, o simplemente es vuestra primera distribución, seguramente no os habra gustado en exceso las X sin ningun entorno grafico, no os preocupeis que tiene solución).

Existen multitudes de entornos graficos, desde entornos graficos simples que no requieren un gran sistema a otros que requieren un sistema de mayor potencia.

Los entornos graficos que requieren poca maquina han sido diseñados, sobretodo para usuarios medios/altos, ya que, en un principo puede suponer un poco de lio para usuarios noveles(no tiene porque, pero si en su mayoria). Entre el gran numero de entornos, destaca la familia xbox por ser uno de los entornos mas potentes y que menos maquina requieren. Destaca tambien window maker o icewm por su gran facilidad de uso y potencia, a mi, de los entornos poco pesados, el wmaker es el que mas me gusta. Luego tenemos que destacar por sus efectos en el uso y por el boom que supuso el Enlightenment. Y por ultimo la nueva joya de los entornos ligeros, el XFCE el cual dispone de un gran numero de utilidades que requieren poco consumo pero que son tan buenos o mas como los de los entornos mas pesados(una muy buena elección).

Para instalar cualquiera de estos entornos sobrara con poner:

# emerge blackbox          # Blackbox
# emerge fluxbox           # Fluxbox
# emerge openbox           # Open Box
# emerge icewm             # Ice Window Manager
# emerge windowmaker       # Window Maker
# emerge enlightenment     # Enlightenment
# emerge xfwm4             # XFCE 4


Los entornos pesados son los mas conocidos por la mayoria de usuarios, kde y gnome. Son los mas desarrollados y evolucionados de todos los entornos, pero su gran consumo, hacen que mucha gente use entornos mas ligeros(como los anteriores):
# emerge kdebase   # KDE: solo el entorno
# emerge kde       # KDE: con todos los paquetes

# emerge gnome     # Gnome


Nota: si quieres instalar KDE, no lo dudes, usa kdebase y no kde, puesto que este ultimo instalara muchas cosas que seguramente no necesites. Y si las necesitaras, podrias instalarlas mas adelante.

Una vez tengamos elegido que entorno usar, deberemos de generarnos un fichero llamado .xinitrc donde introduciremos que entorno grafico cargaremos con las X. Esto se usa cuando tenemos mas de un entorno grafico. Este fichero lo tendremos en la home de cada usuario:

$ vim /home/miusuario/.xinitrc
#xfce4-session     
wmaker             #lo tenemos descomentado
#blackbox           
#fluxbox
#open box
#enlightenment
# startkde
#gnome-session
$


En nuestro caso cargariamos el windows maker, ya que, es el que hemos descomentado(quitado el caracter # de delante).

Ahora ya tenemos nuestro entorno grafico, es recomendable ponerse a probar las opciones, para acabar de entendero y personalizarlo. Una vez tengamos esto, es conveniente tener una terminal(Es una consola pero en las X), para poder usar comandos sin tenernos que tener otra consola habierta. Una de las terminales mas usadas son: xterm, aterm, wterm, konsole, gnome-termial....

Las consolas del kde y del gnome disponen de menus para poderlas configurar, pero las primeras consolas(*term), no disponen de tales utilidades. Para poder usarlas, deberemos de añadir las opciones que deseemos como argumentos, cuando ejecutemos la terminal. Esto puede resultar un poco molesto, por lo que crearemos un fichero llamado .Xdefaults en la home de cada usuario, donde podremos tener guardadas las configuraciones para dichas terminales:

$ vim /home/miusuario/.Xdefaults

xterm*background: black
xterm*foreground: white
xterm*font: -misc-fixed-medium-r-normal-*-*-130-*-*-c-*-iso8859-15
xterm*eightBitInput: false
xterm*metaSendsEscape: true
xterm*loginShell: true

#aterm*background: white
aterm*foreground: white
aterm*font: -misc-fixed-medium-r-normal-*-*-130-*-*-c-*-iso8859-15
aterm*scrollBar: false
aterm*transparent: true
aterm*transpscrollbar: true
#aterm*shading: 75
aterm*tinting: red
aterm*loginShell: true

wterm*background: blue
wterm*foreground: white
wterm*font: -misc-fixed-medium-r-normal-*-*-130-*-*-c-*-iso8859-15
wterm*scrollBar: false
wterm*transparent: true
wterm*shade: true
wterm*loginShell: true
$


Ya tendremos las X para ser usadas, ahora solo falta que instalamos nuestro software que necesitaremos. Si venis de otras distribuciones de linux/unix, tendreis claro que paquetes instalar, pero por si no es asi, una lista de los programas mas tipicos que podrian usar:

Navegador Web: mozilla, opera, mozilla-firefox, galeon, konqueror
Reproductor de video: mplayer(gmplayer), xine
Reproductor de audio: xmms
Editor de imagenes: gimp
Animacion 3D: blender
Explorador de archivos: konqueror, nautilus, xffm
Protector de Pantalla: xscreensaver
Visor de imagenes: gqview
Camara digitales: gtkam
Grabar cd/dvd: gcombust, k3b
Mensageria Instantanea: gaim, amsn
Monitorización: gtkam, karamba(superkaramba)
IRC: xchat, kvirc
Editores de texto plano: kwrite, gedit
Editor de "programación": anjuta, kdevelop
Suit de edición: openoffice, staroffice, abiword(solo es un editor)
2P2: xmule, mldonkey



21º Sonido mediante ALSA:

Vamos a configurar nuestra tarjeta de sonido mediante ALSA. Lo primero que deberemos de hacer es saber exactamente cual es nuestra tarjeta de sonido:

# cat /proc/pci | grep audio

Una vez sepamos cual es, buscaremos información acerca de nuestro modulo en http://www.alsa-project.org/alsa-doc/ , y en la opción de
Choose manufacturer for more details buscar el modulo de la tarjeta de sonido.

Una vez localizado deberemos de apretar sobre la opción de Driver & Docs. Ahi podremos leer toda la información de nuestro modulo, asi como tendremos un  pequeño manual de configuración basico.

Editaremos nuestro make.conf y añadiremos(si no lo hicimos anteriormente) la opción de alsa y de esd(si eres usuario de sound blaster no lo pongais). Ademas de añadir una variable de entorno, donde le indicamos cual es el modulo de tarjeta de sonido que tenemos(omitimos el snd-card- de delante del nombre del modulo):

# vim /etc/make.conf
USE="... alsa esd"
...
ALSA_CARDS="nodulo"   #ej: ALSA_CARDS="intel8x0"
#


Acontinuación editaremos nuestro kernel, si no lo hemos hecho, para el soporte de alsa, tal y como indicamos en el capitulo del kernel.

Ahora deberemos de emerge los siguientes paquetes:

# emerge alsa-lib
# emerge alsa-utils
# emerge alsa-tools
# emerge alsamixergui
# emerge alsa-oss


Siguiendo la información de la web anteriormente citada, deberemos de copiar exactamente igual como esta el fichero .asoundrc en la home de cada usuario, o crear un fichero general para todos en /etc/asound.conf:

# vim /etc/asound.conf
#Lo creamos tal y como aparece en la web
...
#


Acontinuación editaremos el fichero /etc/modules.d/alsa tal como indica la web:

# vim /etc/modules.d/alsa
#Lo creamos tal y como aparece en la web
...
#


Existen una alternativa a la edición del fichero /etc/modules.d/alsa y es usar la herramienta alsaconf:

# alsaconf

Por ultimo introduciremos el alsa en los runlevels y cargaremos el demonio:

# rc-update add alsasound boot
# /etc/init.d/alsasound start


Para gestionar el volumen de los altavoces, asi como activar el 5.1 o variantes del estilo, usaremos la herramienta alsamixergui:

$ alsamixergui

Ahora solo falta con decirle a los programas que usen de plugin de sonido, ALSA o OSS(tenemos emulación del oss mediante ALSA).

Existen un problema originado por el Full duplex, es decir, oir dos sonidos procedentes de 2 programas distinto a la vez. Esto ocurre en la mayoria de tarjetas de sonido(en las sound blaster no ocurre). Unas veces son porque no aceptan y otras veces es porque el modulo no esta suficientemente bien programado, ya que, el full duplex no es mediante hardware, sino mediante software. Para conseguir este efecto, usaremos el esound:

# emerge esound
# rc-update add esound default
# /etc/init.d/esound/start


En este caso deberemos de cambiar el plugin de sonido a usar por esound en todos los programas, y con ello dispondremos de full duplex. En ocasiones tendremos problemas ya que, en algunos programas no existe el soporte esound.