Написано на | языке выражений Nix |
---|---|
Семейство ОС | Unix-подобных |
Рабочее состояние | В разработке |
Исходная модель | Открытый исходный код |
Первоначальный выпуск | 2003; 17 лет назад (2003 г.) |
Последний выпуск | 20.03 / 20 апреля 2020 г.; 6 месяцев назад (2020-04-20) |
Репозиторий | |
Маркетинговая цель | Универсальный пакет |
менеджер | Nix |
Платформы | i686, x86-64, ARMv7, AArch64 |
Kernel тип | Монолитный (ядро Linux ) |
Лицензия | MIT |
Официальный сайт | nixos.org |
NixOS - это дистрибутив Linux. поверх диспетчера пакетов Nix. Он использует декларативную конфигурацию и позволяет надежно обновлять систему. Предлагаются две основные ветви: текущая стабильная версия и нестабильная после последней разработки. Хотя NixOS начиналась как исследовательский проект, это полностью функциональная и удобная операционная система. NixOS имеет инструменты, предназначенные для DevOps и задач развертывания.
NixOS началась как исследовательский проект Eelco Dolstra в 2003 году.
Stichting NixOS была основана в 2015 году и направлена на поддержку таких проектов, как NixOS, которые реализуют чисто функциональная модель развертывания.
NixOS выпускается поэтапно, дважды в год, обычно в марте и сентябре. Каждый номер версии имеет следующий формат: «ГГ.ММ».
Например: «20.03» - это версия, выпущенная примерно в марте 2020 года.
Кроме того, каждая версия имеет имя, например «Мархур» для выпуска 20.03.
История версий | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
В NixOS вся операционная система - ядро , приложения, системные пакеты, файлы конфигурации и т. Д. - создается диспетчером пакетов Nix на основе описания на языке функциональной сборки.. Это означает, что создание новой конфигурации не может перезаписать предыдущие конфигурации.
Система NixOS настраивается путем записи спецификации функциональных возможностей, которые пользователь хочет на своей машине, в глобальном файле конфигурации. Например, вот минимальная конфигурация машины, на которой запущен демон SSH:
{boot.loader.grub.device = "/ dev / sda"; файловые системы. "/". device = "/ dev / sda1"; services.sshd.enable = true; }
После изменения файла конфигурации систему можно обновить с помощью команды переключателя nixos-rebuild
. Эта команда делает все необходимое для применения новой конфигурации, включая загрузку и компиляцию пакетов и создание файлов конфигурации.
Поскольку файлы Nix являются чистыми и декларативными, их оценка всегда будет давать один и тот же результат, независимо от того, какие пакеты или файлы конфигурации находятся в системе. Таким образом, обновление системы так же надежно, как и переустановка с нуля.
NixOS использует транзакционный подход к управлению конфигурацией, внося изменения конфигурации, такие как обновления атомарные. Это означает, что если обновление до новой конфигурации будет прервано - скажем, произойдет сбой питания на полпути - система все равно будет находиться в согласованном состоянии: она загрузится либо в старой, либо в новой конфигурации. В других системах машина может оказаться в несогласованном состоянии и даже больше не загружаться.
Если после обновления системы новая конфигурация нежелательна, ее можно откатить с помощью специальной команды (переключатель nixos-rebuild --rollback
). Каждая версия конфигурации системы автоматически отображается в меню загрузки системы. Если новая конфигурация дает сбой или не загружается должным образом, можно выбрать более старую версию. Откаты - это легкие операции, не связанные с восстановлением файлов из копий.
Модель декларативной конфигурации NixOS позволяет легко воспроизвести конфигурацию системы на другом компьютере. Копирование файла конфигурации на целевой компьютер и запуск команды обновления системы генерирует ту же конфигурацию системы (ядро, приложения, системные службы и т. Д.), За исключением частей системы, не управляемых менеджером пакетов, таких как данные пользователя.
Язык сборки Nix, используемый NixOS, определяет, как создавать пакеты из исходного кода. Это позволяет легко адаптировать систему к потребностям пользователя. Однако, поскольку сборка из исходного кода является медленным процессом, диспетчер пакетов автоматически загружает предварительно созданные двоичные файлы с кэш-сервера, когда они доступны. Это дает гибкость модели управления пакетами на основе исходного кода с эффективностью бинарной модели.
Диспетчер пакетов Nix гарантирует, что работающая система соответствует логической спецификации system, что означает, что он перестроит все пакеты, которые необходимо перестроить. Например, если ядро изменено, диспетчер пакетов гарантирует, что внешние модули ядра будут перестроены. Аналогичным образом, когда библиотека обновляется, это гарантирует, что все системные пакеты используют новую версию, даже пакеты, статически связанные с ней.
Для установки программного обеспечения в NixOS не требуются особые привилегии. В дополнение к общесистемному профилю у каждого пользователя есть специальный профиль, в который они могут устанавливать пакеты. Nix также позволяет сосуществовать нескольким версиям пакета, поэтому разные пользователи могут иметь разные версии одного и того же пакета, установленные в их соответствующих профилях. Если два пользователя устанавливают одну и ту же версию пакета, будет создана или загружена только одна копия, и модель безопасности Nix гарантирует ее безопасность.
NixOS основана на диспетчере пакетов Nix, который хранит все пакеты изолированно друг от друга в хранилище пакетов.
Установленные пакеты идентифицируются криптографическим хешем всех входных данных, используемых для их сборки. При изменении инструкций сборки пакета изменяется его хэш, и в результате в хранилище пакетов устанавливается другой пакет. Эта система также используется для управления файлами конфигурации, гарантируя, что более новые конфигурации не перезаписывают старые.
Следствием этого является то, что NixOS не следует Стандарту иерархии файловой системы. Единственным исключением является символическая ссылка / bin / shна версию bash в магазине Nix (например: /nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43 /
); и хотя в NixOS есть каталог / etcдля хранения общесистемных файлов конфигурации, большинство файлов в этом каталоге являются символическими ссылками на сгенерированные файлы в / nix / store, например / nix / store / s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config
. Отказ от использования глобальных каталогов, таких как / bin, является частью того, что позволяет сосуществовать нескольким версиям пакета.
Джесси Смит сделал обзор NixOS 15.09 для DistroWatch Weekly. Смит писал:
Мне очень нравится, как NixOS избавляет от забот об обновлении пакетов, помещая каждое изменение в свое собственное «поколение», и я обнаружил, с точки зрения конечного пользователя, что NixOS работает так же, как и любые другие. Дистрибутив Linux. Настройка NixOS не для новичков, и я не думаю, что NixOS предназначена для использования в качестве настольной операционной системы общего назначения. Но NixOS дает нам полезную площадку для изучения диспетчера пакетов Nix, и я думаю, что это очень интересная технология, которая заслуживает дальнейшего изучения и принятия в дополнительных дистрибутивах.
В DistroWatch Weekly также есть обзор NixOS 17.03, написано Иваном Сандерсом.