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:
1º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
2ºDamos formato a la particion swap:
Código:
# mkswap /dev/hda3
3º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
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
Código:
# make menuconfig
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 .