NixOS
NixOS — це дистрибутив Linux, побудований на основі менеджера пакунків Nix . Він використовує декларативну систему конфігурації та дозволяє надійно оновлювати систему. [4] Пропонується кілька офіційних «каналів» пакунків [5] [6], включаючи поточний стабільний випуск (Stable) і нестабільний (Unstable) випуск, який слідує за останніми розробками. NixOS має інструменти, присвячені DevOps і завданням розгортання. [7] [8] ІсторіяУ 2003 році Елко Дольстра запустив NixOS як дослідницький проект. [9] [10] У 2015 році було засновано фонд NixOS з метою підтримки таких проектів, як NixOS, які реалізують суто функціональну модель розгортання. [11] У травні 2024 року лідер проекту NixOS Елко Долстра звільнився з посади голови керуючої ради після публікації відкритого листа з критикою його дій. Автори листа звинувачують Долстру в авторитарному стилі керівництва, нездатності вирішувати проблеми спільноти та створенні токсичної атмосфери. Долстра відкинув звинувачення, але погодився передати повноваження новій структурі управління, підпорядкованій спільноті. Нова структура управління матиме ширші повноваження для вирішення питань, таких як політика щодо спонсорів, залагодження конфліктів інтересів, повноваження при модеруванні та захист меншин. ВерсіїNixOS публікує випуски двічі на рік. [12] Раніше це відбувалося приблизно в березні та вересні, але, починаючи з 21.05, NixOS націлена на травень і листопад. [13] Кожен номер версії має формат «YY. MM", наприклад, "20.03" була версія, випущена в березні 2020 року. Кожна версія NixOS має назву, наприклад «Markhor» для випуску 20.03. ОсобливостіДекларативна конфігураційна модельУ NixOS уся операційна система – ядро, програми, системні пакунки, конфігураційні файли тощо – будується менеджером пакунків Nix із опису функціональною мовою збірки. Це означає, що створення нової конфігурації не може перезаписати попередні конфігурації. [14] Система NixOS налаштовується шляхом запису специфікації функціональних можливостей, які користувач бажає мати на своєму пристрої, у файлі глобальної конфігурації. Наприклад, ось мінімальна конфігурація машини, на якій працює демон SSH: [15] {
boot.loader.grub.device = "/dev/sda";
fileSystems."/".device = "/dev/sda1";
services.sshd.enable = true;
}
Після зміни конфігураційного файлу систему можна оновити за допомогою команди Надійні оновленняОскільки файли Nix є чистими та декларативними, їх оцінка завжди дасть однаковий результат, незалежно від того, які пакунки чи файли конфігурації є в системі. Таким чином, оновити систему так само надійно, як і перевстановити з нуля. Атомарні оновленняNixOS має транзакційний підхід до керування конфігурацією, вносячи атомарні зміни конфігурації, наприклад оновлення. Це означає, що якщо оновлення до нової конфігурації буде перервано – скажімо, на півдорозі зникне живлення – система все одно перебуватиме в узгодженому стані: вона завантажуватиметься у старій або новій конфігурації. В інших системах машина може опинитися в неузгодженому стані та навіть більше не завантажуватися. [16] ВідкатиЯкщо після оновлення системи нова конфігурація є небажаною, її можна відкотити за допомогою спеціальної команди ( Відтворювані конфігурації системиДекларативна модель конфігурації NixOS дозволяє легко відтворити конфігурацію системи на іншому пристрої. Копіювання файлу конфігурації на цільову машину та виконання команди оновлення системи генерує ту саму конфігурацію системи (ядро, програми, системні служби тощо), за винятком частин системи, якими не керує менеджер пакунків, наприклад даних користувача. Модель на основі вихідного коду з бінарним кешемМова збірки Nix, яка використовується NixOS, визначає, як створювати пакунки з вихідного коду. Це дозволяє легко адаптувати систему до потреб користувача. Однак, оскільки створення з джерела є повільним процесом, менеджер пакунків автоматично завантажує попередньо зібрані двійкові файли з кеш-серверу, коли вони доступні. Це забезпечує гнучкість моделі керування пакунками на основі вихідного коду з ефективністю двійкової моделі. [17] ПослідовністьМенеджер пакунків Nix гарантує, що працююча система відповідає логічній специфікації системи, тобто він перебудує всі пакунки, які потрібно перебудувати. Наприклад, якщо ядро змінено, менеджер пакунків забезпечить перебудову зовнішніх модулів ядра. Так само, коли бібліотеку оновлено, це гарантує, що всі системні пакунки використовують нову версію, навіть пакунки, статично пов’язані з нею. Багатокористувацьке керування пакункамиДля встановлення програмного забезпечення в NixOS не потрібні спеціальні привілеї. Окрім загальносистемного профілю, кожен користувач має спеціальний профіль, у якому він може інсталювати пакунки. Nix також дозволяє одночасно існувати кілька версій пакунка, тому різні користувачі можуть мати різні версії одного пакунка, встановлені у відповідних профілях. Якщо два користувачі інсталюють одну версію пакунка, буде створено або завантажено лише одну копію. Модель безпеки Nix гарантує, що це безпечно, оскільки лише користувачі, яким конфігурація системи явно довіряє, можуть використовувати параметри збірки, які дозволять їм контролювати вміст вихідних даних диференціювання(наприклад, додавання домішок до пісочниці або використання ненадійного замінника). Без цих параметрів шляхи можуть бути замінені лише замінником, якому довіряє система, або локальною збіркою програмного середовища у пісочниці, якій неявно довіряють. РеалізаціяNixOS базується на системі керування пакунками Nix, яка зберігає всі пакунки окремо один від одного в сховищі пакунків. Встановлені пакунки ідентифікуються криптографічним хешем усіх вхідних даних, використаних для їх збірки. Зміна інструкцій зі створення пакунка змінює його хеш, і це призведе до встановлення іншого пакунка в сховищі пакунків. Ця система також використовується для керування файлами конфігурації, гарантуючи, що нові конфігурації не перезаписують старі. Наслідком цього є те, що NixOS не дотримується стандарту ієрархії файлової системи. Єдиним винятком є то що створене символьне посилання /bin/sh на версію bash у сховищі Nix (наприклад: РецензіяДжессі Сміт, оглядаючи NixOS 15.09 для DistroWatch Weekly у 2015,[18] написав:
Огляд NixOS 21.11 "Porcupine" за 2022 рік у журналі Full Circle зробив висновок:
NixOS 22.11 "Raccoon" перевірено Liam Proven у The Register:
NixOS 23.11 "Tapir" перевірено Джессі Смітом на DistroWatch:
Примітки
Див. Також
Посилання
Зовнішні посилання |