Guía de instalación básica y mínima de Gentoo

Usando Ubuntu

En el grupo de telegram "Gentoo Linux en español" han aparecido varias personas que lo instalan por primera vez y tienen problemas o les falla. Mi recomendación es siempre hacer una instalación "por defecto", es decir, no personalizar nada, ni instalar nada, ni configurar nada que no sea estrictamente necesario. Es por esta razón que decidí hacer una guía rápida de una instalación básica, simple y mínima, a modo de evitar errores y tener un sistema que arranque sin problemas, y que luego podamos modificar a gusto sabiendo que ya funciona.

Bueno, otra cosa es que usan el cd mínimo que proporciona la web de Gentoo, que en mi opinión ayuda a entorpecer el proceso porque a veces por el hecho de escribir mal un comando todo falla. Es por esto que prefiero usar distros en modo live, como Ubuntu, para poder copiar y pegar los distintos comandos que se necesitan, minimizando las probabilidades de fallar, y en esta guía trataré de enseñarte a tí como hacerlo para que tu instalación funcione.

Atención!: Vamos a partir del supuesto que mi máquina usará UEFI, no tendrá wifi, tiene 4Gb de RAM y tiene 20Gb de Disco Duro. Las imágenes que verás en esta guía son referenciales, puede que algunas no sean coherentes (como en la fecha) por lo que no debes tomarlas con total seriedad. Los comandos por otra parte son 100% reales y son los que debes usar (copiar y pegar por ejemplo). Es muy buena idea que intentes seguir el manual oficial de gentoo para ver de lo que te pierdes, esta guía es en su mayoría express, y debe ser tomada como entrenamiento para en un futuro poder instalar gentoo de manera completa sin errores.

Ya leído lo anterior vamos a empezar iniciando un live de Ubuntu y le damos a probar:

Verificamos que estemos conectados a internet y luego abrimos un terminal e ingresamos como root con:

user $ sudo -i

Luego con:

root # lsblk

Podemos ver cuál es nuestro disco duro, en mi caso es /dev/sda.

Particionamos el disco. En mi caso usaré parted, crearé la partición boot de 512mb, swap de 2gb y el resto lo dejaré para el sistema (/).

root # parted -a optimal /dev/sda
(parted) mklabel gpt
(parted) unit mib
(parted) mkpart esp fat32 1 513
(parted) mkpart swap linux-swap 513 2561
(parted) mkpart rootfs ext4 2561 100%
(parted) set 1 boot on

El resultado se puede ver escribiendo “print” o “p”, como se ve en la siguiente imagen:

Cerramos parted con “quit” o “q” y seguimos. Ahora toca formatear las particiones. Boot debe ser fat32 porque estamos usando uefi, swap debe ser swap y root debe ser ext4:

root # mkfs.vfat -F 32 /dev/sda1
root # mkswap /dev/sda2
root # mkfs.ext4 /dev/sda3
formateo

Activamos el swap, creamos la carpeta /mnt/gentoo y montamos root ahí.

Nota: La carpeta /mnt/gentoo ya está creada en el cd oficial de gentoo pero en Ubuntu no existe, por eso la creamos.

root # swapon /dev/sda2
root # mkdir /mnt/gentoo
root # mount /dev/sda3 /mnt/gentoo

Ahora es importante ir a la página de descargas de gentoo y copiar el enlace de descarga del stage3, tal como se ve en la imagen:

copiar link

Ahora nos movemos a la carpeta /mnt/gentoo y descargamos el stage3 con wget y el link que copiamos, cuando termine la descarga extraemos el contenido con tar

root # cd /mnt/gentoo
root # wget <'link del stage 3'>
root # tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
stage 3

Luego de extraer los contenidos del stage3 podemos ver que aparecieron varias carpetas con el comando “ls”

carpetas

Procedemos a editar el archivo make.conf que viene dentro del stage3, lo importante aquí es poner “-march=native” y el makeopts que corresponda. El número del makeopts lo puedes saber con el comando “nproc”, en mi caso mi procesador es un dualcore así que nproc me arroja 2. Aprovechamos también de especificar los mirrors desde donde descargaremos los paquetes.

*Nota: El cd oficial de gentoo trae la herramienta “mirrorselect” para elegir los mirrors de forma interactiva, como Ubuntu no la trae voy a pasar los mirror que me mejor me han funcionado. Una vez terminada la instalación puedes cambiar los mirrors con mirrorselect siguiendo la wiki de gentoo si es que quieres.

root # nproc
root # nano -w /mnt/gentoo/etc/portage/make.conf
root # echo 'GENTOO_MIRRORS="http://gentoo.mirrors.pair.com/ http://gentoo.ussg.indiana.edu/ http://mirrors.rit.edu/gentoo/"' >> /mnt/gentoo/etc/portage/make.conf

El resultado final del make.conf debería ser algo como esto:

make.conf

A partir de este punto podemos re-continuar la instalación en caso de que se corte, sólo hay que volver a montar root en la carpeta /mnt/gentoo y lo demás que montaremos a continuación.

Ahora montaremos los puntos necesarios y haremos chroot en nuestro gentoo. Todo lo que hagamos entro del chroot quedará guardado en gentoo, en otras palabras, es como si estuviéramos en una máquina virtual.

A continuación, copiamos la configuración de los repos luego de crear la carpeta repos.conf:

root # mkdir --parents /mnt/gentoo/etc/portage/repos.conf
root # cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

Luego copiamos la información dns para asegurar que el internet funcionará cuando hagamos chroot:

root # cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

Ahora montamos los sistemas de ficheros necesarios:

root # mount --types proc /proc /mnt/gentoo/proc
root # mount --rbind /sys /mnt/gentoo/sys
root # mount --make-rslave /mnt/gentoo/sys
root # mount --rbind /dev /mnt/gentoo/dev
root # mount --make-rslave /mnt/gentoo/dev

Y finalmente hacemos chroot para luego montar boot:

root # chroot /mnt/gentoo /bin/bash
root # source /etc/profile
root # export PS1="(chroot) ${PS1}"
(chroot) # mount /dev/sda1 /boot

Luego actualizamos los repos con:

(chroot) # emerge-webrsync
emerge-webrsync

Como estamos realizando una instalación básica dejamos el perfil por defecto y de inmediato actualizamos el sistema:

(chroot) # emerge --ask --verbose --quiet --update --deep --newuse @world

Seguramente luego de actualizar todo tendremos un mensaje “IMPORTANT” de noticias (news), podemos quitarlo con:

(chroot) # eselect news read
news read

Ahora toca configurar la zona horaria, en mi caso usaré los datos de donde vivo, Chile. Primero vemos las opciones disponibles con ls:

(chroot) # ls /usr/share/zoneinfo
(chroot) # echo "Chile/Continental" > /etc/timezone

Aplicamos los cambios con:

(chroot) # emerge --config sys-libs/timezone-data
timezone

Ahora toca configurar la localización que se usa para determinar la moneda, horarios, etc dependiendo del idioma y país:

(chroot) # nano -w /etc/locale.gen

Dentro del archivo debemos especificar en formato idioma_PAÍS.codificación. La codificación que recomiento es siempre UTF-8 que es la más universal:

locale

Luego de editar guardamos y le damos a:

(chroot) # locale-gen

Ahora toca seleccionar el locale que acabamos de generar, para ver los disponibles hacemos:

(chroot) # eselect locale list

Y seleccionamos el nuestro con:

(chroot) # eselect locale set <'número de tu locale'>
eselect locale

Reiniciamos nuestro entorno y continuamos:

(chroot) # env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

Ahora vamos a establecer nuestro fstab. Esta fase es muy importante, porque genkernel (lo que usaremos más adelante para generar el kernel) se basa en el fstab para generar la configuración. La verdad no es tan difícil, en lo que hay que poner mucha atención es en los identificadores de las particiones (UUID) porque si nos equivocamos el sistema NO ARRANCARÁ. Para conocer el UUID de nuestras particiones hacemos:

(chroot) # lsblk -f
lsblk -f

Como se ve en la imagen el UUID aparece a la derecha del tipo de partición (vfat para boot, swap, ext4 para root). Es importante tener esos datos a mano, por lo que recomiendo abrir otra terminal o pestaña y escribir lsblk en esa para luego copiar al fstab. Para editar el fstab hacemos:

(chroot) # nano -w /etc/fstab

Dentro debería quedar así (los UUID pueden ser diferentes en tu caso):

fstab

Guardamos los cambios y ahora vamos a instalar las fuentes del kernel:

(chroot) # emerge --ask --verbose --quiet sys-kernel/gentoo-sources

Ahora debemos aceptar la licencia de genkernel, basta con escribir:

(chroot) # echo "sys-kernel/linux-firmware linux-fw-redistributable no-source-code" >> /etc/portage/package.license

Y luego instalamos genkernel con:

(chroot) # emerge --ask --verbose --quiet sys-kernel/genkernel

Y generamos el kernel (Esto es lo que más demora en toda la instalación. A mí me llevó casi 2 horas!):

(chroot) # genkernel all
genkernel

Ponemos el hostname, este será el nombre de nuestra máquina. En mi caso le pondré minigento

(chroot) # nano -w /etc/conf.d/hostname
hostname

Mi máquina no pertenece a ningún dominio, así que sacamos el dominio para que no aparezca al bootear borrando “.\O” de /etc/issue:

(chroot) # nano -w /etc/issue
issue

Ahora debemos activar el internet para que funcione al inicio del booteo, para esto usaremos ifconfig para saber el nombre de nuestra interfaz (en mi caso es enp0s3):

(chroot) # ifconfig
(chroot) # cd /etc/init.d
(chroot) # ln -s net.lo net.<’nombre de la interfaz’>
(chroot) # rc-update add net.<’nombre de la interfaz’> default
netscripts

Ahora escribimos nuestro nombre en la red (es importante para definir el localhost):

(chroot) # nano -w /etc/hosts
localhost

Ahora vamos a configurar la clave de root, es importante que no se nos olvide pues será la clave de superusuario de nuestro sistema. Luego podemos editar la distribución del teclado, en mi caso es español latinoamericano, por lo que pongo “la-latin1”.

(chroot) # passwd
(chroot) # nano -w /etc/conf.d/keymaps
keymap

Por último, configuramos nuestra hora, si tu reloj interno de la bios está en UTC pones UTC, en otro caso pones local (en mi caso es UTC).

(chroot) # nano -w /etc/conf.d/hwclock
clock utc

Ahora debemos instalar un systemlogger, en mi caso usaré sysklogd y lo agregamos al inicio. También debemos instalar el paquete sys-fs/dosfstools porque nuestra partición boot está en formato vfat. Lo último será un cliente dhcp, la mayoría de las personas usan dhcp para conectarse a internet por lo que es buena idea instalar uno.

(chroot) # emerge --ask --verbose --quiet app-admin/sysklogd
(chroot) # rc-update add sysklogd default
(chroot) # emerge --ask --verbose --quiet sys-fs/dosfstools
(chroot) # emerge --ask --verbose --quiet net-misc/dhcpcd
sysklogd

Ahora pasamos a instalar el cargador de arranque, existen varias opciones, pero la más conocida es Grub:

(chroot) # emerge --ask --verbose sys-boot/grub:2
(chroot) # grub-install --target=x86_64-efi --efi-directory=/boot
(chroot) # grub-mkconfig -o /boot/grub/grub.cfg
grub

Ya con grub instalado hemos terminado la instalación, solo resta desmontar las particiones y reiniciar la máquina.

(chroot) # exit
root # cd
root # umount -l /mnt/gentoo/dev{/shm,/pts,}
root # umount -R /mnt/gentoo
root # reboot

Con eso concluye la guía rápida de instalación (No era tan rápida cierto?). Cuando domines lo que escribí puedes empezar a personalizar tu instalación y crear un sistema gentoo hecho a la medida para tu máquina. Si por casualidad falla, puedes volver a intentarlo. Lo importante es que no te desanimes, la última década las distintas distribuciones top se han preocupado de facilitar el proceso de instalación por lo que no es tu culpa no saber cómo se hace, sólo debes entender que Gentoo no es una distribución normal.

Si tienes alguna duda, sugerencia o crítica eres bienvenid@ al grupo de telegram "Gentoo Linux en español", allí me puedes encontrar como @yacaCL. Saludos!

Contenido licenciado bajo CC BY-SA 4.0. Código fuente licenciado bajo GNU GPLv3.