НикОС
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Разработчик | Участники NixOS
Фонд НикОС [1] [2] |
---|---|
Написано в | Язык выражений Nix [примечание 1] |
Семейство ОС | Linux ( Unix-подобный ) |
Рабочее состояние | Текущий |
Исходная модель | Открытый исходный код |
Первоначальный выпуск | 0,1 / 3 июня 2003 г |
Последний выпуск | 20.03, [3] 22.05, [4] 22.11, [5] 23.05, [6] 23.11, [7] 24.05 [8] / 20 апреля 2020 г |
Последний предварительный просмотр | 24.05-пред, [9] 24.11-пред [10] / 21 ноября 2023 г |
Репозиторий | |
Маркетинговая цель | Общее назначение |
Менеджер пакетов | Никс |
Платформы | i686 , x86-64 , AArch64 |
ядра Тип | Монолитный ( ядро Linux ) |
Лицензия | С [11] [примечание 2] |
Официальный сайт | Никсос |
NixOS — это с открытым исходным кодом, бесплатный дистрибутив Linux основанный на менеджере пакетов Nix . NixOS использует неизменяемый дизайн и модель атомарного обновления. [12] Использование декларативной системы конфигурации обеспечивает воспроизводимость и переносимость. [13]
NixOS настраивается с использованием составных модулей и опирается на пакеты, определенные в проекте Nixpkgs . Рецепты и конфигурации пакетов написаны на специально созданном «языке Nix», который поставляется с менеджером пакетов Nix.
История
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( декабрь 2023 г. ) |
В 2003 году Eelco Dolstra запустила Nix как исследовательский проект. [14] [15] Долстра говорит, что целью проекта было создание системы для правильного развертывания программного обеспечения. [16] На него оказал влияние Элко Виссер , который руководил работой над докторской диссертацией в Утрехтском университете . [17] В 2006 году Армейн Хемель представил NixOS как результат своей магистерской диссертации в Утрехте. [18]
В 2015 году в Нидерландах был основан NixOS Foundation с целью поддержки таких проектов, как NixOS, реализующих чисто функциональную модель развертывания. [19]
История версий релизов
[ редактировать ]Имя | Дата |
---|---|
NixOS 13.10 «Аардварк» | Октябрь 2013 г. |
NixOS 14.04 «Бабуин» | апрель 2014 г. |
NixOS 14.12 «Гусеница» | декабрь 2014 г. |
NixOS 15.09 «Динго» | Сентябрь 2015 г. |
NixOS 16.03 «Эму» | Март 2016 г. |
NixOS 16.09 «Камбала» | Сентябрь 2016 г. |
NixOS 17.03 «Горилла» | Март 2017 г. |
NixOS 17.09 «Колибри» | Сентябрь 2017 г. |
NixOS 18.03 «Импала» | март 2018 г. |
NixOS 18.09 «Медуза» | Сентябрь 2018 г. |
NixOS 19.03 "Кои" | март 2019 г. |
NixOS 19.09 «Лорис» | сентябрь 2019 г. |
NixOS 20.03 «Мархор» | март 2020 г. |
NixOS 20.09 «Соловей» | сентябрь 2020 г. |
NixOS 21.05 «Окапи» | май 2021 г. |
NixOS 21.11 «Дикобраз» | ноябрь 2021 г. |
NixOS 22.05 «Квокка» | май 2022 г. |
NixOS 22.11 «Енот» | ноябрь 2022 г. |
NixOS 23.05 «Горностай» | май 2023 г. |
NixOS 23.11 «Тапир» | ноябрь 2023 г. |
NixOS 24.05 «Уакари» | май 2024 г. |
NixOS публикует стабильные выпуски два раза в год, примерно в конце мая и конце ноября. [20] [21] [22]
Функции
[ редактировать ]Декларативная модель конфигурации
[ редактировать ]В NixOS вся операционная система — включая ядро , приложения, системные пакеты и файлы конфигурации — собирается менеджером пакетов Nix на основе описания на языке Nix . Создание новой версии не перезапишет предыдущие версии. [23]
Система NixOS настраивается путем записи спецификации функциональности, которую пользователь хочет использовать на своей машине, в глобальном файле конфигурации (обычно расположенном в /etc/nixos
). Ниже приводится минимальная спецификация машины, на которой работает демон SSH: [24]
{
boot.loader.grub.device = "/dev/sda";
fileSystems."/".device = "/dev/sda1";
services.sshd.enable = true;
}
После изменения файла спецификации систему можно обновить с помощью nixos-rebuild
команда. При этом делается все необходимое для создания новой версии системы, включая загрузку и установку пакетов, а также создание файлов конфигурации.
Надежные и атомарные обновления
[ редактировать ]Поскольку файлы Nix являются чистыми и декларативными , их оценка всегда будет давать один и тот же результат, независимо от того, какие пакеты или файлы конфигурации находятся в системе.
NixOS использует транзакционный подход к управлению конфигурацией, внося изменения в конфигурацию, такие как атомарные обновления . Например, если обновление до новой конфигурации прервется из-за сбоя питания, система по-прежнему будет находиться в согласованном состоянии: она будет загружаться либо в старой, либо в новой конфигурации. [25]
Откаты
[ редактировать ]Если после обновления системы новая конфигурация нежелательна, ее можно откатить с помощью специальной команды ( nixos-rebuild switch --rollback
). Каждая версия конфигурации системы автоматически отображается в меню загрузки системы. Если новая конфигурация дает сбой или не загружается должным образом, можно выбрать более старую версию. Откат — это упрощенная операция, не требующая восстановления файлов из копий. [26]
Воспроизводимые конфигурации системы
[ редактировать ]Декларативная модель конфигурации NixOS позволяет легко воспроизвести конфигурацию системы на другом компьютере. Копирование файла конфигурации на целевой компьютер и запуск команды обновления системы создает ту же конфигурацию системы (ядро, приложения, системные службы и т. д.), за исключением частей системы, не управляемых менеджером пакетов, таких как пользовательские данные.
Модель на основе исходного кода с двоичным кешем
[ редактировать ]Язык сборки Nix, используемый NixOS, определяет, как собирать пакеты из исходного кода. Это позволяет легко адаптировать систему к потребностям пользователя. Однако, поскольку сборка из исходного кода является медленным процессом, менеджер пакетов автоматически загружает предварительно созданные двоичные файлы с кэш-сервера, когда они становятся доступными. Можно отключить двоичный кеш и принудительно выполнить сборку из исходного кода, используя --option substitute false
в качестве аргумента. Это обеспечивает гибкость модели управления пакетами на основе исходного кода и эффективность двоичной модели. [27]
Последовательность
[ редактировать ]Менеджер пакетов Nix гарантирует, что работающая система соответствует логической спецификации системы, а это означает, что он пересоберет все пакеты, которые необходимо пересобрать. Например, если ядро изменено, менеджер пакетов обеспечит пересборку внешних модулей ядра. Аналогичным образом, когда библиотека обновляется, она гарантирует, что все системные пакеты используют новую версию, даже пакеты, статически связанные с ней.
Многопользовательское управление пакетами
[ редактировать ]Для установки программного обеспечения в 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 в 2015 г., [28] написал:
Мне очень нравится, как NixOS избавляет от необходимости обновлять пакеты, помещая каждое изменение в отдельное «поколение», и я обнаружил, что с точки зрения конечного пользователя NixOS работает точно так же, как и любой другой дистрибутив Linux. Настройка NixOS не для новичков, и я не думаю, что NixOS предназначена для использования в качестве настольной операционной системы общего назначения. Но NixOS дает нам полезную площадку для изучения менеджера пакетов Nix, и я думаю, что это очень интересная технология, которая заслуживает дальнейшего изучения и внедрения в дополнительных дистрибутивах.
В обзоре NixOS 21.11 «Porcupine» за 2022 год, опубликованном в журнале Full Circle, сделан вывод:
В целом NixOS Gnome 21.11 производит впечатление серьезного, аккуратного и элегантного. Если вы являетесь поклонником немодифицированного рабочего стола Gnome, то здесь вам есть что понравиться. Недостатком этого дистрибутива является сложность обучения управлению пакетами, включая обновления и тому подобное. Независимо от того, из какого дистрибутива вы исходите, вам придется многому научиться, чтобы заставить Nix хорошо работать в командной строке. [29]
Обзор NixOS 22.11 «Raccoon» Лиама Провена из The Register :
По сравнению с отчетами о NixOS всего два или три года назад, мы обнаружили, что установить и запустить ее было очень просто. Это говорит о том, что инструменты хорошо созревают и достигают определенного уровня отшлифовки, но с точки зрения первого использования у нас нет предварительной базовой линии, с которой можно было бы сравнивать. Это совсем не традиционный дистрибутив и даже не традиционный Unix, но он работает, и мы видим его привлекательность. [30]
Обзор NixOS 23.11 «Tapir» Джесси Смита на DistroWatch :
NixOS — редкая жемчужина, и я не думаю, что сталкивался с какими-либо ошибками во время ее использования. Дистрибутив был стабильным, хорошо работал с моим оборудованием, и при его запуске я не столкнулся ни с одной проблемой. Я считаю, что NixOS стоит попробовать, особенно если вы системный администратор и хотите развертывать (или поддерживать) одинаковые дистрибутивы на нескольких машинах. [31]
Примечания
[ редактировать ]- ^ В NixOS используются различные другие языки программирования (по состоянию на декабрь 2023 г.).
- ^ Для программного обеспечения, входящего в состав NixOS, используются различные другие лицензии, например, ядро Linux лицензируется по лицензии GNU GPL версии 2.0 (по состоянию на декабрь 2023 г.).
См. также
[ редактировать ]- GNU Guix System — операционная система, построенная на GNU Guix , вдохновленная Nix.
Ссылки
[ редактировать ]- ^ «Сообщество — nixos.org» . Архивировано из оригинала 23 сентября 2022 г. Проверено 23 сентября 2022 г.
- ^ «NixOS/nixos-foundation — Github» . Гитхаб . Архивировано из оригинала 23 сентября 2022 г. Проверено 23 сентября 2022 г.
- ^ «Выпуск 20.03» . 20 апреля 2020 г. Проверено 21 апреля 2020 г.
- ^ «Выпуск 22.05» . 30 мая 2022 г. Проверено 11 июня 2022 г.
- ^ «Выпуск 22.11» . 30 ноября 2022 г. Проверено 12 декабря 2022 г.
- ^ «Выпуск 23.05» . 31 мая 2023 г. Проверено 30 июня 2023 г.
- ^ «Выпуск 23.11» . Гитхаб . 29 ноября 2023 г. Проверено 6 декабря 2023 г.
- ^ «Выпуск 24.05» . Гитхаб . 31 мая 2024 г. Проверено 2 июня 2024 г.
- ^ «Выпуск 24.05-пред» . Гитхаб . 21 ноября 2023 г. Проверено 6 декабря 2023 г.
- ^ «Выпуск 24.11-pre» . Гитхаб . 22 мая 2024 г. Проверено 25 июня 2024 г.
- ^ «nixpkgs/КОПИРОВАНИЕ в master · NixOS/nixpkgs · GitHub» . Гитхаб.com . Проверено 19 сентября 2015 г.
- ^ «Что такое неизменяемый дистрибутив Linux и стоит ли его использовать?» . HowToGeek.com. Архивировано из оригинала 07 декабря 2023 г. Проверено 7 декабря 2023 г.
- ^ «DistroWatch.com: NixOS» . Distrowatch.com . Проверено 19 сентября 2015 г.
- ^ Долстра, Eelco (2003). «Интеграция разработки и развертывания программного обеспечения» (PDF) . Управление конфигурацией программного обеспечения . Конспекты лекций по информатике. Том. 2649. стр. 102–117. дои : 10.1007/3-540-39195-9_8 . ISBN 978-3-540-14036-8 . Архивировано из оригинала (PDF) 21 апреля 2019 г.
- ^ Долстра, Eelco (2006). Чисто функциональная модель развертывания программного обеспечения (PDF) (доктор философии). Архивировано из оригинала (PDF) 9 июня 2019 г.
- ^ Джоната Лоример. «Тезис Никса» .
- ^ «Блог Сандера ван дер Бурга: Памяти: Элко Виссер (1966-2022)» . Блог Сандера ван дер Бурга . 20 апреля 2022 г. Проверено 3 апреля 2024 г.
- ^ Долстра, Элко. «Чисто функциональное управление конфигурацией системы» . www.usenix.org . Проверено 4 марта 2024 г.
- ^ «Фонд Stichting NixOS» . Никсос.орг . Проверено 19 сентября 2015 г.
- ^ «Управление» . Никсос.орг. Архивировано из оригинала 16 августа 2020 г. Проверено 28 августа 2020 г.
- ^ «Nix RFCS (Запрос на комментарии)» . Гитхаб . 17 декабря 2021 г.
- ^ «Анонс релиза» . Никсос.орг . Проверено 9 декабря 2023 г.
- ^ Долстра, Eelco; Хемель, Армейн (7 мая 2007 г.). Чисто функциональное управление конфигурацией системы (PDF) . 11-й семинар USENIX «Актуальные темы в операционных системах» . Сан-Диего, Калифорния, США: Ассоциация USENIX. Архивировано (PDF) из оригинала 10 июля 2020 г. Проверено 19 июля 2023 г.
- ^ «О NixOS» . Никсос.орг . Проверено 19 сентября 2015 г.
- ^ ван дер Бург, Сандер; Долстра, Eelco; де Йонге, Мерейн (20 октября 2008 г.). Атомная модернизация распределенных систем (PDF) . 1-й международный семинар по актуальным темам обновления программного обеспечения . Нэшвилл, Теннесси, США: Ассоциация вычислительной техники. дои : 10.1145/1490283.1490294 . ISBN 978-1-60558-304-4 . Архивировано (PDF) из оригинала 13 ноября 2021 г. Проверено 19 июля 2023 г.
- ^ Руководство по NixOS — Откат изменений конфигурации , Nixos.org
- ^ Долстра, Eelco (07 ноября 2005 г.). Безопасное совместное использование ненадежными пользователями в прозрачной исходной/двоичной модели развертывания (PDF) . 20-я Международная конференция IEEE/ACM по автоматизированной разработке программного обеспечения . Лонг-Бич, Калифорния, США: Ассоциация вычислительной техники. дои : 10.1145/1101908.1101933 . ISBN 978-1-58113-993-8 . Архивировано (PDF) из оригинала 13 ноября 2021 г. Проверено 19 июля 2023 г.
- ↑ DistroWatch Weekly, выпуск 637, 23 ноября 2015 г.
- ^ Хант, Адам (28 октября 2022 г.). «Обзор — NixOS» (PDF) . Журнал «Полный круг» . Архивировано (PDF) из оригинала 28 октября 2022 года . Проверено 28 октября 2022 г.
- ^ Доказано, Лиам. «NixOS 22.11 «Енот»: как доказательство концепции, вы можете делать что-то с операционными системами» .
- ^ Смит, Джесси. «НиксОС 23.11» .