NixOS

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 10. tammikuuta 2020 tarkistetusta versiosta . tarkastukset vaativat 8 muokkausta .
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 ) ( 30.5.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] .

Historia

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] .

Ominaisuudet

Ilmoittava järjestelmäkokoonpanomalli

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.

Luotettavat päivitykset

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ä.

Atomic-päivitykset

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] .

Palautus

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.

Toistettavat järjestelmäkokoonpanot

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.

Alkuperäinen binäärimalli

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] .

Johdonmukaisuus

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.

Usean käyttäjän paketin hallinta

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.

Toteutus

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.

Mielipiteet

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] .

Muistiinpanot

  1. NixOS 22.05 julkaistu  .
  2. 1 2 https://github.com/NixOS/nixpkgs/blob/master/nixos/COPYING
  3. 1 2 DistroWatch.com: NixOS . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 25. helmikuuta 2018.
  4. iscsd-scm11-final.pdf . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 21. huhtikuuta 2019.
  5. Nix Ops . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 14. maaliskuuta 2018.
  6. Tietoja Disnixistä . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 24. heinäkuuta 2018.
  7. phd-thesis.pdf . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 9. kesäkuuta 2019.
  8. NixOS Foundationin liittäminen . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 4. kesäkuuta 2018.
  9. hotos-final.pdf . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 23. maaliskuuta 2016.
  10. Tietoja NixOS:stä . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 22. huhtikuuta 2018.
  11. atomic-hotswup2008-final.pdf . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 15. tammikuuta 2019.
  12. secsharing-ase2005-final.pdf . Haettu 22. huhtikuuta 2018. Arkistoitu alkuperäisestä 26. syyskuuta 2019.
  13. DistroWatch Weekly, numero 637, 23. marraskuuta 2015 . Haettu 21. kesäkuuta 2018. Arkistoitu alkuperäisestä 21. kesäkuuta 2018.
  14. DistroWatch Weekly, numero 712, 15. toukokuuta 2017 . Haettu 21. kesäkuuta 2018. Arkistoitu alkuperäisestä 21. kesäkuuta 2018.

Kirjallisuus

Linkit

  • nixos.org - NixOS:n virallinen verkkosivusto
  • Domen Kožar, käännös: Denis Shevchenko. Nix: idea . ruhaskell.org. Haettu 9. tammikuuta 2016 __