Este material se puede considerar una guía, donde explico como instalé un servidor gentoo en una AMD 64.
En la web de gentoo esta la guía oficial donde enseña como instalar en todo tipo de hardware.
La guía que yo use es esta:
En algunos momentos opté por opciones "recomendadas" o "por defecto", si algún usuario con experiencia tiene algo para aportar, el post esta abierto a toda sugerencia y/o comentario.
Actualización 1/12/2012
Teniendo el cuenta los comentarios de los usuarios, y con la colaboración del usuario @cxs00 procedí a crear una partición /var separada de la raíz.
También se modifico el archivo make.conf y el genkernel.conf para acelerar el compilado, definir que tipo de procesador tiene el servidor, pide confirmación antes de instalar algo y soluciona problemas de dependencias al instalar software nuevo.
Conclusiones de la actualización:
El servidor al tener /var por separado evitamos que la raíz se llene y colapse el sistema.
La compilación del núcleo se completó unos minutos antes en esta oportunidad.
Se resuelven los problemas de dependencias al instalar software, y pregunta cada vez que se esta por instalar un nuevo software.
Descargar el iso de gentoo
Lo primero es descargar el iso de gentoo, nos dirigimos en su sitio oficial http://www.gentoo.org/
Luego de descargar el iso grabarlo en un CD o transferirlo en un pendrive.
Instalando el sistema
Iniciamos la instalación desde el medio que contiene el iso de gentoo.
Presionamos enter
esperamos que cargue el sistema
seleccionamos el tipo de teclado
verificamos la red
ifconfig
solo red interna estamos teniendo
verificamos todas las interfaces detectadas
ifconfig -a
la interface primaria a activar es eth0
net-setup eth0
Se iniciará un asistente para configurar la red, respondemos a las preguntas típicas de una configuración de red
verificamos que ya disponemos de una ip asignada por el router,
ifconfig eth0 | grep "inet addr"
netstat -r
revisamos los datos correspondientes para la resolución de nombres
more /etc/resolv.conf
cargamos los dns ya que el comando anterior nos demuestra que no tenemos
echo nameserver 208.67.220.220 > /etc/resolv.conf
echo nameserver 208.67.222.222 >> /etc/resolv.conf
ping -c 2 www.google.com
Particionar el disco con parted
Vamos a utilizar parted, ya que admite particiones mayores de 2 TB (fdisk no puede)
En la consola escribimos:
parted
con el comando help se muestra el uso de parted
help
como dice la ayuda, se usa print para ver nuestro disco duro
print
mklabel gpt para crear una etiqueta GPT
mklabel gpt
Vamos a usar un esquema de particionado el cuál nos permita tener /boot /var y /home en particiones diferentes a la raíz /, en el siguiente gráfico se detalla como será.
Crear una partición /boot de 100mb que ocupe desde 0mb al 100 MB
mkpart primary ext2 0 100mb
a la advertencia respondemos con i
crear una partición / de 20480 MB que ocupe desde 100mb al 20580mb
mkpart primary ext4 100 20580mb
crear una partición de intercambio de 1024 mb que ocupe desde 20580mb al 21604mb
mkpart primary linux-swap 20580 21604mb
crear una partición /var de 20480 MB que ocupe desde 21604mb al 42084mb
mkpart primary ext4 21604 42084mb
crear una partición /home que ocupe todo el espacio restante del disco.
-1s (menos uno s) indica el final del disco
mkpart primary ext4 42084mb -1s
print
para ver los cambios realizados.
quit
para salir.
En esta imagen se aprecia todo el procedimiento de particionado
Formateando las particiones
Procedemos a formatear las particiones recién creadas:
mkfs.ext2 /dev/sda1
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda4
mkfs.ext4 /dev/sda5
mkswap /dev/sda3
activamos la partición de intercambio
swapon /dev/sda3
Montaje
Verificamos la disposición de las particiones:
ls -1 /dev/sda*
Ahora que las particiones están inicializadas y albergan sistemas de ficheros, es hora de montarlas. Utilice la orden mount y creamos los puntos de montaje necesarios para cada partición que haya creado en el siguiente orden:
mount /dev/sda2 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
mkdir /mnt/gentoo/var
mount /dev/sda4 /mnt/gentoo/var
mkdir /mnt/gentoo/home
mount /dev/sda5 /mnt/gentoo/home
Ajustar la Fecha/Hora correcta
En este punto, se debería usar la hora UTC. Podrá utilizar su propia zona horaria más adelante.
date
Si la fecha/hora está equivocada, actualícela con la orden date MMDDhhmmAAAA, con la siguiente sintaxis (Mes, Día, hora, minuto y Año)
Descargar stage3 y portage
Bajamos el stage 3
Navegando desde la consola
cd /mnt/gentoo
links http://gentoo.localhost.net.ar/releases/amd64/current-stage3
nos movemos con los cursores hasta seleccionar el archivo stage3-amd64-20121107.tar.bz2 y lo descargamos
En caso que se quiera descargar de otro servidor, puede obtener una lista de servidores réplica de aca:
javascript:void(0)
Luego descargamos el archivo stage3-amd64-20121107.tar.bz2.DIGESTS
este archivo es muy pequeño, nada no tarda en descargar.
Ahora salga del navegador presionando Q
Verificando el stage3 descargado
A continuación compare la salida de estas órdenes con el valor registrado en los ficheros con extensión .DIGESTS que puede encontrar en los servidores réplica. Los valores deben coincidir, de lo contrario, los ficheros descargados podrían estar corruptos.
Nos situamos en el directorio que se descargo.
sha512sum stage3-*.tar.bz2
more stage3-*.DIGESTS.bz2
Si todo esta bien, desempaquetamos el stage3 descargado. Usaremos tar para dicha labor ya que este es el método más fácil.
tar xvjpf stage3-*.tar.bz2
ACA NUEVA IMAGEN ANTES DE DESCOMPRIMIR Y DESPUES
Descargamos el portage para nuestro sistema
wget http://gentoo.localhost.net.ar/snapshots/portage-latest.tar.bz2
wget http://gentoo.localhost.net.ar/snapshots/portage-latest.tar.bz2.md5sum
Comprobar la integridad de una imagen de portage
md5sum -c portage-latest.tar.bz2.md5sum
Descomprimir la imagen de Portage
tar xvjf portage-latest.tar.bz2 -C /mnt/gentoo/usr
Configurando las opciones de compilación
Para optimizar Gentoo, tendrá que ajustar un par de variables que afectarán el comportamiento de Portage.
vi /mnt/gentoo/etc/portage/make.conf
presionamos i para editar y completamos con los siguientes datos
CFLAGS="-march=native -pipe"
MAKEOPTS="-j2 -l1"
EMERGE_DEFAULT_OPTS="--jobs=2 --load-average=1.85 --ask --with-bdeps=y"
Una vez que hayamos terminado de insertar/modificar el fichero, pulsamos la tecla escape para salir del modo edición.
Para guardar los cambios hechos en el fichero, y salir:
:x
Esta optimización es para un procesador de 1 núcleo, para entender las opciones usadas visitar:
Servidores réplica
Para poder descargar el código fuente rápidamente se recomienda seleccionar un servidor réplica rápido. Use la herramienta mirrorselect la cual proporciona una interfaz amigable para seleccionar los servidores réplicas que quiera. Simplemente navegue a los servidores réplica que desee y pulse la barra espaciadora para seleccionar uno o más servidores.
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
Otra importante configuración es la variable SYNC en make.conf. Esta variable contiene el servidor rsync que quiere utilizar para actualizar su árbol Portage (la colección de ebuilds, guiones que contienen toda la información que Portage necesita para descargar e instalar software).
Seleccionar un servidor rsync utilizando mirrorselect
mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf
Copiar la información DNS
cp -L /etc/resolv.conf /mnt/gentoo/etc
Montar los sistemas de archivos necesarios
Monte el sistema de ficheros /proc en /mnt/gentoo/proc para poder usar la información proporcionada por el núcleo dentro del entorno chroot y luego monte el sistema de ficheros /dev y /sys.
Montar /proc y /dev
mount -t proc none /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
Entrando al nuevo entorno
El enjaulamiento (chroot) se hace en tres pasos. Primero cambiamos la raíz desde / (en el medio de instalación) a /mnt/gentoo (en sus particiones) usando chroot. Después crearemos un nuevo entorno usando env-update, el cual, en esencia crea las variables de entorno. Finalmente, cargamos esas variables en memoria tecleando source.
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"
Actualizando el árbol portage
Debería actualizar ahora su árbol portage a la última versión. emerge --sync hará esto por nosotros.
emerge --sync
Si se le ha advertido que está disponible una nueva versión de portage debe actualizar con el siguiente comando:
emerge --oneshot portage
es recomendable leer los mensajes informativos.
eselect news list
eselect news read 1
y así proceder con cada uno de los mensajes.
Seleccionar el perfil adecuado
Primero, una pequeña definición:
Un perfil es la piedra inicial de cualquier sistema Gentoo. No solamente especifica unos valores predeterminados para USE, CFLAGS, y otras variables importantes, también bloquea del sistema ciertos rangos de versiones de algunos paquetes.
Se puede ver el perfil actualmente utilizado con la siguiente orden:
eselect profile list
Cambiar de perfil
eselect profile set 8
y verificamos los cambios
eselect profile list
Si quiere disponer de un entorno puramente de 64 bits puros, sin aplicaciones de 32 bits ni bibliotecas, debería utilizar un perfil no multilib:
Configurando el kernel
Zona Horaria
Primero necesita seleccionar su zona horaria para que su sistema sepa dónde está localizado.
ls /usr/share/zoneinfo
ls /usr/share/zoneinfo/America
cp /usr/share/zoneinfo/America/Asuncion /etc/localtime
echo "America/Asuncion" > /etc/timezone
Instalar las Fuentes
Elegir un Núcleo
El eje alrededor del cual se construyen todas las distribuciones es el núcleo de Linux. Es la capa entre los programas de usuario y el hardware del sistema.
Para los sistemas basados en AMD64 tenemos, entre otros núcleos, gentoo-sources (fuentes del núcleo modificadas para obtener algunas características adicionales).
emerge gentoo-sources
Ahora que el árbol de las fuentes del núcleo está instalado, es hora de compilarlo usando nuestro guión genkernel que automáticamente construirá un núcleo.
Esto significa que cuando use genkernel para construir su núcleo, su sistema generalmente detectará todo su hardware en el arranque, tal como lo hace el CD de instalación.
(en esta parte más de uno va a decirme que es conveniente compilar manualmente el kernel, le respondo que tiene razón y que esto lo dejo pendiente para un proximo post)
emerge genkernel
echo 'MAKEOPTS="-j2 -l1"' >> /etc/genkernel.conf
verificamos que todo este bien:
more /etc/genkernel.conf
Ahora, compilar las fuentes del núcleo ejecutando genkernel all, recuerde que genkernel compila un núcleo que soporta casi todo el hardware, esta compilación tardará un largo rato en completarse.
genkernel all
Una vez que genkernel haya terminado, tendrá un núcleo, un conjunto completo de módulos y un disco ram de inicio (initramfs).
Configurando su sistema
Información del Sistema de Ficheros
En Linux, todas las particiones usadas por el sistema deben estar reflejadas en /etc/fstab. Este fichero contiene los puntos de montaje de esas particiones (donde se encuentran en la estructura del sistema de ficheros), cómo deben ser montadas y con que opciones especiales.
nano -wB /etc/fstab
y creamos un punto de montaje para el cdrom
mkdir /mnt/cdrom
Información de red
Una de las elecciones que un usuario ha de hacer es el nombre de su PC.
nano -wB /etc/conf.d/hostname
(Configure la variable hostname con el nombre del anfitrión)
hostname="servidor"
Configurando la Red
Toda la información de red esta reunida en /etc/conf.d/net.
Configurar manualmente la información IP para eth0, usando los datos recopilados al principio del tutorial.
config_eth0="192.168.0.102 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.253"
en caso que quiera obtener una dirección IP automáticamente para eth0 cambiar el siguiente valor:
config_eth0="dhcp"
Configurar el dominio NIS
Si tiene un dominio NIS, necesita definirlo ahora, en mi caso pondré uno ficticio ya que no tengo uno:
nano -wB /etc/conf.d/net
nis_domain_lo="red.local"
Inicio automático de red en el arranque
Para disponer de su interfaz de red activada en el arranque, necesita agregarla al nivel de ejecución por defecto (default).
Agregar net.eth0 al nivel de ejecución por defecto (default)
cd /etc/init.d
ln -s net.lo net.eth0
rc-update add net.eth0 default
Si tiene distintas interfaces de red, necesitara crear los correspondientes net.eth1, net.eth2 etc.
Archivo hosts
nano -wB /etc/hosts
Contraseña de administrador (Root)
Fijamos la contraseña de administrador escribiendo:
passwd
Gentoo utiliza /etc/conf.d/keymaps para gestionar la configuración del teclado. Edítelo y configure su teclado.
Editar /etc/conf.d/keymaps
nano -wB /etc/conf.d/keymaps
Gentoo utiliza /etc/conf.d/hwclock para fijar las opciones del reloj. Edítelo de acuerdo a sus necesidades.
Modificar /etc/conf.d/hwclock
nano -wB /etc/conf.d/hwclock
Si su reloj de hardware no utiliza UTC, añada clock="local" al archivo.
La mejor opcion es dejarlo en "UTC"
y cambiar el valor
clock_hctosys="YES"
a
clock_hctosys="NO"
Configurar localizaciones
Probablemente utilice únicamente una o dos localizaciones (locales) en su sistema. Debe especificar las localizaciones que utilizará en el fichero /etc/locale.gen.
Abrir /etc/locale.gen
nano -wB /etc/locale.gen
Las posibles opciones ver en:
/usr/share/i18n/SUPPORTED
El siguiente paso es ejecutar locale-gen. Se generarán las localizaciones que ha especificado en el fichero /etc/locale.gen.
locale-gen
Una vez realizado el paso anterior, tendrá la posibilidad de ajustar las definiciones que afectan a todo el sistema en el fichero /etc/env.d/02locale:
Definir la localización por defecto del sistema, creamos el archivo:
nano -wB /etc/env.d/02locale
Recargar el entorno del intérprete de comandos
env-update && source /etc/profile
Instalando el gestor de arranque grub
emerge grub
Escriba los nombres del núcleo y de initrd ya que los necesitará para el archivo de configuración del gestor de arranque, podrá obtener esos datos con el siguiente comando:
ls /boot/kernel* ; /boot/initramfs*
Edite el archivo /boot/grub/grub.conf con nano, o cualquier otro editor:
nano -wB /boot/grub/grub.conf
# Qué título arrancar por defecto. 0 es el primero, 1 el segundo, etc.
default 0
# Cuantos segundos esperar antes de arrancar el título por defecto.
timeout 5
title Gentoo Linux 3.5.7
# Partición donde se encuentra la imagen del núcleo (o sistema operativo)
root (hd0,0)
kernel /boot/kernel-genkernel-x86_64-3.5.7-gentoo root=/dev/ram0 real_root=/dev/sda2
initrd /boot/initramfs-genkernel-x86_64-3.5.7-gentoo
Configurando el gestor de arranque
Para comenzar a configurar GRUB, debe ejecutar los comandos dentro de grub. Se le presentará el intérprete de comandos propio de grub grub>.
Ahora necesita ejecutar los comandos necesarios para instalar el registro de arranque de GRUB en su disco duro.
Iniciar GRUB desde el intérprete de comandos
En el ejemplo de configuración queremos instalar GRUB para que lea la información de la partición de arranque /dev/sda1, e instala el registro de arranque de GRUB en el MBR (Master boot Record) de su disco duro para que lo primero que veamos aparecer al encender el ordenador sea GRUB.
En mi caso, utilizo la opción --no-floppy ya que no tengo ningún dispositivo de disquetes.
Instalando GRUB en el MBR
grub --no-floppy
grub> root (hd0,0) (Especifique donde tiene su partición /boot)
grub> setup (hd0) (Instalamos GRUB en el MBR)
grub> quit (Salimos del intérprete de comandos de GRUB)
Iptables
¿De que sirve un servidor sin una protección básica?
Vamos a instalar iptables
emerge iptables
Ahora compruebe que iptables funciona ejecutando iptables -nL
iptables -nL
El resultado del comando anterior nos muestra que iptables está activo pero no tiene ninguna regla.
Firewall básico
Bloquear solo el tráfico entrante
Este firewall sirve para proteger el servidor, descarta todos los paquetes entrantes/reenviados, permite el tráfico saliente, acepta conección ssh desde una sola IP y abre el puerto 80 (apache) para todos.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.101 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Esto se puede mejorar mucho todavía, pero para efectos de este tutorial ya alcanza, quien desee profundizar pasar por mis post de iptables.
Guardamos la configuración en un archivo
pwd
/root
iptables-save > reglas
creamos un pequeño script para que restablezca las reglas cuando se reinicia el sesvidor:
nano /etc/init.d/firewall
#!/sbin/runscript
iptables-restore < /root/reglas
chmod +x /etc/init.d/firewall
rc-update add firewall default
Al reiniciar el sistema las reglas de iptables estarán activas nuevamente
Reiniciando el sistema
exit
cd
umount -l /mnt/gentoo/dev{/pts,/shm,}
umount -l /mnt/gentoo{/boot,/home,/var,/sys,/proc,}
reboot
Post install
Ya en la entrada del sistema vemos un mensaje que dice ".unknown_domain", eso se arregla editando /etc/issue
nano /etc/issue
Simplemente elimine el texto .\O
de ese archivo.
Resultado:
Revisamos las reglas del firewall
Verificamos que las reglas del firewall estan activas:
iptables -nL
Limpieza de disco
Eliminar los tarballs
Ahora que ya se ha instalado Gentoo y reiniciado, si todo fue bien, puede eliminar el tarball de stage3 y la imagen de Portage. que descargó en su disco duro. Recordamos que se encuentran en el directorio /.
rm /stage3-*.tar.bz2* ; rm /portage-latest.tar.bz2*
Cuentas de Usuarios
Añadir un usuario para uso diario
Si alguna vez este usuario necesita realizar alguna tarea como root, puede utilizar su
Los grupos a los que pertenece el usuario definen que actividades puede realizar. La siguiente tabla muestra una lista de los grupos más importantes que podría querer utilizar.
Grupo-----Descripción
audio------para ser capaz de acceder a los dispositivos de audio
cdrom-----para poder acceder directamente a dispositivos de lectura óptica
floppy------para poder acceder directamente a los dispositivos de disquete
games-----para poder utilizar los juegos
portage----para ser capaz de utilizar emerge --pretend como usuario normal
usb---------para poder acceder a los dispositivos USB
video-------para acceder al hardware de captura de vídeo y a la aceleración por hardware
wheel------para poder utilizar su
Cron
El siguiente es el demonio cron. Aunque es opcional y no lo requiere su sistema es recomendable instalar uno. ¿Pero qué es un demonio cron? Un demonio cron ejecuta comandos en horarios planificados. Es muy cómodo si necesita ejecutar comandos regularmente (por ejemplo a diario, cada semana o mensualmente).
Instalar un demonio cron
emerge dcron
rc-update add dcron default
Si desea profundizar en el uso de esta útil herramienta, recomiendo visitar mi post cron a fondo
Bitácora del Sistema
emerge syslog-ng
rc-update add syslog-ng default
Indexar Archivos
Si quiere crear un índice de su sistema de archivos para habilitar su rápida localización usando la herramienta locate, necesita instalar eix.
Instalar eix
emerge eix
Acceso remoto
Para acceder a su sistema desde un equipo remoto después de la instalación, no olvide añadir sshd al nivel de ejecución por defecto:
Iniciar el demonio SSH
/etc/init.d/sshd start
si vemos que todo está correcto pasamos a agregarlo al inicio del sistema.
Añadir sshd al nivel de ejecución por defecto
rc-update add sshd default
Y ya nos podemos conectar al servidor
Información del sistema
Gentoo usa /etc/rc.conf para configurar los servicios y el arranque y apagado de su sistema. Abra el fichero /etc/rc.conf y disfrute de todos los comentarios que hay en este fichero.
Una modificación básica que debemos hacerle es la siguiente:
nano -wB /etc/rc.conf
Verificamos los medios montados
mount
____________________________________________________________
Si te gusto el post comenta!
Estas sin tiempo para leerlo detenidamente? Agregalo a favoritos ya!
No entendiste algo? mandame un MP que te ayudo.
Te gustan mis aportes? Seguime! no te defraudaré.
Fuentes de conocimientos: