닉스OS
NixOS![]() |
![]() | |
개발자 | NixOS 기여자 닉스OS 재단[1][2] |
---|---|
작성자 | 닉스 표현 언어[note 1] |
OS 계열 | 리눅스(유닉스 계열) |
작업상태 | 현재의 |
출처모형 | 오픈소스 |
최초출시 | 0.1 / 2003년 6월 3일; | 전 (
최신출시 | 23.11[3] / 2023년 11월 29일, 전 |
저장소 | |
마케팅대상 | 범용 |
패키지관리자 | 닉스 |
플랫폼 | i686, x86-64, AArch64 |
커널형 | 모놀리식(리눅스 커널) |
면허증. | MIT[4][주 2] |
공식 홈페이지 | nixos |
NixOS는 순수하게 기능하는 Nix(패키지 매니저)를 기반으로 한 자유 오픈 소스 리눅스 배포판입니다. NixOS는 nixpkgs 프로젝트에 정의된 모듈과 패키지를 사용하여 구성됩니다.
NixOS는 불변 설계와 원자 업데이트 모델을 사용합니다.[5] 선언적 구성을 사용하여 재현성과 휴대성을 허용합니다.[6]
역사
![]() | 이 구간은 확장이 필요합니다. 추가하여 도움을 드릴 수 있습니다. (2023년 12월) |
2003년, Eelco Dolstra는 연구 프로젝트로 NixOS를 시작했습니다.[7][8] Dolstra는 프로젝트의 목적이 올바른 소프트웨어 배포를 위한 시스템을 달성하는 것이었다고 말합니다.[9] 2015년에 네덜란드에서 NixOS 재단이 설립되었는데, 이는 순수하게 기능적인 배포 모델을 구현하는 NixOS와 같은 프로젝트를 지원하는 것을 목표로 하고 있습니다.[10]
버전
출시버전이력
이름. | 날짜. |
---|---|
NixOS 13.10 first stable branch of NixOS | 2013년10월 |
NixOS 14.04 "Baboon" | 2014년4월 |
NixOS 14.12 "캐터필러" | 2014년12월 |
NixOS 15.09 "Dingo" | 2015년9월 |
NixOS 16.03 "Emu" | 2016년3월 |
NixOS 16.09 "가자미" | 2016년9월 |
NixOS 17.03 "고릴라" | 2017년3월 |
NixOS 17.09 "벌새" | 2017년9월 |
NixOS 18.03 "Impala" | 2018년3월 |
닉스OS 18.09 "젤리피쉬" | 2018년9월 |
NixOS 19.03 "Koi" | 2019년3월 |
NixOS 19.09 "Loris" | 2019년9월 |
닉스OS 20.03 "마크호어" | 2020년3월 |
NixOS 20.09 "나이팅게일" | 2020년9월 |
NixOS 21.05 "Okapi" | 2021년 5월 |
NixOS 21.11 "Porcupine" | 2021년11월 |
NixOS 22.05 "Quokka" | 2022년 5월 |
NixOS 22.11 "Raccoon" | 2022년11월 |
NixOS 23.05 "Stoat" | 2023년 5월 |
NixOS 23.11 "Tapir" | 2023년11월 |
NixOS는 2년에 한 번씩 5월과 11월쯤에 릴리스를 발표합니다.[11][12][13]
특징들

선언적 구성모델
닉스 OS에서는 커널, 애플리케이션, 시스템 패키지, 구성 파일 등을 포함한 전체 운영 체제가 닉스 패키지 관리자에 의해 닉스 언어로 된 설명으로부터 구축됩니다. 새 구성을 작성해도 이전 구성을 덮어쓰지 않습니다.[14]
NixOS 시스템은 사용자가 시스템에서 원하는 기능의 사양을 글로벌 구성 파일(일반적으로 에 위치함)에 기록하여 구성됩니다. /etc/nixos
). 다음은 SSH 데몬을 실행하는 시스템의 최소 구성입니다.[15]
{ boot.loader.grub.device = "/dev/sda"; fileSystems./.device = "/dev/sda1"; services. sshd.enable = true; }
https://search.nixos.org/options 에서 다양한 서비스와 옵션을 검색할 수 있습니다.
구성 파일을 변경한 후 다음을 사용하여 시스템을 업데이트할 수 있습니다. nixos-rebuild switch
지휘권을 쥔 패키지 다운로드 및 컴파일, 구성 파일 생성 등 새 구성을 적용하는 데 필요한 모든 작업을 수행합니다.
안정적이고 원자적인 업그레이드
Nix 파일은 순수하고 선언적이기 때문에 평가하면 시스템에 있는 패키지나 구성 파일에 관계없이 항상 동일한 결과를 얻을 수 있습니다.
NixOS는 구성 관리에 대한 트랜잭션 접근 방식을 가지고 있어 업그레이드와 같은 구성 변경을 원자적으로 만듭니다. 예를 들어, 전원 장애로 인해 새 구성으로의 업그레이드가 중단된 경우 시스템은 이전 구성 또는 새 구성에서 부팅되는 등 일관된 상태를 유지합니다.[16]
롤백
시스템 업데이트 후 새 구성이 바람직하지 않은 경우 특수 명령을 사용하여 롤백할 수 있습니다(nixos-rebuild switch --rollback
). 모든 시스템 구성 버전이 시스템 부팅 메뉴에 자동으로 나타납니다. 새 구성이 충돌하거나 제대로 부팅되지 않으면 이전 버전을 선택할 수 있습니다. 롤백은 복사본에서 복원되는 파일을 포함하지 않는 경량 작업입니다.[17]
재현 가능한 시스템 구성
NixOS의 선언적 구성 모델은 시스템 구성을 다른 기계에서 쉽게 재현할 수 있게 해줍니다. 구성 파일을 대상 시스템에 복사하고 시스템 업데이트 명령을 실행하면 사용자 데이터와 같이 패키지 관리자가 관리하지 않는 시스템의 일부를 제외하고 동일한 시스템 구성(커널, 애플리케이션, 시스템 서비스 등)이 생성됩니다.
이진 캐시가 있는 소스 기반 모델
NixOS에서 사용하는 Nix 빌드 언어는 소스에서 패키지를 빌드하는 방법을 지정합니다. 이를 통해 사용자 요구에 쉽게 시스템을 조정할 수 있습니다. 그러나 소스에서 빌드하는 프로세스가 느리기 때문에 패키지 관리자는 미리 빌드된 바이너리가 사용 가능할 때 캐시 서버에서 자동으로 다운로드합니다. 바이너리 캐시를 비활성화하고 소스에서 강제로 빌드하는 것이 가능합니다. --option substitute false
논박으로 이는 이진 모델의 효율성과 함께 소스 기반 패키지 관리 모델의 유연성을 제공합니다.[18]
일관성.
Nix 패키지 관리자는 실행 중인 시스템이 시스템의 논리적 사양과 일치하는지 확인합니다. 즉, 재구축해야 하는 모든 패키지를 재구축합니다. 예를 들어, 커널이 변경되면 패키지 관리자는 외부 커널 모듈이 재구성되도록 보장합니다. 마찬가지로 라이브러리가 업데이트되면 모든 시스템 패키지가 새 버전을 사용하도록 보장하며, 심지어 정적으로 연결된 패키지도 사용합니다.
다중 사용자 패키지 관리
NixOS에 소프트웨어를 설치하는 데 특별한 권한이 필요하지 않습니다. 시스템 전체 프로파일 외에도 모든 사용자는 패키지를 설치할 수 있는 전용 프로파일을 가지고 있습니다. Nix는 또한 여러 버전의 패키지를 공존시킬 수 있으므로 사용자마다 동일한 패키지의 다른 버전을 각각의 프로파일에 설치할 수 있습니다. 두 명의 사용자가 동일한 버전의 패키지를 설치하는 경우 하나의 복사본만 빌드되거나 다운로드됩니다. Nix의 보안 모델은 시스템 구성에 의해 명시적으로 신뢰되는 사용자만이 파생물의 내용(예: 샌드박스에 불순물을 추가하거나 신뢰할 수 없는 대체기 사용)을 제어할 수 있는 빌드 매개 변수를 사용할 수 있기 때문에 이것이 안전하다는 것을 보장합니다.[clarification needed] 이러한 매개 변수가 없으면 경로는 시스템에서 신뢰하는 대체 장치 또는 암묵적으로 신뢰하는 로컬 샌드박스 빌드에서만 대체할 수 있습니다.
실행
NixOS는 Nix 패키지 매니저를 기반으로 하며, 패키지 스토어에 모든 패키지를 서로 격리하여 저장합니다.
설치된 패키지는 빌드에 사용되는 모든 입력의 암호화 해시로 식별됩니다. 패키지의 빌드 명령을 변경하면 해시가 수정되고 패키지 저장소에 다른 패키지가 설치됩니다. 이 시스템은 구성 파일을 관리하는 데도 사용되며, 새로운 구성이 이전 구성을 덮어쓰지 않도록 합니다.
이것은 NixOS가 파일 시스템 계층 표준을 따르지 않는다는 것을 의미합니다. 유일한 예외는 Nix 스토어에서 bash 버전에 대한 symplink가 생성된다는 것입니다(예: /nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/
), 그리고 닉스OS에는 시스템 전체의 구성 파일을 보관할 수 있는 디렉토리가 있지만, 해당 디렉토리의 대부분의 파일은 다음과 같이 에서 생성된 파일에 대한 심볼릭 링크입니다. /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config
. 와 같은 글로벌 디렉토리를 사용하지 않는 것은 여러 버전의 패키지를 공존시킬 수 있는 일부입니다.
접수처
2015년 DistroWatch Weekly에서 NixOS 15.09를 리뷰한 Jesse Smith는 다음과 같이 썼습니다.[19]
저는 NixOS가 각 변경 사항을 고유의 "세대"에 배치하여 패키지를 업그레이드하는 것에 대한 걱정을 덜어주는 방식이 매우 마음에 듭니다. 그리고 최종 사용자의 관점에서 NixOS는 다른 리눅스 배포판과 똑같이 작동한다는 것을 알게 되었습니다. NixOS를 설정하는 것은 초보자를 위한 것이 아니며, NixOS를 일반적인 데스크톱 운영체제로 사용하기 위한 것은 아니라고 생각합니다. 하지만 닉스 OS가 하는 일은 우리에게 닉스 패키지 관리자를 검사할 수 있는 유용한 놀이터를 제공하는 것이며, 저는 이것이 추가 배포를 통해 더 많은 탐색과 채택을 할 가치가 있는 매우 흥미로운 기술이라고 생각합니다.
2022년 풀 서클 잡지의 NixOS 21.11 "Porcupine"에 대한 리뷰는 다음과 같이 결론지었습니다.
전체적인 NixOS Gnome 21.11은 진지하고 깔끔하며 우아한 인상을 줍니다. 수정되지 않은 Gnome 데스크톱의 팬이라면 여기에서 좋아할 것이 많습니다. 이 배포의 단점은 업데이트 등을 포함한 패키지 관리를 위한 가파른 학습 곡선입니다. 어느 배포판에서 오든 닉스를 지휘선에서 잘 작동시킬 수 있으려면 배워야 할 것이 많을 것입니다.[20]
리암 프로벤이 레지스터에서 검토한 NixOS 22.11 "너구리":
불과 2~3년 전의 NixOS에 대한 보고와 비교하면 설치 및 작동이 매우 간단하다는 것을 알 수 있었습니다. 이는 도구가 잘 성숙하여 일정 수준의 광택에 도달하고 있음을 시사하지만, 처음 보는 관점에서는 비교할 사전 기준이 없습니다. 이것은 전통적인 디스트리뷰트나 심지어 전통적인 유닉스는 아니지만, 효과가 있고 우리는 매력을 볼 수 있습니다.[21]
메모들
참고 항목
- GNU Guix System – GNU Guix를 기반으로 구축된 운영 체제로 닉스에서 영감을 받았습니다.
- Eelco Visser —
그가 없었다면, 엘코 돌스트라는 아마 닉스 패키지 매니저가 된 일을 시작하지 못했을 것입니다.
참고문헌
- ^ "Community - nixos.org". Archived from the original on 2022-09-23. Retrieved 2022-09-23.
- ^ "NixOS/nixos-foundation - Github". GitHub. Archived from the original on 2022-09-23. Retrieved 2022-09-23.
- ^ ""NixOS 23.11 released"". 29 Nov 2023.
- ^ "nixpkgs/COPYING at master · NixOS/nixpkgs · GitHub". Github.com. Retrieved 2015-09-19.
- ^ "What Is an Immutable Linux Distro, and Should You Use One?". HowToGeek.com. Archived from the original on 2023-12-07. Retrieved 2023-12-07.
- ^ "DistroWatch.com: NixOS". Distrowatch.com. Retrieved 2015-09-19.
- ^ Dolstra, Eelco (2003). "Integrating Software Construction and Software Deployment" (PDF). Software Configuration Management. Lecture Notes in Computer Science. Vol. 2649. pp. 102–117. doi:10.1007/3-540-39195-9_8. ISBN 978-3-540-14036-8. Archived from the original (PDF) on 2019-04-21.
- ^ Dolstra, Eelco (2006). The Purely Functional Software Deployment Model (PDF) (Ph.D.). Archived from the original (PDF) on 2019-06-09.
- ^ Jonatha Lorimer. "The Nix Thesis".
- ^ "Stichting NixOS Foundation". Nixos.org. Retrieved 2015-09-19.
- ^ "Governance". Nixos.org. Archived from the original on 2020-08-16. Retrieved 2020-08-28.
- ^ "Nix RFCS (Request for Comments)". GitHub. 17 December 2021.
- ^ "Release Announcements". Nixos.org. Retrieved 2023-12-09.
- ^ Dolstra, Eelco; Hemel, Armijn (2007-05-07). Purely Functional System Configuration Management (PDF). 11th USENIX workshop on Hot topics in operating systems. San Diego, California, USA: USENIX Association. Archived (PDF) from the original on 2020-07-10. Retrieved 2023-07-19.
- ^ "About NixOS". Nixos.org. Retrieved 2015-09-19.
- ^ van der Burg, Sander; Dolstra, Eelco; de Jonge, Merijn (2008-10-20). Atomic Upgrading of Distributed Systems (PDF). 1st International Workshop on Hot Topics in Software Upgrades. Nashville, Tennessee, USA: Association for Computing Machinery. doi:10.1145/1490283.1490294. ISBN 978-1-60558-304-4. Archived (PDF) from the original on 2021-11-13. Retrieved 2023-07-19.
- ^ NixOS Manual - Rolling Back Configuration Changes, Nixos.org
{{citation}}
: CS1 maint: url-status (링크) - ^ Dolstra, Eelco (2005-11-07). Secure Sharing Between Untrusted Users in a Transparent Source/Binary Deployment Model (PDF). 20th IEEE/ACM International Conference on Automated Software Engineering. Long Beach, California, USA: Association for Computing Machinery. doi:10.1145/1101908.1101933. ISBN 978-1-58113-993-8. Archived (PDF) from the original on 2021-11-13. Retrieved 2023-07-19.
- ^ DistroWatch Weekly, 2015년 11월 23일 637호
- ^ Hunt, Adam (28 October 2022). "Review - NixOS" (PDF). Full Circle magazine. Archived (PDF) from the original on 28 October 2022. Retrieved 28 October 2022.
- ^ Proven, Liam. "NixOS 22.11 'Raccoon': Like a proof of concept you can do things with OSes".
{{cite web}}
: CS1 maint: url-status (링크) - ^ "In memoriam: Eelco Visser (1966-2022)".
{{cite web}}
: CS1 maint: url-status (링크)
외부 링크