elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: [1]
1  Informática / Tutoriales - Documentación / Mi pequeño manual de instalación de gentoo ( por g0su ) en: 16 Junio 2004, 17:58 pm
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:

Código:
# dhcpcd eth0

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

Código:
# 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:

Código:
# 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:

Código:
# 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:

Código:
# date 0105143104 

Para mas información:

Código:
# 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:

Código:
# 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.

Código:
# 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:

Código:
# hdparm -d 1 /dev/hda 

Damos formato a la particion swap:

Código:
# mkswap /dev/hda3

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

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

Código:
# 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:


Código:
# swapon /dev/hda3

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

Código:
# mkdir /migentoo      -> creamos el directorio "migentoo"

Ahora dependiendo del tipo de formato haremos:

Código:
# mount -t reiserfs /dev/hda2 /migentoo      ->montamos la nueva particion si la elejimos reiserfs
o
Código:
# 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:

Código:
# 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):

Código:
# 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:

Código:
# 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:

Código:
# mount -t proc /proc /migentoo/proc

Copiamos los DNS que nos permitiran resolver dominios de internet:

Código:
# 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):

Código:
# chroot /migentoo /bin/bash

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

Código:
# 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.

Código:
# emerge -b paquete


(Y si necesitamos reinstalarlo con poner lo siguiente nos instalara el binario que hemos creado) 
 
Código:
# 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:
 
Código:
# 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.

Código:
# 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:

Código:
# 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:

Código:
# 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:

Código:
# 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:

Código:
# 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:

Código:
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:

Código:
# 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:

Código:
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:

Código:
# 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:

Código:
# 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!:

Código:
# 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:

Código:
# 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:

Código:
# 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:

Código:
# 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:

Código:
# 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.

Código:
# 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.

Código:
# make config
o
Código:
# make menuconfig
o
Código:
# 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:

Código:
	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.

Código:
# 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:

Código:
# vim /etc/modules.autoload

Un ejemplo de fichero modules.autoload seria este:

Código:
# 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:

Código:
# 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:

Código:
# 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.

Código:
# emerge lilo
# lilo

Y por fin ya hemos terminado, veis como no es tanto como parece ;).
2  Informática / Tutoriales - Documentación / Compilacion de Linux Kernel en: 2 Septiembre 2002, 21:49 pm
.===============================
-- Autor: Wendell
-- Desidents Espanña www.desidents.org
-- Fuente: http://www.jsnv.org/textos/lin_004.html
.================================.
|===========~ INDICE ~===========
|================================
|=~ 1 - Introduccion |
|=~ 2 - Requisitos para compilar el kernel |
|=~ 3 - Obtencion del fuente |
|=~ 4 - Manos a la obra |
|=~ 5 - Arranque con el nuevo kernel |
|=~ 6 - Parchear una version inferior del kernel para actualizarlo |

====================~ INDICE ~============



|=======~ 1 INTRODUCCION ~===============


En GNU/Linux tenemos la posibilidad de poder compilar el nucleo de nuestro
sistema para poder adaptarlo a nuestras necesidades, es el encargado de que
el software y el hardware de tu ordenador puedan trabajar conjuntamente, las
distribuciones actuales de Linux suelen traer un kernel precompilado que
incluye las configuraciones mas comunes. Algunos se preguntaran:

¿esrealmente necesario actualizarme al ultimo kernel cada vez que este ten
gauna nueva version?

Bien, las ultimas versiones del kernel suelen traercorreciones de progr-
amacion, nuevos soportes para distintas funciones etc.Si todas estas nuev-
as caracteristicas que se han añadido no la vamos autilizar, pues real-
mente no necesitariamos compilar un kernel nuevo, aunque siempre es bueno
actualizarse cuando el kernel que poseemos ya se estaquedando un poco
desfasado. Al compilar un nuevo nucleo definimos en granmedida su comporta-
miento,podemos dar soporte a distintos tipo de filesystems, hardware, protoc-
olos de red, SCSI etc.

|=======~ 2- REQUISITOS PARA COMPILAR EL KERNEL ==========

Para compilar el nucleo es necesario tener previamente algunas herramientas
instaladas y configuradas, algunas son bastantes obvias, como el compilador
gcc,el compilador de lenguaje C "entre otros" de GNU, el kernel esta escrito
en C en su mayoria, si no recuerdo mal, el 99% es C, y 1% esamblador. Aqui
pongo un pequeño listado de las herramientas necesarias para la compilacion

GCC
make
ncurses
ncurses-dev
bin86
libc6
libc6-dev
binutils.

Si os faltase alguno de estos requisitos deberiais buscarlos en
http://www.freshmeat.net , http://www.rpmfind.net o en http://www.google.com
.No hace falta decir que para compilar el kernel tenemos que estar como super
usuario (root).

|=======~ 3- OBTENCION DEL FUENTE ============


Para poder bajarnos el kernel de Linux solo debemos ir a su pagina oficial:

http://www.kernel.org

aqui encontraremos un servidor de ficheros al que sepuede acceder mediante
http, ftp y rsync, el camino mas corto es descargandodirectamente el fichero
que sale al lado de:

The latest stable version of theLinux kernel is: 2.*.* .

En la realizacion de este articulo, la ultimaversion es la 2.4.17, siem-
pre es una buena idea leer un poco sobre los bugs del kernel que nos quer-
emos descargar y decidir si es recomendable o nocompilarlo. Nosotros va-
mos a poner de ejemplo la version 2.4.17, asi que nosdirigimos hacia:

http://www.kernel.org/pub/linux/kernel/v2.4/

una vez que lapagina este cargada nos daremos cuenta de que aqui se encue-
ntran todos losnucleos 2 .4.* , aqui encontraremos los distintos ficheros
con distintasextensiones.

linux-2.4.17.tar.bz2 --- 22.7 Mblinux-2.4.17.tar.gz ---- 28.4 Mb

Ahora nos tenemos que bajar cualquiera de los ficheros, es mejor que os
bajeis el tar.bz2, puesto que ocupa 6 Megas menos . Los diferentes numeros
del nucleo indican la version del kernel, el primero es el general 2.*.*, el
segundo segun sea par o impar indica si es estable o si esta en desarollo
2.4.* , y el tercer y ultimo numero indica la revision en la que se
encuentra, 2.4.17..


|=======~ 4- MANOS A LA OBRA ================

Bien, una vez que se hayan bajado los 22.1 Mb en nuestro disco duro,
procederemos a descomprimirlo y a destarearlo en /usr/src/ con el siguiente
comando:
---------------------------------------------------------------------------|
En el caso de haber bajado: linux-2.4.17.tar.bz2 ||
# tar xyf linux-2.4.17.tar.bz2
|--------------------------------------------------------------------------|
En el caso de haber bajado: linux-2.4.17.tar.gz ||
# tar -xzvf linux-2.4.17.tar.bz2
|--------------------------------------------------------------------------|

Con esto se habra creado una carpeta nueva llamada linux, pues bien, nos
metemos dentro y estaremos situados en /usr/src/linux/. Ahora debemos elegir
el metodo por el cual vamos a compilar el nuevo kernel, en total hay tres,
los tres son igualmente validos y suele ser cuestion de gusto cual manejar,
estos tres metodos son: make config, make menuconfig y make xconfig. Ahora
vamos a analizar estos tres metodos:

---------------1- make config-----------------------------------------------
Este en el metodo mas complejo que podemos escoger, solo es recomendable
para usuarios experimentados, ya que se basa todo en metodo texto, sin
colores, ni menus, tambien hay que seguir un orden muy estricto, y se hecha
en falta ayudas en el proceso.

---------------2- make menuconfig-------------------------------------------
Este metodo es mucho mas recomendable que el anterior, no es en modo grafico,
pero se maneja de forma similar desde el teclado, con la barra espaciadora
marcamos y desmarcamos las opciones a compilar, y con los cursores nos movemos.
Tambien permite cargar opciones ya guardadas para retocarlas o hacer la misma
compilacion. Dispone de menus de ayuda, cosa que no poseia make config.
----------------3- make xconfig----------------------------------------------
Este es el metodo mas recomendable para los usuarios novatos o inexpertos en
el tema de compilacion del kernel. Este metodo es 100% grafico solo permite
usar raton, igual que el anterior este permite cargar y guardar
configuraciones, posee tambien menus de ayuda.
*****************************************************************************
Bien, una vez que tengais claro que opcion os gusta mas, solo debeis poner en
el terminal el make de esta misma, y seguidamente teneis que escoger las opc-
iones que quereis compilar.Una vez que hayais escogido todas esas opciones de
compilacion, pasamos a la compilacion en si.

1- En el terminal ejecutaremos:

make dep

Este comando crea las dependencias necesarias para poder compilar el kernel
correctamente
2- Ahora ejecutamos

make clean

Esto borra lo posibles binarios existentes para poder crear los nuevos de
forma limpia y ordenadada
3- Y por ultimo

make bzImage

Este es el ultimo comando para compilar el kernel, una imagen se creara en:
/usr/src/linux/arch/i386/boot/ , esta imagen se llama bzImage, que mas tarde
servira para poder arrancar el equipo con el nuevo kernel compilado, esto se
puede hacer de dos maneras: la primera es editando el lilo y la seguna es
cear un disco de inicioBien, como podreis comprobar hemos tecleado estos tres
comandos por separado, cuando uno terminaba pues ejecutabamos el siguiente,
pues bien, esto se puede todo de golpe, y se hace con el siguiente comando:

make dep && make clean && make bzImage

La duracion de la compilacion del nucleo puede variar mucho dependiendo de
la velocidad de tu ordenador, puede tardar desde 10m, 20m, 40m ....Ahora solo
queda instalar los modulos, que se realizan con el siguiente comando:

make modules && make modules_install ,

Este comando instala los modulos en /lib/modules/version_kernel


|=======~ 5- ARRANQUE CON EL NUEVO KERNEL ~=============

Hay dos formas de poder usar linux con el nuevo kernel, una de ellas es edi-
tando el lilo, y la otra es creando un disko de arranque, para los despista-
dos que no sepan lo que es el lilo, pues sencillamente es un gestor de arra-
nque muy versatil que permite iniciar un sistema operativo (SO) cargan-
do el sector de arranque de una partición del disco duro.

-------------------------*** arrancar con lilo ***-------------------------
Bien primero veamo como arrancar usando el lilo, lo primero que debemos de
hacer es copiar la imagen del kernel nuevo en /boot , esto se hace con el
siguiente comando:

cp /usr/src/linux/arch/i386/boot/bzImage /boot

Seguidamente no dirigimos /boot y cambiamos el nombre del bzImage por:
vmlinuz-2.4.17 , el cambio de nombre se realiza de esta manera siguiente

mv bzImage vmlinuz-2.4.17

Ahora debemos copiar tambien el System.map que se encuentra en
/usr/src/linuxa /boot , esto lo hacemos con este comando:

cp /usr/src/linux/System.map /boot/

Si te pregunta si deseas sobreescribir le dices que si, antes de hacer este
ultimo comando seria recomendable copiar el antiguo el System.map en cualqu-
ier directorio por razones de preaucatividad. Bien ya tenemos la imagen del
kernel2.4.17 y la System.map en /boot, ahora abrimos el archivo de configur-
acion del lilo, este se encuentra en: /etc/lilo.conf , una vez abierto deb-
emos editarlo para añadir una nueva entrada para el nuevo kernel, normalmen-
te con solo añadir las siguientes lineas ya valdria:

image=/boot/vmlinuz-2.4.17 label=linux_2.4.17 root=/dev/hde6
-----------------------------------------------------------------------------
read-only--------------------------------------------------------------------

*nota: como podeis comprobar /dev/hde6 es la particion donde esta
|| instalado linux en mi maquina, si no sabeis en que particion esta||
||instalada la vuestra, solo debeis poner en el terminal: df , y en ||
||la linea en el cual salga el directorio raiz / es la particion en ||
||la que esta vuestro linux, si la vuestra no es hde6 pues la ||
||deberiais cambiar por la que salga.En mi caso es ||
||
Filesystem Size Used Avail Use% Mounted on ||
/dev/hde6 4.7G 1.1G 3.4G 24% /
|---------------------------------------------------------------------
Ahora deberiamos guardar el lilo.conf con la nueva entrada, y en el terminal
pondriamos:

lilo

Y como resultado nos tendria que dar algo como esto:

Added linux *Added linux_2.4.17Si tuviesemos mas sistemas operativos, pues
saldran Added y el nombre de SO.

Bien, ahora reiniciamos el sistema, y cuando nos saldriese el lilo deberiamos
ver una entrada con el siguiente nombre: linux_2.4.17 , pues le damos para
arrancar y todo deberia salir bien, si quieres que el nuevo kernel sea el que
se inicie por defecto solo debes sustituir la linea: default=* por

default=linux_2.4.17

Y volveriamos a poner lilo en el terminal --------------------------------
*** arrancar con un diskete ***--------------------------------
lo primero es que debemos de tener es un diskete formateado, para formatear
un disekete en Linux se hace con de este el siguiente comando:

fdformat /dev/fd0

Despues nos vamos a: /usr/src/linux/ y ejecutamos el siguiente comando:

mkbootdisk

Ahora sigues estos sencillos pasos, lo configuras y reinicias booteando desde
el diskete.
||---------------------------------------------------------------||
||*nota: para comprobar si estas en el kernel 2.4.17 solo debes ||
|| ejecutar este comando: uname -r , os deberia salir: 2.4.17 , ||
||con uname -a obtendras mas informacion sobre el sistema
|-----------------------------------------------------------------

|=======~ 6- PARCHEAR UNA VERSION INFERIOR DEL KERNEL PARA ACTUALIZARLO ====

El parche para el kernel de Linux es un archivo que contiene informacion
sobre las lineas de codigo que han cambiado desde la penultima version del
nucleo, por ejemplo, si tienes la version del kernel 2.4.16 y quieres
actualizarte a la 2.4.17 pues solo deberias bajarte el parche:
patch-2.4.17.bz2 ,

que solo ocupa 388 kb en vez de los 22.7 Mb del nucleo nuevo, esto supone un
ahorro considerable de tiempo para usuarios que no disponemos de conexiones
rapidas. Supongamos que tienes el kernel 2.4.14, y quieres disponer de la Ve
rsion 2.4.17 sin tener que bajarte el nucleo entero, pues entonces tendrias
que bajarte los parches patch-2.4.15.bz2, patch-2.4.16.bz2 ,patch-2.4.17.bz2.

Con estos dosejemplos creo que todo ha quedado mas claro, ahora pasemos a la
accion.Una vez que este bajado el parche lo copias a /usr/src con el siguie-
nte comando:

cp patch-XX.YY.ZZ.gz /usr/src/

Ahora descomprimes el fichero con:

bunzip patch-XX.YY.ZZ.bz2

Aplica el parche con:

patch -s -p0 < patch-XX.YY.ZZ

A continuacion entras en /usr/src/linux y ejecutas

make clean
make xconfig
make dep
make bzImage

Ahora te toca leer desde: | arranque con el nuevo kernel | , que esta un poco
mas arriba.

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines