269 lines
12 KiB
HTML
269 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Arch + i3</title>
|
|
<link href="style.css" rel="stylesheet">
|
|
</head>
|
|
<body> <!--
|
|
for vim:
|
|
set makeprg=./make-html.sh
|
|
-->
|
|
|
|
<h1 id="índice-de-la-charla">Índice de la Charla</h1>
|
|
<ul>
|
|
<li>Filosofía Te lo montas tu... Es importante conocer las partes de un
|
|
SO de Linux.</li>
|
|
<li>Partes de un SO:
|
|
<ul>
|
|
<li>Kernel (linux, linux-zen)</li>
|
|
<li>Coreutils (GNU Core utils, uutils)</li>
|
|
<li>Bootloader (grub, systemd-boot, limine)</li>
|
|
<li>Init System (systemd, runit, openrc, dinit)</li>
|
|
<li>Network Manager (NetworkManager, iwd)</li>
|
|
<li>Administrador de Paquetes (pacman)</li>
|
|
<li>Repositorios (core, extra, kde-testing, custom)</li>
|
|
<li>AUR (como un pseudo-repositorio alternativo)</li>
|
|
<li>GUI
|
|
<ul>
|
|
<li>DE
|
|
<ul>
|
|
<li>GNOME / KDE</li>
|
|
</ul></li>
|
|
<li>WM(xorg):
|
|
<ul>
|
|
<li>i3</li>
|
|
<li>xmonad</li>
|
|
</ul></li>
|
|
<li>Compositor(wayland):
|
|
<ul>
|
|
<li>sway</li>
|
|
<li>Hyprland</li>
|
|
<li>Niri</li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li>Display Manager
|
|
<ul>
|
|
<li>GDM / SSDM</li>
|
|
<li>lidm</li>
|
|
</ul></li>
|
|
<li>Notif daemon, sudo, etc</li>
|
|
</ul></li>
|
|
<li>Mencion de la wiki</li>
|
|
<li>Forks de Arch (artix, black arch, alarm, cachyos, nyarch)</li>
|
|
<li>Instalación (que es el iso)</li>
|
|
</ul>
|
|
<div class="note">
|
|
<div class="title">
|
|
<p>Note</p>
|
|
</div>
|
|
<p><code>kernel -> coreutils -> init -> network</code></p>
|
|
<p>Hacerlo como una progresión.</p>
|
|
<ul>
|
|
<li>El kernel es lo básico, maneja los procesos y permite que estos
|
|
reserven memoria, tengan un sistema de archivos, se comuniquen con
|
|
periféricos, etc.</li>
|
|
<li>Coreutils da una serie de programas básicos para interactuar con lo
|
|
que ofrece el kernel (ls, cat, touch, mkdir, etc). <strong>no son parte
|
|
del kernel</strong></li>
|
|
<li>Linux no esta preparado para arrancar directamente cuando el
|
|
ordenador arranca (a menos que sea UEFI y esté configurado). Entonces
|
|
hay un programa llamado <q>boot loader</q> que se encarga de arrancar un
|
|
SO al encender el ordenador. También pueden ser <q>boot managers</q>,
|
|
que además ofrecen menús y opciones para configurar que SO arrancar si
|
|
hay varios o incluso con que opciones.</li>
|
|
<li>Cuando linux arranca, aunque tenga programas instalados, alguien
|
|
tiene que decidir que ejecutar y que no, no tiene sentido que se ejecute
|
|
<q>mkdir</q> al arrancar. A esto se le llama el <q>init</q>, que es el
|
|
programa que se ejecuta al arrancar y se encarga de arrancar los
|
|
<q>servicios</q> en su orden correcto, como configurar el teclado,
|
|
arrancar el <q>daemon</q> de red, etc, y mostrarnos nuestra interfaz de
|
|
usuario cuando todo esté listo.</li>
|
|
</ul>
|
|
<p>Dejar <q>daemon</q> un poco en el aire y desarrollarlo en
|
|
NetworkManager como ejemplo.</p>
|
|
</div>
|
|
<div class="note">
|
|
<div class="title">
|
|
<p>Note</p>
|
|
</div>
|
|
<p>En Network Manager</p>
|
|
<p>Hay muchas alternativas, NetworkManger es el <q>todo en uno</q>, pero
|
|
hay paquetes para cosas mas pequeñas, <q>iwd</q> con
|
|
<q>wpa_supplicant</q> para configurar wifi solo, etc. Incluso
|
|
combinaciones, hacer que <q>NetworkManager</q> use solo <q>iwd</q> para
|
|
configurar el wifi, o que use <q>dnsmasq</q> para <q>cache</q> de DNS,
|
|
etc.</p>
|
|
</div>
|
|
<hr />
|
|
<h1 id="filosofía">Filosofía</h1>
|
|
<blockquote>
|
|
<p>Arch is installed as a minimal base system, configured by the user
|
|
upon which their own ideal environment is assembled by installing only
|
|
what is required or desired for their unique purposes.</p>
|
|
</blockquote>
|
|
<blockquote>
|
|
<p>Arch strives to keep its packages as close to the original upstream
|
|
software as possible.</p>
|
|
</blockquote>
|
|
<blockquote>
|
|
<p>— <cite> <a
|
|
href="https://archlinux.org/about/">https://archlinux.org/about/</a>
|
|
</cite></p>
|
|
</blockquote>
|
|
<p>Arch es una distribución de Linux que te deja el trabaho de
|
|
configurar tu ordenador a ti.</p>
|
|
<p>Muchas otras distribuciones vienen con todas las partes de un SO
|
|
incluidas, sin libertad de elegir, y muchas veces modifican el codigo de
|
|
los projectos para ajustarse más a la distribución. Por ejemplo:</p>
|
|
<ul>
|
|
<li>Debian suele modificar el código de linux para ajustarse a su
|
|
filosofía de estabilidad y largo soporte de hardware y software.</li>
|
|
<li>Ubuntu usa GNOME por defecto y suele modificarlo para ajustarse a la
|
|
temática y comportamiento del escritorio y aherirse a su filosofía de
|
|
mejorar la experiencia del usuario.</li>
|
|
<li>Fedora suele modificar los paquetes para adoptar las últimas
|
|
características lo antes posible y mejorar la seguridad de la
|
|
distribución.</li>
|
|
</ul>
|
|
<p>Arch Linux en cambio busca evitar modificar el código original,
|
|
prioriza mantenerse original al proyecto. Solo lo modifica cuando es
|
|
necesario para compilar correctamente o funcionar con el resto del
|
|
sistema.</p>
|
|
<h2 id="consecuencias">Consecuencias</h2>
|
|
<p>Por esto mismo es un sistema que no trae nada por defecto. Te obliga
|
|
a entender cada una de las partes de tu ordenador para poder instalarlo
|
|
y eres tú el responsable de configurarlas para que cada una de las
|
|
partes de tu sistema funcionen correctamente entre si.</p>
|
|
<p>Hay herramientas para instalar arch con un solo click, pero con estas
|
|
es muy fácil desentendernos de los componentes que conforman nuestro
|
|
sistema operativo, y luego cuando cualquier cosa cambie que requiera
|
|
nuestra intervención, no entenderemos nuestro sistema para arreglarlo.
|
|
Una vez entiendes tu sistema es muy dificil cargárselo, ya que sabremos
|
|
que componente ha fallado, porque, como arreglarlo o incluso
|
|
alternativas a ese componente.</p>
|
|
<p>También lo convierte en uno de los sistemas más personalizables ya
|
|
que nadie ni nada se interpone entre ti y la configuración original de
|
|
los programas de tu ordenador.</p>
|
|
<h2 id="por-qué-usar-arch">¿Por qué usar arch?</h2>
|
|
<p>Está muy bien la excusa de que Ubuntu <q>solo funciona</q>, pero arch
|
|
te obliga a entender como funciona tu ordenador.</p>
|
|
<p>Como estudiantes de informática y teleco estudiamos sobre los
|
|
ordenadores, y usar una distribución como arch es una manera muy buena
|
|
de probar cosas nuevas y aprender por el camino como funciona uno.</p>
|
|
<h1 id="partes-de-un-so">Partes de un SO</h1>
|
|
<h2 id="kernel">Kernel</h2>
|
|
<p>El kernel es la parte más baja y central de un sitema operativo. Se
|
|
encarga de manjear los procesos y ofrecerles servicios para reservar
|
|
memoria, trabajar con un sistema de archivos, abstraer los periféricos
|
|
con una interfaz común, etc.</p>
|
|
<p>Arch soporta oficialmente linux, pero tecnicamente podrías instalar
|
|
cualquier implementación similar a linux. Existen incluso varias
|
|
versiones de linux con distintas modificaciones. Las más conocidas son
|
|
<code>linux-lts</code>, <code>linux-zen</code> o
|
|
<code>linux-hardened</code>. Pero CachyOS también ofrece sus propios
|
|
<q>mix</q><a href="#fn1" class="footnote-ref" id="fnref1"
|
|
role="doc-noteref"><sup>1</sup></a>.</p>
|
|
<blockquote>
|
|
|
|
</blockquote>
|
|
<details>
|
|
|
|
<summary markdown="1">Paquetes <code>linux-cachyos</code> en el AUR actualmente.</summary>
|
|
|
|
<p><code>linux-cachyos</code> <code>linux-cachyos-bore</code>
|
|
<code>linux-cachyos-rc</code> <code>linux-cachyos-lts</code>
|
|
<code>linux-cachyos-cjktty</code> <code>linux-cachyos-eevdf</code>
|
|
<code>linux-cachyos-hardened</code> <code>linux-cachyos-bmq</code>
|
|
<code>linux-cachyos-server</code>
|
|
<code>linux-cachyos-deckify-native</code>
|
|
<code>linux-cachyos-native</code>
|
|
<code>linux-cachyos-native-nvidia-open</code>
|
|
<code>linux-cachyos-rc-native</code>
|
|
<code>linux-cachyos-rc-native-nvidia-open</code></p>
|
|
</details>
|
|
|
|
<h2 id="coreutils">Coreutils</h2>
|
|
<p>Los coreutils (core utilities) en linux son el conjunto de programas
|
|
básicos de un sistema unix. En linux los coreutils tradicionales son <a
|
|
href="https://www.gnu.org/software/coreutils/">los de GNU</a>, pero son
|
|
reemplazables por otras implementaciones como <a
|
|
href="https://github.com/uutils/coreutils">uutils</a> (en rust).</p>
|
|
<p>La lista de programas que ofrece coreutils (9.10-1) en arch es:<br />
|
|
<code>[</code> <code>b2sum</code> <code>base32</code>
|
|
<code>base64</code> <code>basename</code> <code>basenc</code>
|
|
<code>cat</code> <code>chgrp</code> <code>chmod</code>
|
|
<code>chown</code> <code>chroot</code> <code>cksum</code>
|
|
<code>comm</code> <code>cp</code> <code>csplit</code> <code>cut</code>
|
|
<code>date</code> <code>dd</code> <code>df</code> <code>dir</code>
|
|
<code>dircolors</code> <code>dirname</code> <code>du</code>
|
|
<code>echo</code> <code>env</code> <code>expand</code> <code>expr</code>
|
|
<code>factor</code> <code>false</code> <code>fmt</code>
|
|
<code>fold</code> <code>groups</code> <code>head</code>
|
|
<code>hostid</code> <code>id</code> <code>install</code>
|
|
<code>join</code> <code>link</code> <code>ln</code> <code>logname</code>
|
|
<code>ls</code> <code>md5sum</code> <code>mkdir</code>
|
|
<code>mkfifo</code> <code>mknod</code> <code>mktemp</code>
|
|
<code>mv</code> <code>nice</code> <code>nl</code> <code>nohup</code>
|
|
<code>nproc</code> <code>numfmt</code> <code>od</code>
|
|
<code>paste</code> <code>pathchk</code> <code>pinky</code>
|
|
<code>pr</code> <code>printenv</code> <code>printf</code>
|
|
<code>ptx</code> <code>pwd</code> <code>readlink</code>
|
|
<code>realpath</code> <code>rm</code> <code>rmdir</code>
|
|
<code>seq</code> <code>sha1sum</code> <code>sha224sum</code>
|
|
<code>sha256sum</code> <code>sha384sum</code> <code>sha512sum</code>
|
|
<code>shred</code> <code>shuf</code> <code>sleep</code>
|
|
<code>sort</code> <code>split</code> <code>stat</code>
|
|
<code>stdbuf</code> <code>stty</code> <code>sum</code> <code>sync</code>
|
|
<code>tac</code> <code>tail</code> <code>tee</code> <code>test</code>
|
|
<code>timeout</code> <code>touch</code> <code>tr</code>
|
|
<code>true</code> <code>truncate</code> <code>tsort</code>
|
|
<code>tty</code> <code>uname</code> <code>unexpand</code>
|
|
<code>uniq</code> <code>unlink</code> <code>users</code>
|
|
<code>vdir</code> <code>wc</code> <code>who</code> <code>whoami</code>
|
|
<code>yes</code></p>
|
|
<p>Estos programas <strong>no son parte del kernel</strong>, se ofrecen
|
|
a parte para interactuar con él.</p>
|
|
<h2 id="bootloader">Bootloader</h2>
|
|
<p>Un ordenador no está diseñado para arrancar directamente un kernel
|
|
(hasta recientemente con configuraciones específicas de UEFI). Para esto
|
|
hay un programa llamado <q>boot loader</q> que se encarga de cargar el
|
|
kernel y ejecutarlo adecuadamente al arrancar el ordenador.</p>
|
|
<p>Además, muchos de estos <q>bootloaders</q> ofrecen menus antes de
|
|
arrancar el kernel para seleccionar el sistema en casos de multiboot o
|
|
configurar las opciones con las que arranca ell kernel. En este caso se
|
|
les considera un <q>boot manager</q>.</p>
|
|
<h2 id="init-system">Init System</h2>
|
|
<p>Una vez el kernel arranca, este tiene programas instalados y esta
|
|
listo para ofrecer sus servicios, pero no puede ejecutar cualquier cosa
|
|
como <code>mkdir</code>. Entones se usa un init system, que consiste
|
|
simplemente en el primer programa que linux ejecuta al arrancar el
|
|
ordenador (por defecto se busca en <code>/sbin/init</code>).</p>
|
|
<p>El trabajo de un init system completo es el de iniciar todas las
|
|
partes del sistema adecuadas, llamadas <q>servicios</q>. Estos servicios
|
|
pueden ser programas simples que configuren el teclado, o programas que
|
|
se mantienen activos de fondo, como el <q>daemon</q> de red.</p>
|
|
<p>El orden también es muy importante, la interfaz gráfica también se
|
|
considera un servicio que solo se puede ejecutar cuando el resto de
|
|
servicios previos han terminado de ejecutarse adecuadamente. No tiene
|
|
mostrar la interfaz de inicio de sesión si el teclado no está
|
|
preparado.</p>
|
|
<h2 id="daemons-de-red"><q><em>Daemons</em></q> de red</h2>
|
|
<p>Un daemon es simplemente un programa que se mantiene ejecutando de
|
|
fondo, normalmente manejados por el init system como un servicio.</p>
|
|
<p>El ejemplo más claro son los <em>daemons</em> de red, estos procesos
|
|
se mantienen activos de fondo buscando las redes disponibles y
|
|
decidiendo constantemente si deben conectarse, desconectarse, o que
|
|
hacer.</p>
|
|
<section id="footnotes" class="footnotes footnotes-end-of-document"
|
|
role="doc-endnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn1"><p><a
|
|
href="https://wiki.cachyos.org/features/kernel/">https://wiki.cachyos.org/features/kernel/</a><a
|
|
href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
|
</ol>
|
|
</section> </body>
|
|
</html>
|