5 lecciones aprendidas instalando Gentoo

gentoo-user
si no eres más o menos así, no sabrás usar Gentoo ;oP

Desde hace más de un año que instalé Gentoo por primera vez, he instalado esta distro alguna vez más. En el transcurso de las instalaciones, se aprende. Desde mi primer intento de instalación (fracasado), hasta hoy, que instalo Gentoo casi de manera rutinaria, ha supuesto para mí un recorrido apasionante por GNU/Linux en general y por Gentoo en particular. Hice este mismo recorrido de profundidad en Debian hace muchos años, y en Arch hace 5 años, ahora lo estoy haciendo en Gentoo. No soy programador (de hecho no conozco ningún lenguaje de programación, tan sólo un poco de HTML), ni hacker, lo que demuestra que Gentoo no es una distro linux para piratas zumbados. Empecé con Ubuntu en 2005, como tanta gente.

Hace ya unos meses publiqué una guía de instalación de Gentoo, que he mantenido, corregido, depurado y probado hasta hoy y que sigue siendo mí método básico de instalación.

https://rootsudo.wordpress.com/2014/09/14/manual-casi-facil-para-instalar-gentoo-paso-a-paso/

Hace unas semanas, volví a instalar Gentoo en un nuevo equipo y deseo compartir aquí algunas lecciones aprendidas.

***********************************************************

Hice una instalación en la que por error elegí un perfil inadecuado:

eselect profile list

[3] default/linux/amd64/13.0/desktop

este es un perfil básico para desktop genérico, pero el problema es que yo, aunque no quería instalar Gnome, tiendo a instalar muchas aplicaciones de Gnome, simplemente porque me gustan o estoy acostumbrado a ellas, y tuve problemas de bloqueo de paquetes al haber incoherencias entre las etiquetas USE de paquetes que necesitaban udev, otros que necesitaban systemd (pues necesitaban Gnome) etc. Fui capaz de resolver los bloqueos, pero como estaba en el inicio de una instalación decidí hacer las cosas bien desde el principio y reinstalar desde cero con un perfil adecuado a mis necesidades.

Lección 1:

Antes de instalar Gentoo, es importante saber qué tipo de sistema operativo quieres tener. Una de las grandes potencias de Gentoo es su versatilidad y capacidad de personalización, pero precisamente esa potencia supone complejidad, pues hay que tener claro qué se va a instalar para evitar entrar en el “apasionante” mundo de los bloqueos generados casi siempre por incoherencias entre perfiles, USE’s del make.conf, y USE’s de dependencias.

Así por ejemplo, en mi caso que soy básicamente un usuario Gnome, incluso aunque no lo instalé, como es el caso en este momento que tecleo desde un Gentoo con el perfil:

[5] default/linux/amd64/13.0/desktop/gnome/systemd
con systemd habilitado
con i3
y con XFCE4
(elijo desde el xinit con cual arrancar desde consola)

no he instalado Gnome como entorno de escritorio, pero tengo instalados muchos programas de Gnonme que me gustan (Monitor del sistema, Gnome Terminal, gThumb, Totem, etc) por lo que mi perfil adecuado es ese, o sea con Gnome+systemd, con lo que todo va como la seda, y las USE son coherentes con Gnome y con Systemd.
Además de que XFCE4 va perfecto, sin problemas de permisos para accesos, políticas del sistema, etc.

***********************************************************

Al instalar añadí a las USE que trae por defecto el make.conf las siguientes “alsa X y systemd” con lo que me quedó así:

USE=”bindist mmx sse sse2 alsa X systemd”

Lección 2:

recomiendo añadir siempre “alsa” y “X” a las USE del make.conf, para que todos los paquetes se compilen para tener sonido ALSA y para que funcionen bajo el servidor gráfico. Salvo en el caso, lógicamente, que se desee un sistema de servidor, sin audio y que no se vaya a utilizar el entorno gráfico. Creo que esto también es útil para evitar problemas como que VLC se instale sin GUI, dado que todo paquete “sabrá” que va a residir en un entorno X.

Y reflexionar si se quiere instalar Systemd. Si se llega a esa conclusión, o se va a instalar Gnome o paquetes Gnome (GTK) yo recomiendo añadir la USE “systemd” al make.conf

***********************************************************

Siempre que se hagan modificaciones en las USE de make.conf, y lógicamente si se hace un cambio de perfil, es ESENCIAL hacer una actualización completa del sistema, para que se integren las modificaciones USE en la compilación de todos los paquetes. Sí, ya sé que es un coñazo y que tardará mucho en recompilar todo lo que haya que recompilar, pero Gentoo no es una distro Linux para cagaprisas ;o)

Lección 3:

Por lo tanto, hágase:

sudo emerge -avDN @world

sudo emerge --depclean

y a esperar.

***********************************************************

Como yo he instalado Systemd pues:

no hay que olvidarse de habilitar systemd en la compilación del Kernel:

Gentoo Linux --->
Support for init systems, system and service managers --->
[*] systemd

sin decirle al kernel que soporte systemd no funcionará, lógicamente.

Si no se ha instalado ya systemd se instala:

sudo emerge -a systemd

Lección 4:

para evitar problemas de bloqueos entre systemd y udev, sacamos a este último de “world”, así:

sudo emerge --deselect sys-fs/udev

de manera que no se instale y no se pegue con systemd.

y por si a alguno se le olvida, recordad que hay que agregar systemd en el arranque añadiéndolo a /etc/default/grub

# Append parameters to the linux kernel command line
GRUB_CMDLINE_LINUX=”init=/usr/lib/systemd/systemd”

ya sólo hay que regenerar el grub.cfg para que integre los cambios y en el siguiente arranque se inicie systemd en vez de OpenRC.

sudo grub2-mkconfig -o /boot/grub/grub.cfg

***********************************************************

Al instalar systemd hay algunos cambios que hacer, pues los servicios (no esenciales) que estuviesen habilitados para el arranque en OpenRC no tienen porqué estar habilitados en systemd, por lo que hay que activarlos.

Lección 5:

En mi caso yo uso DHCPCD, por lo que lo habilito para el arranque son systemd:

sudo sytemctl enable dhcpcd

(es muy cómodo pues automáticamente sin tener que instalar gestores de redes me asigna una IP al ethernet así como a mi tarjeta wifi a través de wpa_supplicant).

Véase: conectar a internet por wifi desde consola (wpa supplicant + DHCPCD)

Configuro el idioma, juego de caracteres y el teclado para systemd:

localectl set-keymap es

localectl set-locale LANG="es_ES.UTF-8"

localectl set-x11-keymap es

(esto es para español de España, tú, lógicamente, pones el tuyo)

***********************************************************

Eso es todo por hoy. Espero que os sirvan estas 5 pequeñas lecciones que he aprendido instalando y configurando Gentoo.

Besos piratas de hacker zumbao.

gentoo10-15

Anuncios

conectar a internet por wifi desde consola (wpa supplicant + DHCPCD)

fundamentos GNU/Linux fun-gnu


Siempre instalo GNU/Linux desde una conexión ethernet. Es más simple, rápido y lo único que hago es activar DHCP y este le asignará automáticamente una IP a la interfaz de red.

Más adelante, si instalo Gnome, este instala NetworkManager y la conexión wifi se convierte en algo banal.

El otro día, tras una nueva instalación de Gentoo, me negué a instalar Gnome, hice una minimalista instalación con i3, personalizada, simple, hermosa, rápida y perfecta. Y así mismo me negué a instalar NetworkManager.

Así que me dije, es el momento de conectar a internet por wifi desde la consola o un terminal.

Esto se puede hacer de diferentes formas, pero la que describo es muy sencilla y pensada para que tu ordenador se conecte automáticamente siempre a TU wifi, sin hacer nada ni preguntarte nada. No está pensada para cambiar de conexión wifi, eso se hace de otra manera que algún día contaré.

Vamos allá:

Se instala el paquete “wpa supplicant”:

sudo apt install wpasupplicant
sudo pacman -S wpa_supplicant
sudo emerge wpa_supplicant

Para Debian, Arch y Gentoo, respectivamente.

En un terminal se utiliza wpa_passphrase para generar los datos de conexión adecuados:

wpa_passphrase nombre-de-tu-wifi frase-contraseña

lo que genera algo así adaptado a tus datos:

*************************************************************

network={
ssid=”nombre-de-tu-wifi
#psk=”frase-contraseña
psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}

*************************************************************
editamos el archivo wpa_supplicant.conf

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Y copiamos el resultado de wpa_passphrase más la autorización de wpa_supplicant para el grupo wheel.

O sea, algo similar a todo esto:

*************************************************************

# Allow users in the ‘wheel’ group to control wpa_supplicant
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel

# Make this file writable for wpa_gui
update_config=1

network={
ssid=”nombre-de-tu-wifi”
#psk=”frase-contraseña”
psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}

*************************************************************

Lógicamente, tu usuario debe pertenecer el grupo wheel (el mismo de sudo).

Miras si estás en el grupo wheel:

groups pepito

Si no perteneces a wheel te añades así:

sudo usermod -a -G wheel pepito

Y ya casi está. Para que DHCP le asigne una IP al arranque hace falta que DHCPCD arranque al inicio:

Le decimos a Systemd que inicie DHCPDC en cada arranque del sistema.

sudo systemctl enable dhcpcd

No es necesario añadir wpa_supplicant al inicio, pues DHCPDC buscará automáticamente si hay un fichero /etc/wpa_supplicant/wpa_supplicant.conf válido, y si lo hay conectará la interfaz wifi a esa red con esa contraseña.

Y ya está, rebootea, arranca y comprueba con ifconfig que la interfaz wifi tiene asignada una IP.

Este es el resultado de mi ifconfig:

*************************************************************

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.8 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fdf4:8e92:3d68:8400:2f2e:90d9:4dd8:faea prefixlen 64 scopeid 0x0<global>
inet6 fe80::4641:ce9d:3f9f:4268 prefixlen 64 scopeid 0x20<link>
ether 74:d0:2b:1e:3a:1d txqueuelen 1000 (Ethernet)
RX packets 9590 bytes 7058517 (6.7 MiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 8932 bytes 1072214 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.3 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fdf4:8e92:3d68:8400:51b6:4f49:48df:7e88 prefixlen 64 scopeid 0x0<global>
inet6 fe80::a79b:2de:a75f:c590 prefixlen 64 scopeid 0x20<link>
ether 48:d2:24:75:4b:c7 txqueuelen 1000 (Ethernet)
RX packets 154 bytes 37043 (36.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14 bytes 1820 (1.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

*************************************************************

DHCPCD le ha asignado la IP 10.0.0.8 a la interfaz de red ethernet (enp3s0) y
la IP 10.0.0.3 a la interfaz de red wifi (wlp2s0).

Por lo que tendré siempre conexión a mi wifi y, por tanto a internet, aunque desenchufe el cable de red  ;-P

He probado esto en Gentoo y en Arch y funciona sin problema, y de la misma forma debería funcionar en cualquier otra distro LINUX.

SYNC (el servidor rsync) sale fuera del make.conf

gentoo-powerA partir de la versión de Portage 2.2.16, la configuración del servidor rsync que contiene la URI para la actualización del árbol de Portage, sale fuera del archivo /etc/make.conf donde estaba antes en una línea con este formato:

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

a partir de ahora se utilizará un sistema más limpio, flexible y potente para organizar, configurar y seleccionar los repositorios de Gentoo. Tanto los del árbol principal de Portage, como para los overlays de Layman y overlays locales.

Nuevo sistema:

creamos el nuevo directorio repos.conf:

sudo mkdir /etc/portage/repos.conf

y para mantener la configuración estandar de Gentoo tan sólo es necesario hacer:

sudo cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf

con lo que en /etc/portage/repos.conf/ tendremos un nuevo archivo de configuración repos.conf con este aspecto:

*******************************************************

[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes

*******************************************************

Tal y como vemos, tenemos la localización del árbol de Portage en el sistema, el tipo de sincro, puede ser: rsync, git (repo git), svn (repo subversion), webrsync (emerge-webrsync), cvs y laymansync (layman overlays). Lógicamente también aparece la URI del servidor y se puede determinar si por defecto se sincronizará ese repo o no.

La URI principal tal y como vemos es:

# Default: "rsync://rsync.gentoo.org/gentoo-portage"

pero tenemos más opciones:

# rotación: "rsync.us.gentoo.org/gentoo-portage"
# una URI de rotación de Gentoo que permite distribuir la carga de servidores rsync para optimizarlos.

o servidores por zonas geográficas, puedes elegir el que tengas más cerca:

# Europe: "rsync://rsync.europe.gentoo.org/gentoo-portage"
# South America: "rsync://rsync.samerica.gentoo.org/gentoo-portage"
# North America: "rsync://rsync.namerica.gentoo.org/gentoo-portage"
# Asia: "rsync://rsync.asia.gentoo.org/gentoo-portage"
# Australia: "rsync://rsync.au.gentoo.org/gentoo-portage"

Pues ya podemos eliminar la línea SYNC de nuestro archivo /etc/make.conf (si no lo hacemos Portage (>2.2.16) se quejará a la primera oportunidad que tenga a través de emerge, ya sabéis que Portage es muy parlanchín 😉 ).

Tal y como hemos dicho, la nueva configuración también afecta a los overlays de Layman y a los overlays locales, mediante un archivo /etc/portage/repos.conf/layman.conf y /etc/portage/repos.conf/overlay-local.conf pero como esto supone una actualización de Layman y Overlays Locales, lo trataremos en otra entrada próximamente.

más información (en inglés):

https://wiki.gentoo.org/wiki/Project:Portage/Sync

wallpaper-gentoo-morpheus