Compare commits

9 Commits

Author SHA1 Message Date
d8dcdcb27f add: diapos mas completas 2026-05-05 04:09:33 +02:00
631f5ccd69 add: presentacion 2026-04-16 16:37:35 +02:00
25ea92193a chore: reorganizar estructura de archivos
- tambien he puesto los documentos en `doc` directamente para evitar el
  symlink
2026-04-16 10:32:57 +02:00
6632f40ad2 fix(codeblocks): color & indentation 2026-04-16 03:49:44 +02:00
a06b7c5f5e toques de guión finales
- ahora también se puede imprimir bien con `html[class="to-print"]`
2026-04-16 03:43:23 +02:00
Javier Niño Sánchez
3c122cee2f manual con i3wm finalizado 2026-04-16 01:35:49 +02:00
365b70a734 docs(add): enlaces al guion y manual en el readme 2026-04-15 19:22:10 +02:00
9267c8a170 make it gfm 2026-04-15 19:10:20 +02:00
7d28e44efa add: cositas del guion
tambien se puede pasar a html con pandoc
2026-04-15 18:44:13 +02:00
11 changed files with 831 additions and 76 deletions

View File

@@ -1,3 +1,9 @@
# Arch-i3wm
Repositorio de la charla de Arch + i3wm realizada el 16 de abril de 2026
# Contenido
- El maual de de arch e i3 hecho por Javier está en [doc/i3-manual.pdf](doc/i3-manual.pdf).
- El guión de la presentación sobre arch está en [doc/guion-arch.md](doc/guion-arch.md).
- La presentación se puede acceder en [doc/presentacion.odp](doc/presentacion.odp).

245
doc/guion-arch.md Normal file
View File

@@ -0,0 +1,245 @@
<!--
for vim:
set makeprg=html/make-html.sh
-->
# Índice de la Charla
Este índice no es muy literal ni al pie de la letra.
- Filosofía (sobre como empaqueta y distribuye)
- Consecuencias (te obliga a montarlo a ti)
- ¿Por qué usar arch? (razones, sobre todo como estudiantes de la etsiit)
Te lo montas tu... Es importante conocer las partes de un SO de Linux.
- Partes de un SO:
- Kernel (linux, linux-zen)
- Coreutils (GNU Core utils, uutils)
- Bootloader (grub, systemd-boot, limine)
- Init System (systemd, runit, openrc, dinit)
- <q>_Daemons_</q> de red (NetworkManager, iwd)
- Administrador de Paquetes (pacman)
- Repositorios (core, extra, kde-testing, custom)
- Espejos
- AUR
- GUI
- DE (GNOME / KDE)
- WM:
- Xorg (i3, xmonad)
- Wayland (hyprand, niri, sway)
- Display Manager (GDM / SSDM, etc)
- Más
- Arch Wiki
- Forks de Arch (artix, black arch, alarm, cachyos, nyarch)
- Instalación (que es el iso & pasos conceptuales)
---
# Filosofía
> 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.
> Arch strives to keep its packages as close to the original upstream software as possible.
> &mdash; <cite> <https://archlinux.org/about/> </cite>
Arch es una distribución de Linux que te deja el trabajo de configurar tu ordenador a ti.
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:
- Debian suele modificar el código de linux para ajustarse a su filosofía de estabilidad y largo soporte de hardware y software.
- 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.
- Fedora suele modificar los paquetes para adoptar las últimas características lo antes posible y mejorar la seguridad de la distribución.
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.
## Consecuencias
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.
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.
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.
## ¿Por qué usar arch?
Está muy bien la excusa de que Ubuntu <q>solo funciona</q>, pero arch te obliga a entender como funciona tu ordenador.
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.
# Partes de un SO
## Kernel
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.
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 `linux-lts`, `linux-zen` o `linux-hardened`. Pero CachyOS también ofrece sus propios <q>mix</q>[^cachyos-kernel].
> [^cachyos-kernel]: <https://wiki.cachyos.org/features/kernel/>
<details>
<summary>Paquetes <code>linux-cachyos</code> en el AUR actualmente.</summary>
`linux-cachyos` `linux-cachyos-bore` `linux-cachyos-rc` `linux-cachyos-lts` `linux-cachyos-cjktty` `linux-cachyos-eevdf` `linux-cachyos-hardened` `linux-cachyos-bmq` `linux-cachyos-server` `linux-cachyos-deckify-native` `linux-cachyos-native` `linux-cachyos-native-nvidia-open` `linux-cachyos-rc-native` `linux-cachyos-rc-native-nvidia-open`
</details>
## Coreutils
Los coreutils (core utilities) en linux son el conjunto de programas básicos de un sistema unix. En linux los coreutils tradicionales son [los de GNU](https://www.gnu.org/software/coreutils/), pero son reemplazables por otras implementaciones como [uutils](https://github.com/uutils/coreutils) (en rust).
La lista de programas que ofrece coreutils (9.10-1) en arch es: \
`[` `b2sum` `base32` `base64` `basename` `basenc` `cat` `chgrp` `chmod` `chown` `chroot` `cksum` `comm` `cp` `csplit` `cut` `date` `dd` `df` `dir` `dircolors` `dirname` `du` `echo` `env` `expand` `expr` `factor` `false` `fmt` `fold` `groups` `head` `hostid` `id` `install` `join` `link` `ln` `logname` `ls` `md5sum` `mkdir` `mkfifo` `mknod` `mktemp` `mv` `nice` `nl` `nohup` `nproc` `numfmt` `od` `paste` `pathchk` `pinky` `pr` `printenv` `printf` `ptx` `pwd` `readlink` `realpath` `rm` `rmdir` `seq` `sha1sum` `sha224sum` `sha256sum` `sha384sum` `sha512sum` `shred` `shuf` `sleep` `sort` `split` `stat` `stdbuf` `stty` `sum` `sync` `tac` `tail` `tee` `test` `timeout` `touch` `tr` `true` `truncate` `tsort` `tty` `uname` `unexpand` `uniq` `unlink` `users` `vdir` `wc` `who` `whoami` `yes`
Estos programas **no son parte del kernel**, se ofrecen a parte para interactuar con él.
## Bootloader
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.
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>.
El caso más popular y que lo incluye todo es `grub`, otras opciones populares son `systemd-boot` y `limine`.
## Init System
Una vez el kernel arranca, este tiene programas instalados y esta listo para ofrecer sus servicios, pero no puede ejecutar cualquier cosa como `mkdir`. 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 `/sbin/init`).
El más popular (con diferencia) hoy en día es systemd, también es el único que arch soporta de forma oficial. Aunque existen otros como OpenRC, Runit, Dinit, S6, etc; que se pueden configurar en arch (aunque para eso hay opciones mejores como usar Artix).
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.
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.
## <q>_Daemons_</q> de red
Un daemon es simplemente un programa que se mantiene ejecutando de fondo, normalmente manejados por el init system como un servicio.
El ejemplo más claro son los _daemons_ de red, estos procesos se mantienen activos de fondo buscando las redes disponibles y decidiendo constantemente si deben conectarse, desconectarse, o que hacer.
Los _daemons_ se suelen caracterizar con una <q>d</q> al final del nombre (`playerctl` -> `playerctld`, `udev` -> `udevd`, `ssh` -> `sshd`, etc).
El más popular es `NetworkManager`, que es un <q>todo en uno</q> de un _daemon_ de red. Pero hay muchas otras opciones mas modulares, como `iwd` específico para configuración inalámbrica, `systemd-networkd`, o `wpa_supplicant` para certificados de wifi. Incluso configuraciones mixtas, `NetworkManager` se puede configurar para solo usar `iwd`, o que use `dnsmasq` para cache del DNS, etc.
## Administrador de Paquetes
Hasta ahora hemos visto el kernel, los coreutils, un bootloader, el init system y todos los servicios y _daemons_ que puede haber. Esto son muchísimos archivos y manejarlos a mano sería un desastre.
Para esto está el concepto de un <q>package manager</q> o <q>administrador de paquetes</q>. En vez e manejar los programas como archivos independientes, los agrupamos en <q>paquetes</q> que contienen los archivos relacionados al programa, y el el administrados de paquetes el que se encarga de manejar todos estos archivos.
```txt
➜ pacman -Ql lidm | treeify
[lidm-git ]
├─etc
│ └─lidm.ini
└─usr
├─bin
│ └─lidm
└─share
└─man
├─man1
│ └─lidm.1.gz
└─man5
└─lidm-config.5.gz
```
Suelen hacer más tareas, como mostrar información de cada paquete y satisfacer sus dependencias (esto con otros paquetes del que determinado paquete depende, por ejemplo por ser una librería dinámica).
```txt
➜ ldd /usr/bin/lidm
linux-vdso.so.1 (0x00007fd93d489000)
libpam.so.0 => /usr/lib/libpam.so.0 (0x00007fd93d428000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fd93d23a000)
libaudit.so.1 => /usr/lib/libaudit.so.1 (0x00007fd93d207000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fd93d48b000)
libcap-ng.so.0 => /usr/lib/libcap-ng.so.0 (0x00007fd93d1ff000)
➜ pacman -F /usr/lib/libpam.so.0
usr/lib/libpam.so.0 is owned by core/pam 1.7.1-1
➜ pacman -Qi lidm | grep Depends
Depends On : pam lidm-service
```
En este ejemplo se puede ver que el ejecutable `lidm` depende de `libpam`, archivo que es parte del paquete `pam`. Y esta dependencia esta especificada adecuadamente en la información del paquete.
Este es uno de los componentes en el que las distribuciones normales no dan elección, el entorno de paquetes suele estar orientado alrededor del administrador de paquetes elegido y sería imposible dar a elegir.
## Repositorios
Los repositorios son los <q>sitios</q> donde se agrupan los paquetes. En arch actualmente hay dos principales, `core` para los componentes super básicos (el kernel, init system, administrador de paquetes), y `extra` para paquetes que no son principales en un sistema operativo (naevgador, interfaces, etc).
Hay repositorios extra, como puede ser `multilib` para paquetes de 32 bits, y nada te impide hacer tus propios repositorios personales con tu propia selección de paquetes.
Además es común el tener repositorios donde las nuevas versiones llegan un poco antes, de _testing_ (`core-testing`, `extra-testing`, `multilib-testing`, `gnome-unstable`, `kde-unstable`).
### Espejos
Los espejos o _mirrors_ es simplemente una copia de los repositorios en cierto servidor. Por ejemplo puede haber un servidor específico de España que sirve los repositorios de arch en España para no sobrecargar todos el mismo servidor y que tengamos menor tiempo de respuesta.
### AUR
El AUR (Arch User Repository) es un repositorio **no oficial** con _scripts_ creados por usuarios de arch con como instalar un paquete.
Si un paquete no está oficialmente en los repositorios, es muy posible que alguien lo haya añadido ahí ya, y si no... ¡Tú puedes ser la primera persona en hacerlo!
![AUR repology](https://repology.org/graph/map_repo_size_fresh.svg)
> [!WARNING]
>
> Es importante recordar que los paquetes del AUR están hechos por usuarios y pueden ser maliciosos, lo más importante siempre es leer el _script_ para asegurarnos que no tiene nada sospechoso.
> &mdash; <https://repology.org/repositories/graphs>
## GUI
Os habreis dado cuenta de que habrá muchos componentes pero todavía no hemos salido de la TTY, ni una sola interfaz gráfica. Y ahora ha llegado el momento de instalar una.
Aquí tenemos dos opciones, la primera y más aburrida, instalar un entorno de escritorio (DE, Desktop Environment). GNOME o KDE, gnomo o caballero. Se llaman entornos porque suelen venir con todo incluido, traen audio, la barra, fondo de pantalla, aplicaciones del sistema, aplicación de ajustes, etc.
O la mas interesante, instalar un administrador de ventanas (WM, window manager) que **solo** se ocupe de manejar las ventanas y como interactuamos con ellas (e.g. atajos de teclado). No hay escritorio, no hay fondo de pantalla, no hay barra, no hay un launcher de aplicaciones, nada, es nuestro trabajo en hacer nuestra selección de componentes y configurarlo todo lo que queramos.
Hoy en día hay dos protocolos básicos, xorg y wayland.
Xorg es el protocolo que lleva décadas existiendo y queda poca gente queriendo tocar código tan anticuado. Pero funciona perfectamente y hay muchos administradores de ventanas escritos a lo largo del tiempo para él como `i3` (del que entraremos en detalle después) o `xmonad`.
Wayland es un protocolo nuevo que está cogiendo mucha popularidad recientemente y busca rediseñar muchos de los principios de xorg a estándares más modernos. Pese a lo nuevo que es ya hay multitud de compositores (así se llaman los WM en wayland) para él, como `hyprland`, `niri` o `sway` (que busca ser un reemplazo literal de `i3` para wayland).
### Display Manager
Un display manager es simplemente el programa que hay antes de la interfaz gráfica completa en la que se nos permite iniciar sesión con nuestro usuario. Muchas también permiten seleccionar la interfaz gráfica a arrancar si tenemos varias.
Los más comunes son GDM, SSDM (de GNOME y KDE relativamente, funcionan con mas cosas a parte de sus DEs), pero [hay muchos mas](https://wiki.archlinux.org/title/Display_manager).
### Más
Hay muchos más componentes, especialmente en el ámbito de escritorio que se deben instalar, como un servidor de audio, un motor de fondos de pantalla, una barra de estado, un launcher de aplicaciones, el _daemon_ de notificaciones, etc. Pero eso no es necesario para empezar a experimentar con arch.
# Arch Wiki
Para cualquier problema, guía o información está la magnífica wiki de arch: <https://wiki.archlinux.org>. La mayoría de la información de esta charla se ha verificado con ella y hay secciones de la wiki para casi todos los apartados de esta charla y muchas más cosas.
Hay desde una guía de [la instalación manual de arch](https://wiki.archlinux.org/title/Installation_guide) hasta un apartado con [todo lo que puede hacer falta saber de la configuración de red](https://wiki.archlinux.org/title/Network_configuration). La documentación es tan buena que suele ser útil incluso resolviendo problemas fuera de cualquier cosa parecida a arch.
# Forks de Arch
Hay muchas distribuciones basadas en arch que no son arch puro, por ejemplo:
- Artix: Una distribución de arch que no viene con systemd por defecto, deja elegir otra serie de init systems. Tiene sus paquetes de arch modificados ligeramente para funcionar bien sin systemd. Una de las grandes ventajas es que al estar basado en arch, puede usar sus repositorios y el AUR sin problemas.
- Black Arch: Es arch pero con unos repositorios específicos que contienen paquetes más orientados a la ciberseguridad y pentesting.
- Arch Linux ARM (alarm): Arch Linux específico para arquitecturas ARM (como una raspberry pi).
- Nyarch: ... <!-- Mención honorífica -->
# Instalación
La instalación es muy simple una vez entiendes el sistema. Lo único nuevo que hay que entender es que es el ISO de instalación.
El ISO de instalación es arch ya instalado en un USB portable y protegido contra escritura que contiene las herramientas para instalar arch. Estas mismas herramientas se podrían instalar en cualquier instalación de arch y usar ese mismo ordenador para la instalación de arch.
Una vez tienes las herramientas los pasos son muy simples:
- Particionas el disco.
- Montas el disco.
- Instalas los paquetes básicos en el punto de montaje.
- Configuras los paquetes justos para que arranque adecuadamente y se pueda usar (principalemnte asegurarse que el bootloader está instalado, crear usuarios, instalar los paquetes de red).
Ni más ni menos.

410
doc/html/guion-arch.html Normal file
View File

@@ -0,0 +1,410 @@
<!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="res/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><q><em>Daemons</em></q> de red (NetworkManager, iwd)</li>
<li>Administrador de Paquetes (pacman)</li>
<li>Repositorios (core, extra, kde-testing, custom)
<ul>
<li>Espejos</li>
<li>AUR</li>
</ul></li>
<li>GUI
<ul>
<li>DE (GNOME / KDE)</li>
<li>WM:
<ul>
<li>Xorg (i3, xmonad)</li>
<li>Wayland (hyprand, niri, sway)</li>
</ul></li>
<li>Display Manager (GDM / SSDM, etc)</li>
<li>Más</li>
</ul></li>
</ul></li>
<li>Arch Wiki</li>
<li>Forks de Arch (artix, black arch, alarm, cachyos, nyarch)</li>
<li>Instalación (que es el iso &amp; pasos conceptuales)</li>
</ul>
<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>
<p>El caso más popular y que lo incluye todo es <code>grub</code>, otras
opciones populares son <code>systemd-boot</code> y
<code>limine</code>.</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 más popular (con diferencia) hoy en día es systemd, también es el
único que arch soporta de forma oficial. Aunque existen otros como
OpenRC, Runit, Dinit, S6, etc; que se pueden configurar en arch (aunque
para eso hay opciones mejores como usar Artix).</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>
<p>Los <em>daemons</em> se suelen caracterizar con una <q>d</q> al final
del nombre (<code>playerctl</code> -&gt; <code>playerctld</code>,
<code>udev</code> -&gt; <code>udevd</code>, <code>ssh</code> -&gt;
<code>sshd</code>, etc).</p>
<p>El más popular es <code>NetworkManager</code>, que es un <q>todo en
uno</q> de un <em>daemon</em> de red. Pero hay muchas otras opciones mas
modulares, como <code>iwd</code> específico para configuración
inalámbrica, <code>systemd-networkd</code>, o
<code>wpa_supplicant</code> para certificados de wifi. Incluso
configuraciones mixtas, <code>NetworkManager</code> se puede configurar
para solo usar <code>iwd</code>, o que use <code>dnsmasq</code> para
cache del DNS, etc.</p>
<h2 id="administrador-de-paquetes">Administrador de Paquetes</h2>
<p>Hasta ahora hemos visto el kernel, los creutils, un bootloader, el
init system y todos los servicios y <em>daemons</em> que puede haber.
Esto son muchísimos archivos y manejarlos a mano sería un desastre.</p>
<p>Para esto está el concepto de un <q>package manager</q> o
<q>administrador de paquetes</q>. En vez e manejar los programas como
archivos independientes, los agrupamos en <q>paquetes</q> que contienen
los archivos relacionados al programa, y el el administrados de paquetes
el que se encarga de manejar todos estos archivos.</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode txt"><code class="sourceCode default"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> ➜ pacman -Ql lidm</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>lidm-git /etc/</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>lidm-git /etc/lidm.ini</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/</span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/bin/</span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/bin/lidm</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/share/</span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/share/man/</span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/share/man/man1/</span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/share/man/man1/lidm.1.gz</span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/share/man/man5/</span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a>lidm-git /usr/share/man/man5/lidm-config.5.gz</span></code></pre></div>
<p>Suelen hacer más tareas, como mostrar información de cada paquete y
satisfacer sus dependencias (esto con otros paquetes del que determinado
paquete depende, por ejemplo por ser una librería).</p>
<div class="sourceCode" id="cb2"><pre
class="sourceCode txt"><code class="sourceCode default"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> ➜ ldd /usr/bin/lidm</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a> linux-vdso.so.1 (0x00007fd93d489000)</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a> libpam.so.0 =&gt; /usr/lib/libpam.so.0 (0x00007fd93d428000)</span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a> libc.so.6 =&gt; /usr/lib/libc.so.6 (0x00007fd93d23a000)</span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a> libaudit.so.1 =&gt; /usr/lib/libaudit.so.1 (0x00007fd93d207000)</span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a> /lib64/ld-linux-x86-64.so.2 =&gt; /usr/lib64/ld-linux-x86-64.so.2 (0x00007fd93d48b000)</span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a> libcap-ng.so.0 =&gt; /usr/lib/libcap-ng.so.0 (0x00007fd93d1ff000)</span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true" tabindex="-1"></a> ➜ pacman -F /usr/lib/libpam.so.0</span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true" tabindex="-1"></a>usr/lib/libpam.so.0 is owned by system/pam 1.7.1-1</span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-12"><a href="#cb2-12" aria-hidden="true" tabindex="-1"></a> ➜ paru -Qi lidm | grep Depends</span>
<span id="cb2-13"><a href="#cb2-13" aria-hidden="true" tabindex="-1"></a>Depends On : pam lidm-service</span></code></pre></div>
<p>En este ejemplo se puede ver que el ejecutable <code>lidm</code>
depende de <code>libpam</code>, archivo que es parte del paquete
<code>pam</code>. Y esta dependencia esta especificada adecuadamente en
la información del paquete.</p>
<p>Este es uno de los componentes en el que las distribuciones normales
no dan elección, el entorno de paquetes suele estar orientado alrededor
del administrador de paquetes elegido y sería imposible dar a
elegir.</p>
<h2 id="repositorios">Repositorios</h2>
<p>Los repositorios son los <q>sitios</q> donde se agrupan los paquetes.
En arch hay dos principales, <code>core</code> para los componentes
super básicos (el kernel, init system, administrador de paquetes), y
<code>extra</code> para paquetes que no son principales en un sistema
operativo (naevgador, interfaces, etc).</p>
<p>Hay repositorios extra, como puede ser <code>multilib</code> para
paquetes de 32 bits, y nada te impide hacer tus propios repositorios
personales con tu propia selección de paquetes.</p>
<p>Además es común el tener repositorios donde las nuevas versiones
llegan un poco antes, de <em>testing</em> (<code>core-testing</code>,
<code>extra-testing</code>, <code>multilib-testing</code>,
<code>gnome-unstable</code>, <code>kde-unstable</code>).</p>
<h3 id="espejos">Espejos</h3>
<p>Los espejos o <em>mirrors</em> es simplemente una copia de los
repositorios en cierto servidor. Por ejemplo puede haber un servidor
específico de España que sirve los repositorios de arch en España para
no sobrecargar todos el mismo servidor y que tengamos menor tiempo de
respuesta.</p>
<h3 id="aur">AUR</h3>
<p>El AUR (Arch User Repository) es un repositorio con <em>scripts</em>
creados por usuarios de arch con como instalar un paquete.</p>
<p>Si un paquete no está oficialmente en los repositorios, es muy
posible que alguien lo haya añadido ahí ya, y si no... ¡Tú puedes ser la
primera persona en hacerlo!</p>
<p><img src="https://repology.org/graph/map_repo_size_fresh.svg"
alt="AUR repology" /></p>
<div class="warning">
<div class="title">
<p>Warning</p>
</div>
<p>Es importante recordar que los paquetes del AUR están hechos por
usuarios y pueden ser maliciosos, lo más importante siempre es leer el
<em>script</em> para asegurarnos que no tiene nada sospechoso.</p>
</div>
<blockquote>
<p><a
href="https://repology.org/repositories/graphs">https://repology.org/repositories/graphs</a></p>
</blockquote>
<h2 id="gui">GUI</h2>
<p>Os habreis dado cuenta de que habrá muchos componentes pero todavía
no hemos salido de la TTY, ni una sola interfaz gráfica. Y ahora ha
llegado el momento de instalar una.</p>
<p>Aquí tenemos dos opciones, la primera y más aburrida, instalar un
entorno de escritorio (DE, Desktop Environment). GNOME o KDE, gnomo o
caballero. Se llaman entornos porque suelen venir con todo incluido,
traen audio, la barra, aplicaciones del sistema, aplicación de ajustes,
etc.</p>
<p>O la mas interesante, instalar un administrador de ventanas (WM,
window manager) que <strong>solo</strong> se ocupe de manejar las
ventanas y como interactuamos con ellas. No hay escritorio, no hay fondo
de pantalla, no hay barra, no hay un launcher de aplicaciones, nada, es
nuestro trabajo en hacer nuestra selección de componentes y configurarlo
todo lo que queramos.</p>
<p>Hoy en día hay dos protocolos básicos, xorg y wayland.</p>
<p>Xorg es el protocolo que lleva décadas existiendo y queda poca gente
queriendo tocar código tan anticuado. Pero funciona perfectamente y hay
muchos administradores de ventanas escritos a lo largo del tiempo para
él como <code>i3</code> (del que entraremos en detalle después) o
<code>xmonad</code>.</p>
<p>Wayland es un protocolo nuevo que está cogiendo mucha popularidad
recientemente y busca rediseñar muchos de los principios de xorg a
estándares mas modernos. Pese a lo nuevo que es ya hay multitud de
compositores (así se llaman los WM en wayland) para él, como
<code>hyprland</code>, <code>niri</code> o <code>sway</code> (que busca
ser un reemplazo literal de <code>i3</code> para wayland).</p>
<h3 id="display-manager">Display Manager</h3>
<p>Un display manager es simplemente el programa que hay antes de la
interfaz gráfica completa en la que se nos permite iniciar sesión con
nuestro usuario. Muchas también permiten seleccionar la interfaz gráfica
a arrancar si tenemos varias.</p>
<p>Los más comunes son GDM, SSDM (de GNOME y KDE relativamente,
funcionan con mas cosas a parte de sus DEs), pero <a
href="https://wiki.archlinux.org/title/Display_manager">hay muchos
mas</a>.</p>
<h3 id="más">Más</h3>
<p>Hay muchos más componentes, especialmente en el ámbito de escritorio
que se deben instalar, como un servidor de audio, un motor de fondos de
pantalla, una barra de estado, un launcher de aplicaciones, el
<em>daemon</em> de notificaciones, etc. Pero eso no es necesario para
empezar a experimentar con arch.</p>
<h1 id="arch-wiki">Arch Wiki</h1>
<p>Para cualquier problema, guía o información está la magnífica wiki de
arch: <a
href="https://wiki.archlinux.org">https://wiki.archlinux.org</a>. La
mayoría de la información de esta charla se ha verificado con ella y hay
secciones de la wiki para casi todos los apartados de esta charla y
muchas más cosas.</p>
<p>Hay desde una guía de <a
href="https://wiki.archlinux.org/title/Installation_guide">la
instalación manual de arch</a> hasta un apartado con <a
href="https://wiki.archlinux.org/title/Network_configuration">todo lo
que puede hacer falta saber de la configuración de red</a>. La
documentación es tan buena que suele ser útil incluso resolviendo
problemas fuera de cualquier cosa parecida a arch.</p>
<h1 id="forks-de-arch">Forks de Arch</h1>
<p>Hay muchas distribuciones basadas en arch que no son arch puro, por
ejemplo:</p>
<ul>
<li>Artix: Una distribución de arch que no viene con systemd por
defecto, deja elegir otra serie de init systems. Tiene sus paquetes de
arch modificados ligeramente para funcionar bien sin systemd. Una de las
grandes ventajas es que al estar basado en arch, puede usar sus
repositorios y el AUR sin problemas.</li>
<li>Black Arch: Es arch pero con unos repositorios específicos que
contienen paquetes más orientados a la ciberseguridad y pentesting.</li>
<li>Arch Linux ARM (alarm): Arch Linux específico para arquitecturas ARM
(como una raspberry pi).</li>
<li>Nyarch: ... <!-- Mención honorífica --></li>
</ul>
<h1 id="instalación">Instalación</h1>
<p>La instalación es muy simple una vez entiendes el sistema. Lo único
nuevo que hay que entender es que es el ISO de instalación.</p>
<p>El ISO de instalación es arch ya instalado en un USB portable y
protegido contra escritura que contiene las herramientas para instalar
arch. Estas mismas herramientas se podrían instalar en cualquier
instalación de arch y usar ese mismo ordenador para la instalación de
arch.</p>
<p>Una vez tienes las herramientas los pasos son muy simples:</p>
<ul>
<li>Particionas el disco.</li>
<li>Montas el disco.</li>
<li>Instalas los paquetes básicos en el punto de montaje.</li>
<li>Configuras los paquetes justos para que arranque adecuadamente y se
pueda usar (principalemnte asegurarse que el bootloader está instalado,
crear usuarios, instalar los paquetes de red).</li>
</ul>
<p>Ni más ni menos.</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>

16
doc/html/make-html.sh Executable file
View File

@@ -0,0 +1,16 @@
set -xeuo pipefail
MYSELF=$(realpath --relative-to=. "$0")
MYDIR=$(dirname "$MYSELF")
INPUT=${1:-"$MYDIR/../guion-arch.md"}
OUTPUT=${2:-"$MYDIR/guion-arch.html"}
HTML_TEMPLATE=${HTML_TEMPLATE:-"$MYDIR/res/template.html"}
"${PANDOC_PATH:-pandoc}" \
--template="$HTML_TEMPLATE" \
--metadata title="${HTML_TITLE:-"Arch + i3"}" \
-f gfm \
\
"$INPUT" -o "$OUTPUT"

141
doc/html/res/style.css Normal file
View File

@@ -0,0 +1,141 @@
:root {
--text-color: #eee;
--faint-text-color: #888;
--background-color: #121415;
--blockquote-color: #444;
--link-color: #d55;
--visited-link-color: #a22;
--code-background-color: #0a0a0a;
--text-font: system-ui, sans-serif;
--quoteish-left-width: 4px;
}
/* Just add `class="to-print"` to `html` in dev tools */
:root.to-print {
--visited-link-color: var(--link-color);
--text-color: #111118;
--faint-text-color: #666;
--background-color: #fff;
--blockquote-color: #aaa;
--code-background-color: #ccc;
font-size: 0.85em;
}
/* General */
html {
display: flex;
justify-content: center;
align-items: center;
background-color: var(--background-color);
}
body {
font-family: var(--text-font);
line-height: 1.6;
max-width: 700px;
margin: 30px 50px;
color: var(--text-color);
}
/* Headings */
h1,
h2,
h3,
h4,
h5,
h6 {
border-bottom: 1px var(--faint-text-color) solid;
}
/* Block Quotes */
blockquote {
border-left: var(--quoteish-left-width) var(--blockquote-color) solid;
padding: 0 30px;
margin-left: 10px;
/* margin-bottom: 20px; */
}
/* Code */
pre code,
pre code span {
padding: 0;
margin: 0;
}
pre.sourceCode, code {
background-color: var(--code-background-color);
padding: 0.4em 0.8em;
border-radius: 0.6em;
}
a {
color: var(--link-color);
}
a:visited {
color: var(--visited-link-color);
}
/* Image */
img {
--margin: 50px;
width: calc(100% - var(--margin) * 2);
margin: 0 var(--margin);
}
/* Alerts */
.note {
--color: #7cf;
--icon: "🛈";
}
.warning {
--color: #e70;
--icon: "⚠";
}
.note,
.warning {
border-left: var(--quoteish-left-width) var(--color) solid;
padding: 15px 30px;
margin-left: 10px;
margin-bottom: 20px;
background-color: #ffffff05;
}
.note>.title>p,
.warning>.title>p {
color: var(--color);
font-size: 1.25em;
font-weight: bold;
margin-top: 0;
}
.note> :last-child,
.warning> :last-child {
margin-bottom: 0;
}
.note>.title>p::before,
.warning>.title>p::before {
content: var(--icon);
margin-right: 0.25em;
}

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>$title$</title>
<link href="res/style.css" rel="stylesheet">
</head>
<body> $body$ </body>
</html>

BIN
doc/i3-manual.pdf Normal file

Binary file not shown.

BIN
doc/presentacion.odp Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,75 +0,0 @@
# Índice de la Charla
- Filosofia
Te lo montas tu... Es importante conocer las partes de un SO de Linux.
- Partes de un SO?:
- Kernel (linux, linux-zen)
- Coreutils (GNU Core utils, uutils)[^coreutils-bins]
- Bootloader (grub, systemd-boot, limine)
- Init System (systemd, runit, openrc, dinit)
- Network Manager (NetworkManager, iwd)
- Administrador de Paquetes (pacman)
- Repositorios (core, extra, kde-testing, custom)
- AUR (como un pseudo-repositorio alternativo)
- GUI
- DE
- GNOME / KDE
- WM(xorg):
- i3
- xmonad
- Compositor(wayland):
- sway
- Hyprland
- Niri
- Display Manager
- GDM / SSDM
- lidm
- Notif daemon, sudo, etc
- Mencion de la wiki
- Forks de Arch (artix, black arch, alarm, cachyos, nyarch)
- Instalación (que es el iso)
[^coreutils-bins]: \[ b2sum base32 base64 basename basenc cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink realpath rm rmdir seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf sleep sort split stat stdbuf stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink users vdir wc who whoami yes
> [!NOTE]
> kernel -> coreutils -> init -> network
>
> Hacerlo como una prograsión.
>
> - 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.
> - Coreutils da una serie de programas básicos para interactuar con lo que ofrece el kernel (ls, cat, touch, mkdir, etc). **no son parte del kernel**
> - Linux no esta preparado para arrancar directamente cuando el ordenador arranca (a menos que sea UEFI y esté configurado). Entonces hay un programa llamado "boot loader" que se encarga de arrancar un SO al encender el ordenador. También pueden ser "boot managers", que además ofrecen menús y opciones para configurar que SO arrancar si hay varios o incluso con que opciones.
> - Cuando linux arranca, aunque tenga programas instalados, alguien tiene que decidir que ejecutar y que no, no tiene sentido que se ejecute "mkdir" al arrancar. A esto se le llama el "init", que es el programa que se ejecuta al arrancar y se encarga de arrancar los "servicios" en su orden correcto, como configurar el teclado, arrancar el "daemon" de red, etc, y mostrarnos nuestra interfaz de usuario cuando todo esté listo.
>
> Dejar "daemon" un poco en el aire y desarrollarlo en NetworkManager como ejemplo.
> [!NOTE]
> En Network Manager
>
> Hay muchas alternativas, NetworkManger es el "todo en uno", pero hay paquetes para cosas mas pequeñas, "iwd" con "wpa_supplicant" para configurar wifi solo, etc. Incluso combinaciones, hacer que "NetworkManager" use solo "iwd" para configurar el wifi, o que use "dnsmasq" para "cache" de DNS, etc.
---
# Filosofia
> 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.
> Arch strives to keep its packages as close to the original upstream software as possible.
> &emph; <cite> <https://archlinux.org/about/> </cite>
Arch es una distribución de Linux que te deja el trabaho de configurar tu ordenador a ti.
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:
- Debian suele modificar el código de linux para ajustarse a su filosofia de estabilidad y largo soporte de hardware y software.
- Ubuntu usa GNOME por defecto y suele modificarlo para ajustarse a la temática de debian y ajustar su comportamiento par ajustarse a su filosofía de mejorar la experiencia del usuario.
- Fedora suele modificar los paquetes para adoptar las últimas características lo antes posible y mejorar la seguridad de la distribución.
Arch Linux en cambio busca evitar modificar el código original, prioriza mantenerse original al projecto. Solo lo modifica cuando es necesario para compilar correctamente o funcionar con el resto del sistema.
## Consecuencias
Por esto mismo es un sistema que no trae _casi_\* nada por defecto (una excepción). 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.
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.

View File

@@ -6,6 +6,7 @@ MEMORY_MIB != bc <<<"1024 * $(MEMORY_GIB)"
ROOT_SIZE = 20G
VM_DEPS =
# asegurarse que `virsh net-start default`
QEMU = qemu-system-x86_64
QEMU_ARGS = \
-m $(MEMORY_MIB) \
@@ -63,6 +64,7 @@ vm-nographic: exit-notice root.img $(VM_DEPS)
# custom.db.tar.gz ./*.pkg.tar.zst~*.sig` (pq lo he copiado todo, sig incluido)
# para generar los archivos de la base de datos de los paquetes
serve:
@echo -e "\033[4;7m/etc/pacman.conf:\033[0m"
@echo "[custom]"
@echo "SigLevel = Optional TrustAll"
@echo "http://192.168.122.1:8080"