stringtranslate.com

Sistema operativo Nix

NixOS es una distribución Linux libre y de código abierto basada en el gestor de paquetes Nix . NixOS utiliza un diseño inmutable y un modelo de actualización atómico. [6] Su uso de un sistema de configuración declarativo permite reproducibilidad y portabilidad. [7]

NixOS se configura mediante módulos componibles y se basa en paquetes definidos en el proyecto Nixpkgs. Las recetas y configuraciones de paquetes se escriben en el "lenguaje Nix" especialmente diseñado que se incluye con el administrador de paquetes Nix.

Historia

En 2003, Eelco Dolstra inició Nix como un proyecto de investigación. [8] [9] Dolstra dice que el propósito del proyecto era lograr un sistema para la correcta implementación de software. [10] Sus influencias incluyeron a Eelco Visser , quien había supervisado su doctorado en la Universidad de Utrecht . [11] En 2006, Armijn Hemel presentó NixOS como resultado de su tesis de maestría en Utrecht. [12]

En 2015, se fundó la Fundación NixOS en los Países Bajos, con el objetivo de apoyar proyectos como NixOS que implementan el modelo de implementación puramente funcional. [13]

Historial de versiones de lanzamiento

NixOS publica versiones estables dos veces al año, alrededor de fines de mayo y fines de noviembre. [14] [15] [16]

Características

Instalador gráfico de NixOS

Modelo de configuración declarativa

En NixOS, el sistema operativo completo (incluido el núcleo , las aplicaciones, los paquetes del sistema y los archivos de configuración ) se crea mediante el administrador de paquetes Nix a partir de una descripción en el lenguaje Nix. La creación de una nueva versión no sobrescribirá las versiones anteriores. [17]

Un sistema NixOS se configura escribiendo una especificación de la funcionalidad que el usuario desea en su máquina en un archivo de configuración global (normalmente ubicado en /etc/nixos). La siguiente es una especificación mínima de una máquina que ejecuta un demonio SSH: [18]

{ boot . loader . grub . device  =  "/dev/sda" ; sistemasdearchivos . "/" . device  =  "/dev/sda1" ; servicios . sshd . enable  =  true ; }

Después de cambiar el archivo de especificaciones, el sistema se puede actualizar mediante el nixos-rebuildcomando. Esto hace todo lo necesario para crear la nueva versión del sistema, incluida la descarga e instalación de paquetes y la generación de archivos de configuración.

Actualizaciones atómicas y confiables

Dado que los archivos Nix son puros y declarativos , evaluarlos siempre producirá el mismo resultado, independientemente de qué paquetes o archivos de configuración estén en el sistema.

NixOS tiene un enfoque transaccional para la gestión de la configuración, lo que hace que los cambios de configuración, como las actualizaciones, sean atómicos . Por ejemplo, si una actualización a una nueva configuración se interrumpe por un corte de energía, el sistema seguirá estando en un estado consistente: se iniciará en la configuración antigua o en la nueva. [19]

Reversiones

Si, después de una actualización del sistema, la nueva configuración no es la deseada, se puede revertir a una versión anterior mediante un comando especial ( nixos-rebuild switch --rollback). Todas las versiones de la configuración del sistema aparecen automáticamente en el menú de arranque del sistema. Si la nueva configuración falla o no arranca correctamente, se puede seleccionar una versión anterior. Las reversiones son operaciones ligeras que no implican la restauración de archivos a partir de copias. [20]

Configuraciones de sistema reproducibles

El modelo de configuración declarativa de NixOS facilita la reproducción de una configuración de sistema en otra máquina. Al copiar el archivo de configuración en la máquina de destino y ejecutar el comando de actualización del sistema, se genera la misma configuración del sistema (núcleo, aplicaciones, servicios del sistema, etc.), excepto las partes del sistema que no administra el administrador de paquetes, como los datos de usuario.

Modelo basado en código fuente con caché binario

El lenguaje de compilación Nix utilizado por NixOS especifica cómo compilar paquetes desde el código fuente. Esto facilita la adaptación del sistema a las necesidades del usuario. Sin embargo, como la compilación desde el código fuente es un proceso lento, el administrador de paquetes descarga automáticamente binarios precompilados desde un servidor de caché cuando están disponibles. Es posible deshabilitar el caché binario y forzar la compilación desde el código fuente utilizando --option substitute falsecomo argumento. Esto brinda la flexibilidad de un modelo de administración de paquetes basado en el código fuente, con la eficiencia de un modelo binario. [21]

Consistencia

El administrador de paquetes Nix garantiza que el sistema en ejecución sea coherente con la especificación lógica del sistema, lo que significa que reconstruirá todos los paquetes que deban reconstruirse. Por ejemplo, si se modifica el núcleo, el administrador de paquetes se asegurará de que se reconstruyan los módulos externos del núcleo. De manera similar, cuando se actualiza una biblioteca, garantiza que todos los paquetes del sistema utilicen la nueva versión, incluso los paquetes vinculados estáticamente a ella.

Gestión de paquetes multiusuario

No se necesitan privilegios especiales para instalar software en NixOS. Además del perfil de todo el sistema, cada usuario tiene un perfil dedicado en el que puede instalar paquetes. Nix también permite que coexistan varias 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. El modelo de seguridad de Nix garantiza que esto sea seguro, porque solo los usuarios en los que la configuración del sistema confía explícitamente pueden usar parámetros de compilación que les permitan controlar el contenido de la salida de una derivación (como agregar impurezas al sandbox o usar un sustituto que no sea de confianza). [ aclaración necesaria ] Sin esos parámetros, las rutas solo se pueden sustituir desde un sustituto en el que confíe el sistema o una compilación local en sandbox que sea de confianza implícita.

Implementación

NixOS se basa en el administrador de paquetes Nix , que almacena todos los paquetes de forma aislada unos de otros en el almacén de paquetes.

Los paquetes instalados se identifican mediante un hash criptográfico de todos los datos de entrada utilizados para su compilación. Al cambiar las instrucciones de compilación de un paquete se modifica su hash, lo que dará como resultado que se instale un paquete diferente en el almacén de paquetes. Este sistema también se utiliza para administrar los archivos de configuración, lo que garantiza que las configuraciones más nuevas no sobrescriban las antiguas.

Una implicación de esto es que NixOS no sigue el estándar de jerarquía de sistemas de archivos . Las únicas excepciones son que /bin/shse crea un enlace simbólico a la versión de bash en el almacén de Nix (por ejemplo, /nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/), y si bien NixOS tiene un /etcdirectorio para guardar los 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 directorios globales como /bines parte de lo que permite que coexistan múltiples versiones de un paquete.

Recepción

Jesse Smith, al revisar NixOS 15.09 para DistroWatch Weekly en 2015, [22] escribió:

Me gusta mucho la forma en que NixOS elimina la preocupación de actualizar paquetes al colocar cada cambio en su propia "generación" y descubrí que, desde el punto de vista del usuario final, NixOS funcionaba igual que cualquier otra distribución de Linux. La configuración de NixOS no es para principiantes y no creo que NixOS esté pensado para usarse como un sistema operativo de escritorio de propósito general. Pero lo que sí hace NixOS es brindarnos un campo de juego útil en el que examinar el administrador de paquetes Nix y creo que esta es una tecnología muy interesante que merece una mayor exploración y adopción por parte de otras distribuciones.

Una revisión de 2022 de NixOS 21.11 "Porcupine" en la revista Full Circle concluyó:

En general, NixOS Gnome 21.11 impresiona por su seriedad, limpieza y elegancia. Si eres fanático del escritorio Gnome sin modificaciones, encontrarás muchas cosas que te gustarán aquí. La desventaja de esta distribución es la pronunciada curva de aprendizaje para la administración de paquetes, incluidas las actualizaciones y similares. No importa de qué distribución provengas, tendrás mucho que aprender para poder hacer que Nix funcione bien para ti en la línea de comandos. [23]

Liam Proven analiza NixOS 22.11 "Raccoon" en The Register :

En comparación con los informes sobre NixOS de hace apenas dos o tres años, descubrimos que era muy sencillo instalarlo y ponerlo en funcionamiento. Esto sugiere que las herramientas están madurando bien y alcanzando un cierto nivel de refinamiento, pero desde una perspectiva de primera vez no tenemos una base de referencia previa con la que comparar. No se trata en absoluto de una distribución tradicional, ni siquiera de un Unix tradicional, pero funciona y podemos ver su atractivo. [24]

Reseña de NixOS 23.11 "Tapir" realizada por Jesse Smith en DistroWatch :

NixOS es una joya poco común, ya que no creo que haya tenido ningún error mientras lo estaba usando. La distribución era estable, funcionaba bien con mi hardware y no tuve ningún problema mientras lo ejecutaba. Creo que vale la pena probar NixOS, especialmente si eres un administrador de sistemas y quieres implementar (o mantener) distribuciones idénticas en varias máquinas. [25]

Notas

  1. ^ Se utilizan varios otros lenguajes de programación en NixOS (a diciembre de 2023).
  2. ^ Se utilizan otras licencias para el software incluido con NixOS, por ejemplo, el kernel de Linux tiene licencia GNU GPL versión 2.0 (a diciembre de 2023)

Véase también

Referencias

  1. ^ "Comunidad - nixos.org". Archivado desde el original el 23 de septiembre de 2022. Consultado el 23 de septiembre de 2022 .
  2. ^ "NixOS/nixos-foundation - Github". GitHub . Archivado desde el original el 23 de septiembre de 2022 . Consultado el 23 de septiembre de 2022 .
  3. ^ "Versión 24.05". GitHub . 31 de mayo de 2024 . Consultado el 2 de junio de 2024 .
  4. ^ "Versión 24.11-pre". GitHub . 22 de mayo de 2024 . Consultado el 25 de junio de 2024 .
  5. ^ "nixpkgs/COPYING en master · NixOS/nixpkgs · GitHub". Github.com . Consultado el 19 de septiembre de 2015 .
  6. ^ "¿Qué es una distribución Linux inmutable y deberías usar una?". HowToGeek.com. Archivado desde el original el 2023-12-07 . Consultado el 2023-12-07 .
  7. ^ "DistroWatch.com: NixOS". Distrowatch.com . Consultado el 19 de septiembre de 2015 .
  8. ^ Dolstra, Eelco (2003). "Integración de la construcción y la implementación de software" (PDF) . Gestión de configuración de software . Apuntes de clase en informática. Vol. 2649. págs. 102-117. doi :10.1007/3-540-39195-9_8. ISBN 978-3-540-14036-8. Archivado desde el original (PDF) el 21 de abril de 2019.
  9. ^ Dolstra, Eelco (2006). El modelo de implementación de software puramente funcional (PDF) (Ph.D.). Archivado desde el original (PDF) el 9 de junio de 2019.
  10. ^ Jonatha Lorimer. "La tesis de Nix".
  11. ^ "Blog de Sander van der Burg: In memoriam: Eelco Visser (1966-2022)". Blog de Sander van der Burg . 2022-04-20 . Consultado el 3 de abril de 2024 .
  12. ^ Dolstra, Eelco. "Gestión de configuración de sistemas puramente funcionales". www.usenix.org . Consultado el 4 de marzo de 2024 .
  13. ^ "Fundación Stichting NixOS". Nixos.org . Consultado el 19 de septiembre de 2015 .
  14. ^ "Gobernanza". Nixos.org. Archivado desde el original el 16 de agosto de 2020. Consultado el 28 de agosto de 2020 .
  15. ^ "Nix RFCS (solicitud de comentarios)". GitHub . 17 de diciembre de 2021.
  16. ^ "Anuncios de lanzamiento". Nixos.org . Consultado el 9 de diciembre de 2023 .
  17. ^ Dolstra, Eelco; Hemel, Armijn (7 de mayo de 2007). Gestión de configuración de sistemas puramente funcionales (PDF) . 11.º taller de USENIX sobre temas de actualidad en sistemas operativos. San Diego, California, EE. UU.: Asociación USENIX. Archivado (PDF) desde el original el 10 de julio de 2020. Consultado el 19 de julio de 2023 .
  18. ^ "Acerca de NixOS". Nixos.org . Consultado el 19 de septiembre de 2015 .
  19. ^ van der Burg, Sander; Dolstra, Eelco; de Jonge, Merijn (2008-10-20). Actualización atómica de sistemas distribuidos (PDF) . 1er Taller internacional sobre temas de actualidad en actualizaciones de software. Nashville, Tennessee, EE. UU.: Association for Computing Machinery. doi :10.1145/1490283.1490294. ISBN 978-1-60558-304-4Archivado (PDF) del original el 13 de noviembre de 2021. Consultado el 19 de julio de 2023 .
  20. ^ Manual de NixOS: Cómo revertir los cambios de configuración, Nixos.org
  21. ^ Dolstra, Eelco (7 de noviembre de 2005). Uso compartido seguro entre usuarios no confiables en un modelo de implementación transparente de código fuente/binario (PDF) . 20.ª Conferencia internacional IEEE/ACM sobre ingeniería de software automatizada. Long Beach, California, EE. UU.: Association for Computing Machinery. doi :10.1145/1101908.1101933. ISBN 978-1-58113-993-8Archivado (PDF) del original el 13 de noviembre de 2021. Consultado el 19 de julio de 2023 .
  22. ^ DistroWatch Weekly, número 637, 23 de noviembre de 2015
  23. ^ Hunt, Adam (28 de octubre de 2022). «Reseña: NixOS» (PDF) . Revista Full Circle . Archivado (PDF) del original el 28 de octubre de 2022. Consultado el 28 de octubre de 2022 .
  24. ^ Probado, Liam. "NixOS 22.11 'Raccoon': como una prueba de concepto de que se pueden hacer cosas con los sistemas operativos".
  25. ^ Smith, Jesse. "NixOS 23.11".

Enlaces externos