Nix OS

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 10 de enero de 2020; las comprobaciones requieren 8 ediciones .
Nix OS
familia de sistemas operativos Sistema operativo similar a Unix
Residencia en Administrador de paquetes Nix [2]
Fuente abierto
Primera edición en 2003
ultima versión 22 de mayo [1]  (30 de mayo de 2022 ) ( 2022-05-30 )
Administradores de paquetes administrador de paquetes nix
Plataformas compatibles x86_64 , i686 y AArch64 [d]
tipo de núcleo monolítico ( Linux )
Licencia licencia MIT [2]
Estado en desarrollo
Repositorio de código fuente github.com/NixOS/nixpkgs
Sitio web nixos.org
 Archivos multimedia en Wikimedia Commons

NixOS es una distribución de Linux construida sobre el administrador de paquetes Nix . Utiliza una configuración declarativa y le permite actualizar el sistema de manera confiable [3] . Se proponen dos direcciones principales: la versión estable actual y Unstable después del último desarrollo.

El proyecto NixOS comenzó como un proyecto de investigación, pero ahora está desarrollando sistemas operativos [4] .

NixOS se desarrolla con DevOps y tiene herramientas dedicadas a tareas de implementación [5] [6] .

Historia

El proyecto comenzó en 2003 como un proyecto de investigación y fue fundado por el holandés [3] Eelco Dolstra [7 ] .

En 2015, se creó la Fundación NixOS para ayudar a los proyectos que respaldan un modelo de implementación puramente funcional como NixOS [8] .

Características

Modelo de configuración del sistema declarativo

En NixOS, el administrador de paquetes Nix crea todo el sistema operativo (núcleo, aplicaciones , paquetes del sistema, archivos de configuración, etc.) a partir de una descripción en un lenguaje ensamblador funcional. Esto significa que la creación de una nueva configuración no puede sobrescribir las configuraciones anteriores [9] .

El sistema NixOS se configura escribiendo la especificación de las funciones que el usuario desea en su máquina en un archivo de configuración global. Por ejemplo, aquí hay una configuración mínima para una máquina que ejecuta el demonio SSH [10] :

{ bota . cargador _ comida _ dispositivo = "/dev/sda" ; sistemas de archivos . "/" . dispositivo = "/dev/sda1" ; servicios _ sshd . habilitar = verdadero ; }

Después de cambiar el archivo de configuración, el sistema se puede actualizar con nixos-rebuild switch.

Este comando hace todo lo necesario para aplicar la nueva configuración, incluida la descarga y compilación de paquetes y la creación de archivos de configuración.

Actualizaciones confiables

Debido a que los archivos Nix son limpios y declarativos , ejecutarlos siempre producirá el mismo resultado sin importar qué paquetes o archivos de configuración estén en el sistema. Por lo tanto, actualizar el sistema es tan confiable como reinstalarlo desde cero.

Actualizaciones atómicas

NixOS tiene un enfoque transaccional para la gestión de la configuración, realizando cambios de configuración como actualizaciones atómicas. Esto significa que si la transición a la nueva configuración se interrumpe, por ejemplo, por una falla de energía a mitad de camino, el sistema aún estará en un estado consistente: se iniciará en la configuración anterior o en la nueva. En otros sistemas, el sistema puede estar en un estado inconsistente y es posible que ni siquiera arranque [11] .

Retroceder

Si, después de actualizar el sistema, la nueva configuración no es deseada, se puede revertir usando el comando especial nixos-rebuild switch --rollback.

De hecho, cada versión de configuración del sistema aparece automáticamente en el menú de inicio del sistema. Si la nueva configuración falla o no se carga correctamente, se puede seleccionar una versión anterior. Además, las reversiones son una operación fácil que no implica restaurar archivos desde copias de seguridad.

Configuraciones de sistema reproducibles

El modelo de configuración declarativa de NixOS facilita la replicación de una configuración del sistema en otra computadora. Copiar el archivo de configuración en la computadora de destino y ejecutar el comando de actualización del sistema genera la misma configuración del sistema (núcleo, aplicaciones, servicios del sistema, etc.), excepto aquellas partes del sistema que no están controladas por el administrador de paquetes, como datos del usuario.

Modelo binario inicial

El lenguaje de compilación Nix utilizado por NixOS especifica cómo compilar paquetes desde el origen. Sin embargo, debido a la lentitud del proceso de compilación desde el origen, el administrador de paquetes descarga automáticamente los archivos binarios precompilados del servidor de caché cuando están disponibles. Esto brinda la flexibilidad de un modelo de gestión de paquetes basado en código fuente con la eficiencia de un modelo binario [12] .

Consistencia

El administrador de paquetes de Nix garantiza que un sistema en ejecución sea "coherente" con la especificación lógica del sistema, lo que significa que vuelve a compilar cualquier paquete que deba volver a compilarse. Por ejemplo, si se cambia el núcleo, el administrador de paquetes se asegura de que se vuelvan a compilar los módulos del núcleo externo. Asimismo, cuando se actualiza una biblioteca, se asegura de que todos los paquetes del sistema usen la nueva versión, incluso los paquetes vinculados estáticamente a ella.

Administrar un paquete multiusuario

No se necesitan privilegios especiales para instalar software en NixOS. Además del perfil de todo el sistema, cada usuario tiene un perfil especial en el que puede instalar paquetes. Nix también permite la coexistencia de múltiples versiones de un paquete, por lo que diferentes usuarios pueden tener diferentes versiones del mismo paquete instaladas en sus respectivos perfiles. Si dos usuarios instalan la misma versión de un paquete, solo se creará o descargará una copia, y el modelo de seguridad de Nix garantiza que sea seguro.

Implementación

NixOS se basa en el administrador de paquetes Nix, que mantiene todos los paquetes separados entre sí en un repositorio de paquetes.

Los paquetes instalados se identifican mediante un hash criptográfico de todas las entradas utilizadas para construirlos. Cambiar las instrucciones de compilación de un paquete cambia su hash, lo que hace que se instale otro paquete en el almacén de paquetes. Este sistema también se usa para administrar archivos de configuración, asegurando que las configuraciones más nuevas no sobrescriban las más antiguas.

Una consecuencia de esto es que NixOS no se ajusta al estándar de jerarquía del sistema de archivos . Las únicas excepciones son el enlace simbólico /bin/sha la versión bash en el administrador de paquetes de Nix (por ejemplo: /nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/) y aunque NixOS tiene un directorio /etcpara almacenar archivos de configuración de todo el sistema, la mayoría de los archivos en ese directorio son enlaces simbólicos a archivos generados en /nix/store, como /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config. No usar catálogos globales como /bin, permite que existan múltiples versiones de un paquete.

Opiniones

Jesy Smith revisó NixOS 15.09 para DistroWatch Weekly [13] :

Me gusta que NixOS se encargue de actualizar los paquetes, poniendo cada cambio en su propia "generación", y en mi opinión, para el usuario final, NixOS funciona como cualquier otra distribución de Linux. La configuración de NixOS no es para principiantes: no creo que NixOS esté destinado a ser utilizado como un sistema operativo de escritorio de propósito general. Pero NixOS nos brinda un campo de pruebas para el administrador de paquetes Nix, y creo que es una tecnología muy interesante que también merece un mayor estudio y adopción por parte de otras distribuciones.

DistroWatch Weekly también tiene una revisión de NixOS 17.03 escrita por Evan Sanders [14] .

Notas

  1. Lanzamiento de NixOS 22.05  .
  2. 1 2 https://github.com/NixOS/nixpkgs/blob/master/nixos/COPYING
  3. 1 2 DistroWatch.com: NixOS . Consultado el 22 de abril de 2018. Archivado desde el original el 25 de febrero de 2018.
  4. iscsd-scm11-final.pdf . Consultado el 22 de abril de 2018. Archivado desde el original el 21 de abril de 2019.
  5. Nix Ops . Consultado el 22 de abril de 2018. Archivado desde el original el 14 de marzo de 2018.
  6. Acerca de Disnix . Consultado el 22 de abril de 2018. Archivado desde el original el 24 de julio de 2018.
  7. tesis doctoral.pdf . Consultado el 22 de abril de 2018. Archivado desde el original el 9 de junio de 2019.
  8. Fundación Stiching NixOS . Consultado el 22 de abril de 2018. Archivado desde el original el 4 de junio de 2018.
  9. fotos-final.pdf . Consultado el 22 de abril de 2018. Archivado desde el original el 23 de marzo de 2016.
  10. Acerca de NixOS . Consultado el 22 de abril de 2018. Archivado desde el original el 22 de abril de 2018.
  11. atomic-hotswup2008-final.pdf . Consultado el 22 de abril de 2018. Archivado desde el original el 15 de enero de 2019.
  12. secsharing-ase2005-final.pdf . Consultado el 22 de abril de 2018. Archivado desde el original el 26 de septiembre de 2019.
  13. DistroWatch Weekly, número 637, 23 de noviembre de 2015 . Consultado el 21 de junio de 2018. Archivado desde el original el 21 de junio de 2018.
  14. DistroWatch Weekly, número 712, 15 de mayo de 2017 . Consultado el 21 de junio de 2018. Archivado desde el original el 21 de junio de 2018.

Literatura

Enlaces

  • nixos.org - sitio web oficial de NixOS
  • Domen Kožar, traducción: Denis Shevchenko. Nix: idea . www.ruhaskell.org. Consultado el 9 de enero de 2016 _