Gentoo-sources: Cómo armar tu kernel sin morir en el intento

Bueno, este es uno más de esos puntos que no puedo pasar por alto antes de comenzar la guía de instalación de Gentoo :) sé que ya muchos estarán esperando con ansias este post, y perdón por hacerlos esperar, pero también considero que no explicar esto atenta contra mi status de usuario Gentoo :P Sin más que mencionar, comencemos.

¿Qué es el kernel?

El kernel es propiamente la parte Linux de toda distribución, es el programa que nos permite comunicar cada pieza de hardware de nuestro equipo con los programas que corremos en él. Su creador, Linus Torvalds, decidió liberarlo bajo la licencia GPL y gracias a él, y al proyecto GNU, podemos disfrutar hoy en día de tantas distribuciones y variedades para elegir. Está escrito en C en su mayoría, con un poco de Assembly por aquí y por allá, y hoy por hoy es el proyecto más grande de software libre, con miles de desarrolladores trabajando en él, tanto por hobby como profesionalmente, y mantiene una línea constante de crecimiento acelerado desde hace ya varios años. Aquí les dejo la página oficial del kernel para que puedan dar un vistazo en profundidad.

¿Cómo se encuentra en Gentoo?

Bueno, como es de esperarse en Gentoo, existen muchas opciones de kernel, les dejo aquí una pequeña lista para que vean mejor a lo que me refiero:

  • gentoo-sources: Kernel 4.12 con parches especiales para Gentoo Linux.
  • git-sources: Kernel directamente descargado desde el repositorio Git de Linus.
  • vanilla-sources: Kernel completo sin ningún tipo de parche.
  • xbox-sources: Kernel completo para Xbox Linux.
  • zen-sources: El kernel vivo de Zen

Para una lista completa les dejo el link del wiki donde pueden encontrar todos los kernel que mantiene Gentoo en sus repositorios.(todo lo que termina con -sources)

Tengo el código, ¿ahora qué?

Bueno, a diferencia de todos los demás paquetes de Linux, el kernel NO se actualiza, se instala. Esto nos permite tener múltiples kernel en nuestro sistema al mismo tiempo, claro que siempre se podrá correr solamente uno a la vez. Para poder compilarlo es necesario usar las herramientas que ya hemos discutido en un post anterior. Pero como en Gentoo la comunidad hace el 80% de tu trabajo, vamos a hacer la forma más sencilla ;)

genkernel-next:

Permítanme presentarles una herramienta que es simplemente estupenda :) se llama genkernel-next, la pueden encontrar en los repositorios de Gentoo.

Diseño propio. Christopher Díaz Riveros

La lista de opciones es aún más grande, pero aquí se pueden ver algunas de mis opciones favoritas. Uno de los pasos más importantes al momento de instalar Gentoo es la configuración de tu kernel, esto te permitirá sacar el máximo potencial a tu computadora y al mismo tiempo evitar todo aquel peso extra que tienen muchos kernel pre-compilados.

CLI y GUI:

Como es de esperarse, la configuración del kernel también tiene varias formas de realizarse :) elecciones por todos lados, simplemente impresionante. Aquí les dejo algunas de las fotos de cómo se ven las opciones:

genkernel –xconfig all

Diseño propio. Christopher Díaz Riveros

genkernel –qconfig all

Diseño propio. Christopher Díaz Riveros

genkernel –nconfig all

Diseño propio. Christopher Díaz Riveros

genkernel –menuconfig all (mi favorito)

Diseño propio. Christopher Díaz Riveros

Estupendo, pero ¿cómo encuentro las cosas?

Una sabia pregunta que todos seguro se están haciendo ahora mismo. Si no deseas tener que buscar línea por línea, recuerda que “/” y “?” son tus amigos en esta misión. Pero como es mejor ver que leer, les muestro a lo que me refiero con esto.

Supongamos que necesitamos revisar nuestro procesador, el kernel soporta tanto intel como amd, y el nuestro es intel. Si presionames / (slash), nos llevará al siguiente menú:

Diseño propio. Christopher Díaz Riveros

Genial, ahora veamos la magia en acción :)

Diseño propio. Christopher Díaz Riveros

¡Estupendo! Ahora tenemos una lista desplegable con toda la información que podemos necesitar, el nombre técnico del módulo, la ruta, el tipo de valor, etc. Y ahora la pregunta… ¿cómo llego a la ubicación? ¡También muy sencillo! si nos fijamos en la parte izquierda, tenemos números dentro de paréntesis. Presiona uno de ellos y verás la magia ocurrir nuevamente.

Diseño propio. Christopher Díaz Riveros

¡Tan rápido como esto! Ya estamos en la ubicación que necesitamos. Pero… espera, yo te dije que es tu amigo, ¿lo recuerdas? Pues veamos qué sucede si apretamos ? justo ahora.

Diseño propio. Christopher Díaz Riveros

Una pequeña descripción del módulo, sus opciones y dependencias :) todo al alcance de tu mano. Una vez terminada tu búsqueda, puedes dar a exit. Podrás notar que la barra superior ha retrocedido a la línea Search (intel), si vuelves a dar exit, te regresará al menú principal donde podrás comenzar una nueva búsqueda.

¿Qué mover y qué no?

En este punto ya debes sentirte totalmente poderoso, porque has conseguido algo que pocos humanos hacen en su vida, compilar un kernel. ¡Felicitaciones! Pero ahora surge la pregunta… ¿qué debo modificar? Eso mi amigo, es algo que solo tú puedes descubrir, pero por supuesto que yo te puedo dar un par de recomendaciones que a mí me ayudan mucho:

El default funciona

Como en todo programa, Linux está configurado para funcionar con las configuraciones por defecto. Esto te garantiza que incluso si no deseas configurar nada, al momento de compilar vas a tener un kernel funcional.

Si no lo conoces, no lo muevas

Esto es algo que tal vez los más aventureros pasarán por alto. Es genial poder navegar de manera rápida por las opciones, pero si te interesa conocer realmente cómo piensa tu máquina, una lectura de cada opción es una forma estupenda de hacerte a la idea. Siempre recordando lo que cambias y buscando o comparando con un navegador es bastante recomendable también.

El mayor peso está en los drivers

Muchos drivers vienen cargados por defecto, esto hace al kernel pesado. Por ejemplo, solo para tarjetas de red, existen como 10 drivers oficiales en el kernel, y muchas distribuciones compilan los 10, o más, pero en realidad tu en tu computadora solo usarás uno (ojo que para wifi hay otra sección aparte). Si deseas disminuir el peso de tu kernel de forma considerable, tu primer opción está ahí. Para esto, tus mejores amigos serán lspci, lsusb, Google. Con esto podrás tener una idea bastante clara de lo que tiene tu sistema y solo dejar los drivers necesarios para hacerlo funcionar. Por ejemplo les dejo mi output de lspci:

Diseño propio. Christopher Díaz Riveros

Con esto puedo tener bastante claro información crítica, como mi controlador de red, el de wifi, mi disco duro SATA, y muchas cosas más que me ayudan a disminuir el peso de mi kernel.

Revisa bien que estés compilando lo que es necesario con *

Gracias nuevamente a nuestro compañero njord, un punto importante que olvidé mencionar por la emoción :)

Además hay que mencionar que hay características del kernel que conviene incluir dentro del mismo(*), y otras manejarlas como módulos (M). Recuerdo mi primer kernel compilado, queriendo dejar como módulo el soporte para reiserfs de mi root, cuándo en la vida iba a funcionar?!?! xD…

Ciertamente, si tu kernel necesita de algo para funcionar, no puede ser un módulo. Por defecto, los módulos cargan después de que el kernel ha hecho todo el proceso de inicio. Si tu kernel necesita algo para iniciar, mejor que esté compilado dentro <Y> en lugar de como módulo <M>… Lo que nos lleva al primer punto otra vez “?”  es nuestro amigo ;)

En resumen:

Bueno, ahora que se han sumergido un poco en el mundo del kernel, creo que ya he cumplido con otro hito necesario para poder generar una guía de instalación de Gentoo de ~20 pasos :) pero si encuentro algo más por ahí, intentaré explicar antes que solo dejar suelto en el aire.

Saludos,

Gentoo: El corazón de la bestia

 

Wow, veo una gran acogida a mis pequeños aportes y me motiva mucho más a poder seguir compartiendo con esta bella comunidad. Ya sé que he prometido una guía de menos de 20 pasos, pero tendrán que comer ansias un poco todavía… Es que sencillamente no puedo empezar un tutorial de Gentoo sin detenerme a hablar de su corazón y la esencia misma de todo su poder Portage, su gestor de paquetes. Además, como fiel usuario de Gentoo creo yo que es mejor entender antes que repetir, y con esto solo quiero decir que antes de empezar una guía sencilla como copiar un script (repetir), es mejor saber lo que hacemos para poder después escribir el script. Como el conocido refrán:

“Dale a un hombre un pez y le habrás calmado el hambre por un día, enséñale a pescar y lo habrás salvado de por vida”.

Sin más que agregar, comencemos:

¿Qué es portage?

Portage, es el gestor de paquetes de Gentoo Linux. Sus equivalentes en otras distribuciones son apt (Debian y derivados) , yum (Red Hat, SUSE y derivados) , pacman (Arch y derivados)… Está inspirado en Ports de FreeBSD, eso debido a que el fundador de Gentoo utilizó una temporada FreeBSD y de ahí la inspiración y parecido en muchas de las maneras. Estuvo escrito en bash al principio y emerge (el nombre del programa que se encarga de instalaciones en línea de comando) a lo largo de su historia ha tenido una amplia base de bash y más actualmente Python para poder realizar sus funciones.

¿Por qué es importante saber esto?

Bueno, como todo usuario Linux, el gestor de paquetes es tu herramienta principal para poder mantener tu sistema funcional y operativo, te permite instalar, actualizar, eliminar, y muchas otras cosas más. Portage se subdivide en diversos comandos que se especializan en realizar una cosa, y hacerla bien (una conocida forma de trabajar en UNIX).

El corazón de Portage:

A diferencia de otros gestores de paquetes (al menos los que ya he mencionado antes), Portage basa todo su poder en un archivo de configuración. Este archivo se encuentra dentro de la ruta /etc/portage/make.conf . Por el momento es muy difícil explicar el intrincado sistema que existe en Gentoo que permite entregar todo el poder de la distribución a este archivo sin romper nada en otro lado, pero sigamos que eso lo dejaré para otro post ;)

Un vistazo al corazón:

Diseño propio. Christopher Díaz Riveros

Como podrán ver, no es algo fuera de este mundo, en realidad, tengo otros archivos que son mucho más específicos, pero lo que está aquí es más que suficiente para poder tener tu Gentoo operativo y funcional. Comencemos a revisar las líneas que siguen:

CFLAGS/CXXFLAGS:

El primer paso por nuestra aventura en el corazón de Gentoo son los C Flags. Estos flags permiten compilar programas en C (los más básicos que necesita un sistema para funcionar) con distintos tipos de ventajas. Como pueden apreciar en mi configuración, -march=broadweel me permite usar la generación de mi procesador al momento de compilar mis programas. -O2 y -pipe vienen por defecto, y si me detengo a explicar cada una me va a tomar tal vez un libro completo.

Sin embargo, aquí les dejo unos cuantos tipos de -march explicados en la wiki de Gentoo.

https://wiki.gentoo.org/wiki/Safe_CFLAGS

CHOST:

El CHOST se encarga de mostrar la ubicacióny tipo por defecto del compilador, esta variable es utilizada en equipos que cuenten con distintos tipos de compiladores, como los fanáticos de Arduino. Para una configuración básica no es necesario entrar en detalles.

Nota del autor: Gracias por tu aporte njord, y por compartir tus conocimientos con el resto de la comunidad :)

Esta variable del sistema no indica como tal la ubicación del compilador, más bien le indica al compilador la arquitectura del procesador, y opcionalmente la plataforma de hardware, sistema operativo y libreria de C para los cuales se van compilar los paquetes y aunque esta variable se define de manera global dentro de make.conf (como todo lo demás que aparecé ahí) nada impide que se puedan compilar paquetes para otras arquitecturas.

USE:

El corazón de los programas, los USE flags de make.conf son universales. Con esto me refiero a que cualquier programa que cuente con un USE de X, al momento de ser compilado, contará con el X activado. Esta opción es bastante útil para aquellos USE flags que vas a utilizar en muchos (si no son todos) de tus programas. Como pueden ver, gnome systemd hacen que mi sistema compile soporte para estos tipos de programas en cualquier software que lo tenga como posibilidad.

MAKEOPTS:

Esta es una de las mejores ventajas de los procesadores rápidos. MAKEOPTS como su nombre lo implica, son opciones que se agregan a la sentencia make que se corre al compilar cada programa. en este caso el -j9 me permite compilar 9 programas al mismo tiempo, 1 por cada hilo en mi núcleo del i7. Un número más conservador es -j5, pero incluso aquí, el tiempo de compilación se reduce bastante para cada instalación.

CPU_FLAGS_X86:

Oh oh… ahora deben estar pensando… ¿qué son esos números? y ¿de dónde o cómo sé yo qué poner aquí? La respuesta es la pura esencia de Gentoo :) aprovecha a la comunidad ;) quienes ya crearon un programa que te da el resultado. Para mostrar esto solo hace falta instalar el siguiente programa y ejecutarlo:

Diseño propio. Christopher Díaz Riveros

Como pueden ver, me muestra los FLAGS que mi procesador posee y los puedo copiar a mi archivo make.conf mediante redirects o escribiendo con nano, vim, o cualquier otro editor de texto :)  (Ya irán viendo cuán automatizado está todo en Gentoo ;) )

PORTDIR:

Simplemente el directorio donde comienza la raíz de los ebuilds. Estos son los scripts de Bash que permiten a portage instalar programas, pero eso lo dejaremos para otro post ;)

DISTDIR:

Como Gentoo instala todo desde su fuente, este directorio almacenará todo el código fuente que vamos descargando, si desean pueden borrar su contenido cada cierto tiempo, pero hay muchos otros usos interesantes para estos programas, pero eso también para otro post ;)

VIDEO_CARDS:

Bueno, como su nombre lo indica, la marca de tu tarjeta de vide, esto evita que tengas que instalar drivers al momento de instalar cosas como X u Wayland.

LANG:

Un espacio bastante cómodo para poder agregar todos los idiomas que quieres que soporte tu sistema, en mi caso yo quiero tener en español de Perú, pero se pueden agregar más para poder cambiar en caso de ser necesario.

INPUT_DEVICES:

El formato o driver con el que funcionan tus periféricos, dado que uso GNOME, libinput se encarga de mi touchpad. Otra opción bastante conocida pero que está siendo reemplazada es synaptics.

LINGUAS:

L10N:

Los que saben de programación sabrán por qué no hay nada en el anterior, sino, miren cómo funciona which en muchos lenguajes de programación ;) .

Estas variables permiten saber el lenguaje  de los programas instalados, en mi caso tanto en inglés como en español está bien.

RUBY_TARGETS:

Los TARGETS muestran otra funcionalidad bastante peculiar de Gentoo Linux. Es posible tener distintas versiones conviviendo dentro del mismo sistema. Esto quiere decir que yo podría tener Ruby 21, 22 ,23 y 24  al mismo tiempo y sin conflictos, lo mismo que Python, Apache, Tomcat, MariaDB, entre muchos otros. Esta función se denomina SLOT en nuestra comunidad y es tema para un post completo, por lo que lo dejaremos para otra oportunidad ;)

GENTOO_MIRRORS:

Los lugares de donde vas a copiar tu colección de ebuilds, sirve de manera especial para poder tener puntos de acceso al momento de sincronizar. Yo tengo estos dos de backup, puesto que mi lista de ebuilds la descargo directamente de Github, y solo es necesario hacer git pull para descargar (obviamente, Gentoo lo hace por mi de todas maneras cuando escribo emerge –sync)

MUCHO MÁS:

Estas no son todas las opciones de make.conf, existen muchas más, y probablemente algunas permitirán mayores ventajas o configuraciones, pero con esas es más que suficiente para tener un sistema funcional :)

/etc/portage:

Les presento un poco de lo que existe dentro de esta carpeta, solo para que se puedan hacer una idea de lo que falta por conocer y que iremos viendo en estos días y posts :)

Diseño propio. Christopher Díaz Riveros

Un poco más:

Como no puedo dejar de comentar un poco más, me adelantaré un poco y les mostraré una parte especial de esta carpeta, el archivo make.profile. Los perfiles de Gentoo te permiten generar configuraciones especializadas para cada tipo de usuario, así no es necesario que escribas o conozcas todos los USE, o muchas cosas más, simplemente puedes escoger un perfil y empezar sobre ese. Esta es la lista actual de perfiles que tenemos en Gentoo el día de hoy.

Diseño propio. Christopher Díaz Riveros

Como pueden ver, mi perfil está seleccionado con amd64, un desktop, con GNOME y usando systemd. Al seleccionar este perfil me aseguro que todos los USE flags y demás configuraciones sean los mínimos requeridos para tener mi sistema corriendo, y en base a eso yo hago los retoques. (Seguro alguno que otro creía que tendría que pensarlo todo desde cero… eso es mentira aquí ;) )

Como podemos ver, perfiles son muchos, y cada uno con sus beneficios propios.

Para terminar:

Bueno, otro post que se va de mis manos para sus ojos :) espero que las ansias de probar Gentoo ya los tenga bastante impacientes :D así podré sentir una emoción mayor al momento de crear la guía de instalación. Saludos a todos,

Gentoo: ¿Por qué opté por compilar mis propios programas?

Bueno, dada la gran acogida de mi anterior post, vengo a contarles un poco más sobre mi distribución favorita, Gentoo Linux. Prometo que este post tendrá información entretenida que les ayudará a entender un poco sobre los mitos que surgen frente a la temible compilación de software. También prometo que esta información será útil para la próxima guía de instalación de Gentoo Linux en ~20 pasos (todavía no los he contado bien, pero creo que son incluso menos). Sin más que aumentar, comencemos:

¿Qué es compilar?

Es el proceso que realiza un programa (comúnmente llamado compilador) para convertir código escrito en lenguaje humano (archivos C, C++,etc) en código entendible para una máquina (código binario). Miremos el siguiente ejemplo:

Diseño propio, Christopher Díaz Riveros

Este es nuestro pequeño programa en C ( si después desean otros tutoriales sobre C también estaré encantado de mostrar lo poco que he aprendido en este tiempo). Ahora veamos cómo se ve el resultado después de compilar.

Diesño propio, Chrirstopher Díaz Riveros

Hermoso, ¿no es cierto? :) Esto es lo que nuestra máquina entiende para poder escribir ese pequeño “Hola” en nuestra terminal cada vez que se ejecuta el programa.

El proceso de compilación:

Como no sirve de nada tener un programa que imprima un simple “Hola” en la pantalla, pues los archivos .c y .h abundan en proyectos (como en todos los lenguajes de programación). Para poder hacer el proceso de compilación un poco más sencillo aparecieron nuevas herramientas, la más representativa de todas es el comando make.

Make toma un archivo Makefile como punto de partida y compila lo necesario para poder crear el ejecutable final, en algunos casos este paso requiere ejecutar un archivo llamado configure para poder asignar unas cuantas variables necesarias para el compilador para compilar (valga la redundancia) un archivo útil.

Es por esto que en muchos tutoriales encontraremos los siguientes pasos:

Diseño propio. Christopher Díaz Riveros

La magia de ./configure:

Para mostrales uno de los secretos más ocultos y entretenidos del código fuente, iremos al código fuente de un programa que todos conocemos a la perfección, sudo. Primero los pasos de siempre, pero me detendré en ./configure  para mostrarles algo especial.

Diseño propio. Christopher Díaz Riveros

Esto nos devolverá una larga lista de opciones, entre las cuales les mostraré la que más me llama la atención.

Diseño propio. Christopher Díaz Riveros

--with-insults… como su nombre lo indica, compila sudo con insultos :D es una divertida funcionalidad que permite lanzar un insulto al usuario cada vez que se equivoca en su clave. ¿Para qué sirve? pues no hace mucho :P pero deja claro un punto. Existen miles de opciones que no vienen por defento en la mayoría de distribuciones.

Así como estás, hay muchas otras que tal vez estarán activas en distribuciones de código binario y que nunca utilizarás, o habrá algunas que necesites, pero no vendrán con tu binario distribuido oficial, lo que implica que cada actualización será manual.

Empieza la diversión en Gentoo:

Ya hemos visto cuántas opciones podemos estar perdiendo o arrastrando con programas precompilados. Pero ahora vamos a centrarnos un poco en el problema de lo pre-compilado.

Performance:

¿Alguno se ha preguntado por qué las máquinas nuevas solo se ven un poco más rápidas comparadas con otras no tan modernas? Si el procesador es mejor, hay más RAM, todo es mejor, ¿por qué no va más rapido? La respuesta es sencilla… compilación.

Pongamos un ejemplo muy práctico.

Mis programas son compilados con la opción --march=broadwell… esto es debido a que mi procesador es broadwell (i7 de intel). ¿La desventaja de esto? ningún procesador anterior a broadwell es capaz de reconocer este binario. En este punto ya deberías verlo muy claro, si yo compilo con un –march  específico, todo lo anterior no funcionará… ¿entonces cómo hacen los paquetes binarios para soportar tantos tipos de hardware? Fácil, compilan con la menor opción posible :) esto garantiza que todo tipo de hardware va a poder leerlo (al menos por compatibilidad).

El verdadero problema… si tu usas programas que están compilados para i3… ¡¡Todo el poder de tu i7 ( o sus respectivas analogías AMD) es desperdiciado!! ¿ No es eso triste? :(

Flexibilidad:

Dado que los desarrolladores de Gentoo son muy inteligentes, todo este proceso de tar, ./configure, make, etc… ha sido reemplazado con el poder de Portage. Todas estas configuraciones curiosas han pasado a denominarse USE flags, por lo que si tu deseas una configuración específica, no necesitas entrar al código fuente, solo configurar la variable. Aquí un ejemplo de cómo hacerlo con sudo en portage. Primero veremos qué opciones tenemos en nuestra configuración actual con equery.

Diseño propio. Christopher Díaz Riveros

Como podemos ver, las opciones rojas están activadas, las azules no, bueno… todos pueden leer la leyenda :)

digamos que yo quiero agregar una opción…

Diseño propio. Christopher Díaz Riveros

Tan sencillo como agregar una línea en un archivo llamado sudo (el nombre es referencial) dentro de /etc/portage/package.use/. Con esto la siguiente vez que instalemos sudo nos dirá que se va a recompilar con la opción activada.

Diseño propio. Christopher Díaz Riveros

Si damos, YES, todo lo que hay que hacer es esperar un poco y listo :) tan sencillo como esto.

Consideraciones finales:

Bueno, ya hemos visto lo sencillo que es manejar funcionalidades extra en Gentoo, lo que nos permite agregar, quitar o modificar opciones dentro de nuestros programas favoritos. También hemos visto cómo es que el performance de nuestros programas depende mucho de las variables con las que lo compilemos. Si tienes una máquina muy nueva, Gentoo es tu mejor opción. Si tienes una máquina muy vieja, Gentoo también es tu opción (aunque demore un poco en compilar, los programas finales serán mucho más ligeros).

Dentro de poco estaré escribiendo mi guía de instalación de Gentoo, tanto para los amantes de SystemD como para los aventureros por OpenRC (yo uso systemd con GNOME). Por cierto, otra de las grandes ventajas de Gentoo es la posibilidad de elegir todo dentro de tu sistema, y cuando digo todo es TODO.

Saludos,

Gentoo Linux: La historia de un viaje

Gentoo Linux es…

¡Vaya! Creo que es necesario empezar con un poco de información antes de comentarles algo respecto a esta distribución que ha sido el punto de partida en mi vida Linux.

Un poco de “yo”:

Primero empezaré por contarte un poco de mí (si es que no te incomoda claro, pero si es así, puedes saltar un par de párrafos hacia abajo, no me voy a ofender :) ).

Mi nombre es Christopher, tengo 24 años y ya llevo poco más de 2 años usando distintas distribuciones Linux. Ha sido un camino lleno de alegrías (aunque también confusiones debo admitir :P ) y a lo largo del viaje he podido aprender múchisimas cosas.

Yo estudio (ya estoy por terminar mi carrera) desarrollo de software en Lima, Perú. A lo largo de mi carrera he visto distintos tipos de lenguajes y frameworks, y uno que otro lo he utilizado para proyectos personales.

Soy un apasionado de la seguridad informática, ese es un campo en el que espero desenvolverme profesionalmente, sobre todo en la investigación de vulnerabilidades.

Con esta pequeña introducción creo que ya hay más que suficiente, ahora si podemos entrar a nuestra historia.

Un poco de “ustedes”:

DesdeLinux es uno de los principales puntos de encuentro para usuarios de habla hispana de distintas distribuciones. Y es probable que todos los que estén leyendo estos párrafos ya han usado, usen o deseen usar alguna distribución Linux. Los más conservadores podrán usar un sistema dual con algunas otra versión de otro sistema operativo, y los más aventureros seguramente saltarán de distribución en distribución con el pasar de los meses. Sea donde sea que te encuentres en este instante permíteme compartir un poco de mi historia con Linux, un mundo lleno de aventuras, desafíos y éxitos.

Como muchos, especialmente aquí en América Latina, cuando era más joven, no tenía ni idea de la existencia de Linux. Siempre me había sentido insatisfecho de las continuas fragmentaciones de disco, el perder velocidad con cada instalación, el tener que pagar por cada mantenimiento, en fin, mil y una situaciones que tal vez todos hemos atravesado en algún momento.

Primer capítulo, Ubuntu:

Todo esto cambió cuando me presentaron Ubuntu poco antes de comenzar a estudiar Desarrollo de Software. Todavía recuerdo la primera vez que inició el Live USB de Ubuntu, con ese típico color naranja, la barra lateral, el nuevo orden y esa “extraña” manera de buscar mis aplicaciones apretando la tecla Windows.

Ubuntu 17.10
Ubuntu Linux

El primer encuentro:

Debo admitir que fue amor a primera vista, un nuevo mundo de posibilidades, cosas por aprender y sin lugar a dudas la nueva experiencia de vivir libremente con tu equipo. Pero como todo amor repentino, no duró mucho… Debo admitir que al principio no tenía idea de lo que implicaba actualizar los repositorios ni siquiera cómo actualizar un paquete. Instalar mi software favorito siempre era una experiencia que, aunque a tropiezos, me dejaba una sensación de satisfacción absoluta al ver ejecutarse en la pantalla principal la ventana con el programa que me había tomado (a veces poco, a veces mucho) tiempo configurar.

Los desamores:

Al poco tiempo empecé a notar que en mi falta de experiencia, había empezado a instalar cientos de repositorios, archivos, programas, etc, etc. Así que un día me dije a mi mismo: “Hoy vamos a limpiar la computadora” (no es que estuviera lenta ni nada por el estilo cabe mencionar, simplemente me parecía que sería mejor tenerla con pocas cosas que ya no usaba). Tras un par de horas de limpieza empecé a notar que habían muchas más cosas de las que yo había instalado en primer lugar, programas y paquetes que desconocía su función y sobre todo el motivo por el cual estaban en mi sistema.

La curiosidad:

Mientras terminaba de descubrir las novedades, mi siempre activa curiosidad me impulsaba a seguir buscando más cosas por descubrir. De esta manera empecé a leer sobre todos los tipos de distribuciones de Linux existentes. En poco tiempo ya habían pasado por mis ojos nombres como Fedora, SUSE, CentOs… y la lista siguió y siguió hasta que encontré uno que me llamaba mucho la atención… Arch Linux…

Arch Linux es una distribución que explotó mi mente… Rolling Release… fue una de las primeras cosas que me llamó la atención. La segunda fue la filosofía KISS. Muy pronto empecé a soñar al respecto, poder crear mi sistema desde lo mínimo, saber exactamente qué tenía y tener exactamente lo que deseaba, sin programas extra, sin configuraciones extra. Debo admitir que me sentí poco capaz en ese momento, a decir verdad solo llevaba unos cuantos meses en esto de Linux, pero pensaba que no podría estar a la altura de la instalación por consola. El miedo me superó y decidí buscar algo un poco más sencillo.

Mis sueños se hicieron realidad al encontrar Manjaro

Segundo capítulo, Manjaro:

Para todos los conocidos en el tema, Manjaro es una de las distribuciones que se enfocan en acercar a los usuarios más nuevos del mundo Linux al ambiente Rolling Release de Arch Linux. Su entorno y sus aplicaciones tienen una amplia selección de programas que facilitan la vida a cualquier usuario y le permiten familiarizarse con pacman, el gestor de paquetes de Arch.

Logo de Manjaro
Manjaro Linux

Ya llevaba poco más de cuatro meses de haber usado Ubuntu, y decidí optar por Manjaro. Me dije a mi mismo: “Si puedes con esto, estarás más cerca de poder instalar Arch en la laptop”. Fue una experiencia enriquecedora, pude aprender cómo se manejaban distintos tipos de kernel ( y descubrir lo que el kernel era) aquí. Pude instalar muchos paquetes nuevos y aprendí mucho sobre configuraciones y lo mínimo que necesita un sistema para poder iniciar. Al mismo tiempo empecé a practicar en máquinas virtuales el proceso de instalación de Arch. Sin sentirme totalmente preparado para dar el salto decidí intentar instalar Arch en una máquina que me pude prestar en el instituto. Siguiendo al pie de la letra la guía de instalación y uno que otro tutorial por internet. Y en un abrir y cerrar de ojos, ya lo había conseguido, la instalación completa en mi laptop.

Tercer capítulo, Arch:

Logo de Arch Linux
Arch Linux

Mi primer instalación tuvo muchos tropiezos, todavía desconocía muchas cosas del mundo de Linux, pero al menos ya me sentía un poco más experimentado en el tema. Había conseguido instalar un sistema que otros consideraban difícil y lo había logrado en mi segundo intento ( el primero fue en la máquina que me presté en el instituto). Al poco tiempo decidí volver a instalar mi sistema, me parecía que todavía habían muchas cosas que podía configurar mejor, o instalar mejor. Con el tiempo me di cuenta de cuan pocos eran los paquetes que realmente necesitaba para poder hacer funcionar mi laptop y me sentía cada vez más cómodo con la terminal, los comandos y las ubicaciones de archivos.

Todo iba de maravilla hasta que un día, navegando por internet, me topé con una imagen que me despertó curiosidad…

¿Qué era esto? ¿Había algo más avanzado que Arch Linux? ¿Gentoo? ¿Linux From Scratch?… Mi curiosidad llamaba nuevamente. Más decidida que nunca a poder empezar este nuevo reto.

Un nuevo capítulo, Gentoo:

Logo Gentoo
Gentoo Linux

Lo primero que encuentras al hablar de Gentoo es documentación, mucha documentación. La Wiki de Gentoo es un lugar maravilloso donde puedes encontrar todo tipo de información referente a miles de programas y configuraciones. Pero la más básica de todas, era un compendio lleno de arquitecturas y procesos llamado Gentoo Handbook.

En el Handbook uno puede encontrar paso a paso todo lo necesario para poder realizar una instalación de Gentoo desde cero. Sumamente detallado y explicado de manera entendible, este manual te lleva de la mano en el proceso de configuración e instalación de Gentoo Linux. Debo admitir que intenté aplazar la instalación lo más que pude, pensando que no iba a ser capaz de realizarla completa, pero un fin de semana, con toda la emoción y un poco de miedo, me lancé a comenzar la instalación que cambiaría mi forma de ver Linux.

El proceso me tomó poco menos de dos días (un día de lectura previa y un día entre compilación e instalación). Digo compilación porque en Gentoo puedes compilar todos tus programas en lugar de descargar una copia binaria, pero en realidad es bastante parecido a pacman, apt o incluso yum. Uno de los procesos más largos fue el kernel, la parte de configuración, leer las opciones, seleccionar lo necesario. Otro nuevo mundo de posibilidades y formas de personalización que escapaba a todas las otras distribuciones que había visto hasta ese momento.

Acabado el proceso, no puedo negar que fue una emoción totalmente nueva el ver prender por primera vez mi entorno de escritorio GNOME, mover mi mouse y ver todo lo que había logrado con mi trabajo. Todo esto sucedió en enero y desde ese entonces no puedo negar que cada día aprendo más sobre esta impactante distribución, y he decidido quedarme aquí hasta el día en que deje de poder usar una computadora.

El verdadero comienzo:

Ya es la tercera vez que instalo desde cero mi laptop con Gentoo, con cada instalación siento más la habilidad de poder configurar mejor mi computadora, sacar el mayor provecho a mi hardware y disfrutar la emoción de saber que el equipo es completamente mío, y que yo soy quien lo hace funcionar.

También he probado la instalación de Linux From Scratch ( sin lugar a duda era una obligación para mí). Pude completarla y prender mi terminal, sabiendo que yo había compilado desde cero cada programa, y lo había montado desde cero dentro de mi laptop, otra experiencia maravillosa debo admitir.

Linux from scratch

Pero es en este punto donde he encontrado y reforzado las razones por las cuales quedarme en Gentoo y seguir disfrutando de mi distribución.

Un vistazo rápido a Gentoo:

Al final de esta aventura he optado por Gentoo por los siguientes motivos:

Contar con una comunidad hace más sencillo el mantenimiento:

Esto siempre será verdad, Linux from scratch es maravilloso, pero no es posible mantenerlo de manera sencilla, mucho menos cuando existen vulnerabilidades de seguridad de por medio, o cuando quieres tener el software más reciente en tu equipo.

Una comunidad y documentación de primera:

La documentación de Gentoo es magnífica, todo está a disposición en algún lugar, solo es cuestión de leerlo. En caso de no encontrarlo, siempre se puede encontrar a alguien en IRC para pedir consejo. Muchos son muy amables, y aunque poco conversadores, la mayoría siempre están en disposición de ayudar a todos.

Control y performance total:

Al usar Gentoo, tu construyes todo, y todo es TODO. Pero la principal diferencia con Linux from scratch es que después de instalarlo, el mantenimiento es bastante sencillo. Portage, el gestor de paquetes de Gentoo, es sumamente versátil y permite configurar en cada detalle (y de forma sencilla) los atributos de los programas que instalas. Esta configuración al mismo tiempo permite exprimir al máximo el hardware de tu equipo. Si tu laptop es moderna y no usa Gentoo, está perdiendo mucho de su potencial.

Para terminar:

Si has llegado hasta aquí, espero que hayas podido emocionarte un poco de las maravillosas oportunidades que ofrece Linux a sus usuarios. El poder de conocer en cada aspecto tu máquina, si eres desarrollador de software como yo, es una de las experiencias más satisfacctorias que puedes experimentar. Si tu curiosidad te inclina a probar nuevas cosas, solo te puedo recomendar ¡HAZLO!  Sin esperar mucho tiempo, sin poner peros, y si no lo consigues a la primera, sigue intentando. Al poco tiempo te darás cuenta de cuánto has aprendido y descubierto en el proceso.