NixOS | |
---|---|
OS-perhe | Unix-tyyppinen käyttöjärjestelmä |
Perustuen | Nix-pakettien hallinta [2] |
Lähde | avata |
Ensimmäinen painos | vuonna 2003 |
uusin versio | 22. toukokuuta [1] (30. toukokuuta 2022 ) |
Paketinhoitajat | Nix-pakettien hallinta |
Tuetut alustat | x86_64 , i686 ja AArch64 [d] |
Ytimen tyyppi | monoliittinen ( Linux ) |
Lisenssi | MIT-lisenssi [2] |
Osavaltio | kehityksessä |
Lähdekoodivarasto | github.com/NixOS/nixpkgs |
Verkkosivusto | nixos.org _ |
Mediatiedostot Wikimedia Commonsissa |
NixOS on Linux-jakelu , joka on rakennettu Nix-pakettienhallinnan päälle . Se käyttää deklaratiivista konfiguraatiota ja mahdollistaa järjestelmän luotettavan päivittämisen [3] . Kaksi pääsuuntaa ehdotetaan: nykyinen vakaa julkaisu ja epävakaa uusimman kehityksen jälkeen.
NixOS-projekti alkoi tutkimusprojektina, mutta nyt kehitetään käyttöjärjestelmiä [4] .
NixOS kehitetään DevOpsin kanssa , ja siinä on työkaluja, jotka on omistettu käyttöönottotehtäviin [5] [6] .
Hanke alkoi vuonna 2003 tutkimusprojektina ja sen perusti hollantilainen [3] Eelco Dolstra [7 ] .
Vuonna 2015 NixOS Foundation luotiin auttamaan projekteja, jotka tukevat puhtaasti toiminnallista käyttöönottomallia, kuten NixOS [8] .
NixOS:ssä koko käyttöjärjestelmä – ydin, sovellukset , järjestelmäpaketit, määritystiedostot ja niin edelleen – luodaan Nix-pakettien hallinnan avulla toiminnallisella kokoonpanokielellä tehdystä kuvauksesta. Tämä tarkoittaa, että uuden kokoonpanon luominen ei voi korvata aiempia määrityksiä [9] .
NixOS-järjestelmä konfiguroidaan kirjoittamalla yleiseen asetustiedostoon käyttäjän koneelleen haluamien ominaisuuksien määrittely. Tässä on esimerkiksi minimaalinen konfiguraatio koneelle, joka käyttää SSH-demonia [10] :
{ boot . kuormaaja . grub . laite = "/dev/sda" ; tiedostojärjestelmät . "/" . laite = "/dev/sda1" ; palvelut . sshd . käytössä = tosi ; }Konfigurointitiedoston vaihtamisen jälkeen järjestelmä voidaan päivittää nixos-rebuild switch.
Tämä komento tekee kaiken tarvittavan uuden kokoonpanon käyttöönottamiseksi, mukaan lukien pakettien lataamisen ja kääntämisen sekä asetustiedostojen luomisen.
Koska Nix-tiedostot ovat puhtaita ja deklaratiivisia , niiden suorittaminen tuottaa aina saman tuloksen riippumatta siitä, mitä paketteja tai määritystiedostoja järjestelmässä on. Näin ollen järjestelmän päivittäminen on yhtä luotettavaa kuin uudelleenasentaminen tyhjästä.
NixOS:llä on transaktiaalinen lähestymistapa konfiguraatioiden hallintaan, ja se tekee kokoonpanomuutoksia, kuten atomipäivityksiä. Tämä tarkoittaa, että jos siirtyminen uuteen kokoonpanoon keskeytyy – esimerkiksi puolivälissä olevan sähkökatkon vuoksi – järjestelmä on edelleen johdonmukaisessa tilassa: se käynnistyy joko vanhaan tai uuteen kokoonpanoon. Muissa järjestelmissä järjestelmä voi olla epäjohdonmukaisessa tilassa, eikä se välttämättä edes käynnisty [11] .
Jos uusi kokoonpano ei ole toivottava järjestelmän päivityksen jälkeen, se voidaan palauttaa erityisellä komennolla nixos-rebuild switch --rollback.
Itse asiassa jokainen järjestelmän kokoonpanoversio näkyy automaattisesti järjestelmän käynnistysvalikossa. Jos uusi kokoonpano epäonnistuu tai ei lataudu kunnolla, vanhempi versio voidaan valita. Lisäksi palautukset ovat helppo toiminto, joka ei edellytä tiedostojen palauttamista varmuuskopioista.
NixOS:n deklaratiivinen konfiguraatiomalli tekee järjestelmäkokoonpanon monistamisesta helppoa toisessa koneessa. Määritystiedoston kopioiminen kohdetietokoneelle ja järjestelmän päivityskomennon suorittaminen luo samat järjestelmäkokoonpanot (ydin, sovellukset, järjestelmäpalvelut ja niin edelleen), lukuun ottamatta niitä järjestelmän osia, joita paketinhallinta ei ohjaa, kuten esim. käyttäjätiedot.
NixOS:n käyttämä Nix-koontikieli määrittää, kuinka paketteja rakennetaan lähdekoodista. Kuitenkin, koska lähdekoodin rakennusprosessi on hidas, paketinhallinta lataa automaattisesti valmiiksi rakennetut binaarit välimuistipalvelimelta , kun ne ovat saatavilla. Tämä antaa lähdekoodipohjaisen paketinhallintamallin joustavuuden binaarimallin tehokkuudella [12] .
Nix-paketinhallinta varmistaa, että käynnissä oleva järjestelmä on "yhdenmukainen" järjestelmän loogisten määritelmien kanssa, mikä tarkoittaa, että se kääntää uudelleen kaikki paketit, jotka täytyy kääntää uudelleen. Jos esimerkiksi ydintä muutetaan, paketinhallinta varmistaa, että ulkoiset ydinmoduulit käännetään uudelleen. Samoin kun kirjastoa päivitetään, se varmistaa, että kaikki järjestelmäpaketit käyttävät uutta versiota, myös siihen staattisesti linkitetyt paketit.
Ohjelmiston asentamiseen NixOS:ään ei tarvita erityisoikeuksia. Järjestelmänlaajuisen profiilin lisäksi jokaisella käyttäjällä on erityinen profiili, johon hän voi asentaa paketteja. Nix sallii myös useiden paketin versioiden olemassaolon rinnakkain, joten eri käyttäjien profiileihinsa voidaan asentaa eri versioita samasta paketista. Jos kaksi käyttäjää asentaa saman version paketista, vain yksi kopio luodaan tai ladataan, ja Nixin suojausmalli varmistaa, että tämä on turvallista.
NixOS perustuu Nix-pakettienhallintaan, joka pitää kaikki paketit erillään toisistaan pakettivarastossa.
Asennetut paketit tunnistetaan kaikkien niiden rakentamiseen käytettyjen syötteiden kryptografisella hajautusarvolla . Paketin koontiohjeiden muuttaminen muuttaa sen tiivistettä, jolloin pakettivarastoon asennetaan toinen paketti. Tätä järjestelmää käytetään myös asetustiedostojen hallintaan, jotta uudemmat kokoonpanot eivät korvaa vanhoja.
Tämän seurauksena NixOS ei ole tiedostojärjestelmän hierarkiastandardin mukainen . Ainoat poikkeukset ovat symbolilinkki /bin/shbash-versioon Nix-pakettienhallinnassa (esim.: /nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/), ja vaikka NixOS:ssä on hakemisto /etcjärjestelmän laajuisten määritystiedostojen tallentamista varten, useimmat tämän hakemiston tiedostot ovat symlinkkejä luotuihin tiedostoihin /nix/store, kuten /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config. Yleisten luetteloiden, kuten /bin, käyttäminen sallii paketin useiden versioiden olemassaolon.
Jesy Smith arvosteli NixOS 15.09:n DistroWatch Weeklylle [13] :
Pidän siitä, että NixOS huolehtii pakettien päivittämisestä ja laittaa jokaisen muutoksen omaan "sukupolveensa", ja mielestäni NixOS toimii loppukäyttäjälle aivan kuten mikä tahansa muu Linux-jakelu. NixOS:n käyttöönotto ei ole aloittelijoille: En usko, että NixOS:ää on tarkoitettu käytettäväksi yleiskäyttöisenä työpöytäkäyttöjärjestelmänä. Mutta NixOS tarjoaa meille testikentän Nix-pakettien hallintaan, ja mielestäni se on erittäin mielenkiintoinen tekniikka, joka ansaitsee lisätutkimuksen ja omaksumisen myös muissa jakeluissa.
DistroWatch Weeklyllä on myös Evan Sandersin kirjoittama arvostelu NixOS 17.03:sta [14] .