NixOS | |
---|---|
Семейство ОС | Unix-подобные ОС |
Исходный код | открытый |
Первый выпуск | в 2003 году |
Последняя версия | 18.03[1] (4 апреля 2018 года) |
Менеджеры пакетов | Nix package manager |
Поддерживаемые платформы | i686, x86 64 |
Тип ядра | монолитное (Linux) |
Лицензия | MIT[2] |
Состояние | в разработке |
Репозиторий исходного кода | github.com/NixOS/nixpkgs |
Веб-сайт | nixos.org |
NixOS — дистрибутив Linux, созданный поверх менеджера пакетов Nix. Он использует декларативную конфигурацию и позволяет надёжно обновлять систему[3]. Предлагаются два основных направления: текущий стабильный выпуск и Unstable после последней разработки.
Проект NixOS начинался как исследовательский проект, но сейчас разрабатывает операционные системы[4].
NixOS разрабатывает по DevOps, и имеет инструменты, посвященные задачам развёртывания[5][6].
Этот раздел не завершён. |
Проект начался в 2003 году как исследовательский проект и был основан голландцем[3] Элько Дольстра (Eelco Dolstra)[7].
В 2015 году был создан фонд NixOS, чтобы помочь проектам, поддерживающим чисто функциональную модель развёртывания, такую как NixOS[8].
В NixOS вся операционная система — ядро, приложения, системные пакеты, файлы конфигурации и т. д. — создаётся менеджером пакетов Nix из описания на функциональном языке сборки. Это означает, что создание новой конфигурации не может перезаписывать предыдущие конфигурации[9].
Система NixOS настраивается путем написания спецификации функций, которые пользователь хочет на своей машине в глобальном файле конфигурации. Например, вот минимальная конфигурация машины, на которой запущен демон SSH[10]:
{
boot.loader.grub.device = "/dev/sda";
fileSystems."/".device = "/dev/sda1";
services.sshd.enable = true;
}
После изменения файла конфигурации система может быть обновлена с помощью nixos-rebuild switch
.
Эта команда делает всё необходимое для применения новой конфигурации, включая загрузку и компиляцию пакетов и создание файлов конфигурации.
Поскольку файлы Nix являются очищенными и декларативными, их выполнения всегда будут давать одинаковый результат независимо от того, какие пакеты или файлы конфигурации находятся в системе. Таким образом, модернизация системы столь же надёжна, как и переустановка с нуля.
NixOS имеет транзакционный подход к управлению конфигурацией, вносящий изменения в конфигурацию, такие как модернизация атома. Это означает, что если переход на новую конфигурацию прерван — скажем, сбой питания на полпути — система все равно будет в согласованном состоянии: она либо загрузится в старой, либо в новой конфигурации. В других системах машина может оказаться в несогласованном состоянии и может даже не загружаться[11].
Если после обновления системы новая конфигурация нежелательна, её можно откатить с помощью специальной команды nixos-rebuild switch --rollback
.
Фактически, каждая версия конфигурации системы автоматически появляется в меню загрузки системы. Если новая конфигурация выходит из строя или не загружается должным образом, может быть выбрана более старая версия. Кроме того, откаты — это лёгкая операция, которая не связана с восстановлением файлов из копий.
Модель декларативной конфигурации NixOS позволяет легко воспроизвести конфигурацию системы на другом компьютере. Копирование файла конфигурации на целевой компьютер и выполнение команды обновления системы генерирует ту же конфигурацию системы (ядро, приложения, системные службы и т. д.), за исключением тех частей системы, которые не управляются диспетчером пакетов, например пользовательскими данными.
Язык сборки Nix, используемый NixOS, указывает, как создавать пакеты из исходного кода. Тем не менее, из-за медленного процесса источника менеджер пакетов автоматически загружает предварительно созданные двоичные файлы с кэш-сервера, когда они доступны. Это даёт гибкость исходной модели управления пакетами с эффективностью двоичной модели[12].
Менеджер пакетов Nix гарантирует, что работающая система «согласована» с логической спецификацией системы, что означает, что она перекомпилирует все пакеты, которые необходимо перекомпилировать. Например, если ядро изменено, менеджер пакетов гарантирует, что внешние модули ядра будут перекомпилированы. Аналогично, когда библиотека обновляется, это гарантирует, что все системные пакеты используют новую версию, даже пакеты, статически связанные с ней.
Нет необходимости в специальных привилегиях для установки программного обеспечения в NixOS. В дополнение к общесистемному профилю каждый пользователь имеет специальный профиль, в котором они могут устанавливать пакеты. Nix также позволяет нескольким версиям пакета существовать, поэтому разные пользователи могут иметь разные версии одного и того же пакета, установленные в своих соответствующих профилях. Если два пользователя установят одну и ту же версию пакета, но будет создана или загружена только одна копия, то модель безопасности Nix гарантирует, что это безопасно.
NixOS основан на диспетчере пакетов Nix, который хранит все пакеты отдельно друг от друга в хранилище пакетов.
Установленные пакеты идентифицируются криптографическим хешем всех входных данных, используемых для их сборки. Изменение инструкций сборки пакета изменяет его хеш, и это приводит к установке другого пакета в хранилище пакетов. Эта система также используется для управления конфигурационными файлами, гарантируя, что более новые конфигурации не переписывают старые.
Следствием этого является то, что NixOS не соответствует стандарту иерархии файловой системы. Единственными исключениями являются symlink /bin/sh для версии bash в менеджере пакетов Nix (например: /nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/
) и, в то время как у NixOS есть каталог /etc для хранения файлов конфигурации всей системы, большинство файлов в этом каталоге являются символическими ссылками на сгенерированные файлы в /nix/store, такие как /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config
. Отказ от использования глобальных каталогов, таких как /bin, позволяет существовать нескольким версиям пакета.
Джесси Смит написала обзор NixOS 15.09 для DistroWatch Weekly[13]:
![]() | Мне очень нравится, как NixOS берет на себя заботу об обновлении пакетов, помещая каждое изменение в своё «поколение», и я нашла, с точки зрения конечного пользователя, NixOS работал так же, как и любой другой дистрибутив Linux. Дистрибутив NixOS не для начинающих, и я не думаю, что NixOS предназначен для использования в качестве основной операционной системы. Но то, что делает NixOS, даёт нам полезную площадку для изучения менеджера пакетов Nix, и я думаю, что это очень интересная технология, которая заслуживает дальнейшего изучения и принятия дополнительными дистрибутивами. | ![]() |
DistroWatch Weekly также имеет обзор NixOS 17.03, написанный Эваном Сандерсом[14].
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .