맨위로가기

NixOS

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

NixOS는 Nix 패키지 관리자를 기반으로 하는 리눅스 배포판이다. 2003년 엘코 돌스트라의 연구 프로젝트로 시작되었으며, 2015년 Stichting NixOS 재단이 설립되어 개발을 지원하고 있다. NixOS는 매년 두 번의 안정적인 릴리스를 발표하며, 버전 목록과 위키 역사를 가지고 있다. Nix 언어를 사용하여 운영 체제를 선언적으로 구성하며, 안정적인 업그레이드와 롤백 기능을 제공한다. 또한 재현 가능한 시스템 구성, 소스 기반 모델과 바이너리 캐시, 다중 사용자 패키지 관리 등의 특징을 갖는다. NixOS는 설치된 패키지를 암호화 해시로 식별하고, 파일 시스템 계층 표준을 따르지 않는 독특한 구현 방식을 보인다. 리뷰에서는 안정성, 패키지 관리의 독특함, 설정의 어려움 등이 언급된다.

더 읽어볼만한 페이지

  • 운영 체제 보안 - NX 비트
    NX 비트는 하드웨어 기반 보안 기능으로, 메모리 페이지의 실행 권한을 제어하여 특정 영역에서 코드 실행을 막아 버퍼 오버플로 공격과 같은 보안 위협을 줄이는 데 사용되며, AMD에서 처음 도입 후 다양한 프로세서와 운영체제에서 DEP 등의 이름으로 구현되었다.
  • 운영 체제 보안 - 슈퍼유저
    슈퍼유저는 운영 체제에서 모든 권한을 가진 사용자를 지칭하며, 유닉스 계열에서는 root, 윈도우에서는 관리자 계정이 해당 역할을 수행한다.
  • X86-64 리눅스 배포판 - MX 리눅스
    MX 리눅스는 MEPIS 커뮤니티와 antiX 개발자들이 협력하여 개발한 데비안 기반의 리눅스 배포판으로, 사용자 중심의 MX 도구 모음과 시스템 백업 및 복구 기능인 MX 스냅샷을 제공하며 Xfce, KDE Plasma, Fluxbox 등 다양한 데스크톱 환경과 최신 하드웨어 지원 AHS 버전을 제공한다.
  • X86-64 리눅스 배포판 - 아치 리눅스
    아치 리눅스는 2002년에 시작된 x86-64 마이크로프로세서용 리눅스 배포판으로, 단순성을 추구하며 사용자가 직접 시스템을 설정하고 관리하도록 설계되었고, 롤링 릴리스 방식과 팩맨 패키지 관리자를 사용하며, AUR을 통해 다양한 패키지를 제공한다.
  • 리눅스 배포판 - 안드로이드 (운영체제)
    구글이 개발한 리눅스 커널 기반의 모바일 운영체제인 안드로이드는 오픈소스 플랫폼으로 다양한 기기에서 활용되며 세계적으로 널리 사용되지만, 개인정보 보호 문제와 독점적 지위 남용 논란 등의 비판도 존재한다.
  • 리눅스 배포판 - MX 리눅스
    MX 리눅스는 MEPIS 커뮤니티와 antiX 개발자들이 협력하여 개발한 데비안 기반의 리눅스 배포판으로, 사용자 중심의 MX 도구 모음과 시스템 백업 및 복구 기능인 MX 스냅샷을 제공하며 Xfce, KDE Plasma, Fluxbox 등 다양한 데스크톱 환경과 최신 하드웨어 지원 AHS 버전을 제공한다.
NixOS - [IT 관련 정보]에 관한 문서
기본 정보
NixOS 눈송이와 텍스트
NixOS 로고
개발자NixOS 기여자
소스 모델오픈 소스
커널 유형모놀리식 (리눅스 커널)
지원 플랫폼i686, X86-64, AArch64
계열리눅스 (유닉스 계열)
초기 릴리스0.1 /
최신 릴리스 버전''
최신 릴리스 날짜'}}'
최신 미리보기 버전''
최신 미리보기 날짜'}}'
작업 상태개발 중
라이선스MIT
마케팅 목표범용 목적
프로그램 언어Nix 표현 언어
패키지 관리자Nix
웹사이트NixOS 공식 웹사이트

2. 역사

2003년, Eelco Dolstra는 NixOS를 연구 프로젝트로 시작했다.[29][32] 2015년에는 순수 기능 배포 모델을 구현하는 NixOS 등의 프로젝트를 지원하기 위해 Stichting NixOS 재단이 설립되었다.[33]

NixOS는 매년 5월 말과 11월 말경에 안정적인 릴리스를 두 번 게시한다.[15][16][17]

2. 1. 프로젝트 시작

2003년, Eelco Dolstra는 NixOS를 연구 프로젝트로 시작했다.[29][32] 2015년 순수 기능 디플로이먼트 모델을 구현하는 NixOS 등의 프로젝트를 지원하기 위해 Stichting NixOS 재단이 설립되었다.[33]

2. 2. 버전

NixOS 버전 목록[34]
날짜버전코드명비고
2013-10-3113.10Aardvark첫 안정 릴리스
2014-04-3014.04BaboonLinux kernel|리눅스 커널영어 3.12
2014-12-3014.12CaterpillarLinux kernel|리눅스 커널영어 3.14
2015-09-3015.09DingoLinux kernel|리눅스 커널영어 3.18
2016-03-3116.03EmuLinux kernel|리눅스 커널영어 4.4
2016-09-3016.09FlounderLinux kernel|리눅스 커널영어 4.4
2017-03-3117.03GorillaLinux kernel|리눅스 커널영어 4.9
2017-09-2917.09HummingbirdLinux kernel|리눅스 커널영어 4.9
2018-04-0418.03ImpalaLinux kernel|리눅스 커널영어 4.14
2018-10-0518.09JellyfishLinux kernel|리눅스 커널영어 4.14
2019-04-1119.03KoiLinux kernel|리눅스 커널영어 4.19
2019-10-0919.09LorisLinux kernel|리눅스 커널영어 4.19
2020-04-2020.03MarkhorLinux kernel|리눅스 커널영어 5.4
2020-10-2720.09NightingaleLinux kernel|리눅스 커널영어 5.4
2021-05-3121.05OkapiLinux kernel|리눅스 커널영어 5.10



NixOS는 매년 5월 말과 11월 말경에 안정적인 릴리스를 두 번 게시한다.[15][16][17]

2. 3. 위키 역사

최초의 NixOS 커뮤니티 위키는 문서화의 중앙 집중화 및 협업 지식 공유를 지원하기 위해 2010년에서 2011년 사이에 시작되었다. 그러나 위키 유지에 대한 커뮤니티의 관심이 줄어들면서, 오래되고 잘못된 정보가 축적되어 유용성이 감소했다.[10]

2015년 11월, 로크 가르바스(Rok Garbas)는 그의 강연 "Nix를 초보자에게 더 친숙하게 만들기"에서 위키의 쇠퇴 상태를 강조하며 커뮤니티에서 광범위한 논의를 촉발시켰다. 많은 개발자들이 Nix* 매뉴얼이 공식 문서를 위한 더 나은 저장소라고 주장했지만, 즉각적인 해결책은 구현되지 않았다.[11]

2016년 중반까지, 스팸 봇이 충분하지 않은 보호로 인해 위키를 압도하여 그해 8월에 공식적으로 폐쇄되었다. 2017년 2월에는 위키 잠금 해제를 논의하기 위해 GitHub 이슈가 열렸지만, 논쟁은 해결되지 않았다. 마침내 2017년 5월에 위키는 영구적으로 비활성화되었으며, 해당 콘텐츠의 아카이브는 Archive.org에서 사용할 수 있게 되었다.[12]

이 공백을 메우기 위해 2017년 4월, 요르그 탈하임(Jörg Thalheim, Mic92)이 nixos-users GitHub 위키를 시작했다. 이 플랫폼은 빠른 편집과 커뮤니티 기여를 허용했지만, 검색 기능 및 목차와 같은 기능이 부족했다. 얼마 지나지 않아, 트리스탄 헬미히(Tristan Helmich, fadenb)는 GitHub 위키의 열악한 사용자 경험을 언급하며, 자신의 주도로 새로운 MediaWiki 기반 위키를 만들었다. 펠릭스 리히터(Felix Richter, makefu)는 나중에 GitHub 위키에서 헬미히의 플랫폼으로 콘텐츠를 마이그레이션하여 지속 가능성을 확보했다.[13]

2024년 1월, 공식 위키를 구축하기 위한 새로운 이니셔티브가 시작되어 현재 사용 중인 위키 인스턴스가 만들어졌다. 이러한 부활은 NixOS 사용자를 위한 정확하고 중앙 집중화된 문서를 유지하려는 커뮤니티의 새로운 약속을 반영한다.[14]

3. 특징

NixOS는 다음과 같은 주요 특징을 가진다.


  • 선언적 구성 모델: NixOS는 Nix 언어로 작성된 설정 파일에서 전체 운영 체제를 구축한다. 사용자는 전역 설정 파일에 원하는 기능을 명시하여 시스템을 구성하며, `nixos-rebuild` 명령으로 새 시스템 버전을 생성한다. 예를 들어, SSH 데몬을 실행하는 시스템은 다음과 같이 간단하게 구성할 수 있다.[19]


```text

{

boot.loader.grub.device = "/dev/sda";

fileSystems."/".device = "/dev/sda1";

services.sshd.enable = true;

}

```

  • 안정적인 업그레이드 및 롤백: NixOS는 구성 변경을 원자적으로 만들어 안정적인 업그레이드와 롤백을 지원한다. `nixos-rebuild switch --rollback` 명령으로 이전 시스템 구성으로 롤백할 수 있다.[21]
  • 재현 가능한 시스템 구성: 선언적 구성 모델 덕분에 다른 머신에서도 동일한 시스템 구성을 쉽게 재현할 수 있다.
  • 소스 기반 모델과 바이너리 캐시: Nix 빌드 언어는 소스 코드로부터 패키지를 빌드하는 방법을 지정하여 시스템을 쉽게 조정할 수 있게 한다.[22] 빌드 시간을 단축하기 위해 미리 빌드된 바이너리를 캐시 서버에서 다운로드할 수도 있다.[22]
  • 일관성: Nix 패키지 관리자는 실행 중인 시스템이 설정 파일과 일치하도록 보장하며, 필요한 모든 패키지를 다시 빌드한다.
  • 다중 사용자 패키지 관리: 특별한 권한 없이도 소프트웨어를 설치할 수 있다. 모든 사용자는 자신만의 프로필을 가지며, 여러 버전의 패키지가 공존할 수 있어 서로 다른 버전의 동일한 패키지를 설치할 수 있다.

3. 1. 선언적 구성 모델

NixOS에서, 커널, 애플리케이션, 시스템 패키지, 설정 파일을 포함한 전체 운영 체제는 [https://nixos.org/manual/nix/stable/language/index.html Nix 언어]로 작성된 설명으로부터 Nix 패키지 관리자에 의해 구축된다. 새 버전을 빌드해도 이전 버전이 덮어쓰이지 않는다.[18]

NixOS 시스템은 사용자가 자신의 컴퓨터에서 원하는 기능을 전역 설정 파일(일반적으로 `/etc/nixos`에 위치)에 명시하여 구성된다. 다음은 SSH 데몬을 실행하는 시스템의 최소 사양이다.[19]

```text

{

boot.loader.grub.device = "/dev/sda";

fileSystems."/".device = "/dev/sda1";

services.sshd.enable = true;

}

```

사양 파일을 변경한 후, `nixos-rebuild` 명령을 사용하여 시스템을 업데이트할 수 있다. 이 명령은 패키지 다운로드 및 설치, 설정 파일 생성 등 새로운 시스템 버전을 생성하는 데 필요한 모든 작업을 수행한다.

3. 2. 안정적인 업그레이드 및 롤백

NixOS는 구성 관리에 트랜잭션 방식을 적용하여 업그레이드와 같은 구성 변경을 원자적으로 만든다. 예를 들어, 새로운 구성으로 업그레이드하는 도중 정전으로 인해 중단되더라도 시스템은 여전히 일관된 상태를 유지한다. 즉, 이전 구성 또는 새 구성으로 부팅된다.[20]

시스템 업데이트 후 새 설정이 바람직하지 않은 경우, `nixos-rebuild switch --rollback` 명령을 사용하여 롤백할 수 있다. 모든 시스템 구성 버전은 자동으로 시스템 부팅 메뉴에 나타난다. 새 구성이 충돌하거나 제대로 부팅되지 않으면 이전 버전을 선택할 수 있다. 롤백은 복사본에서 파일을 복원하는 것을 포함하지 않는 가벼운 작업이다.[21]

3. 3. 재현 가능한 시스템 구성

NixOS의 선언적 구성 모델은 다른 머신에서 시스템 구성을 쉽게 재현할 수 있게 해준다. 구성 파일을 대상 머신에 복사하고 시스템 업데이트 명령을 실행하면 사용자 데이터를 제외하고 패키지 관리자가 관리하지 않는 시스템 부분을 제외한 동일한 시스템 구성(커널, 애플리케이션, 시스템 서비스 등)이 생성된다.

3. 4. 소스 기반 모델과 바이너리 캐시

NixOS에서 사용되는 Nix 빌드 언어는 소스 코드로부터 패키지를 빌드하는 방법을 지정한다. 이는 사용자의 요구에 맞게 시스템을 쉽게 조정할 수 있도록 해준다.[22] 그러나 소스 코드로부터 빌드하는 과정은 느리기 때문에, 패키지 관리자는 사용 가능한 경우 미리 빌드된 바이너리를 캐시 서버에서 자동으로 다운로드한다.[22] `--option substitute false`를 인수로 사용하여 바이너리 캐시를 비활성화하고 소스 코드로부터 빌드를 강제할 수 있다.[22] 기본값에서 빌드 옵션을 변경하면 패키지가 소스 코드로부터 빌드되도록 한다.[22] 이는 소스 기반 패키지 관리 모델의 유연성과 바이너리 모델의 효율성을 제공한다.[22]

3. 5. 일관성

Nix 패키지 관리자는 실행 중인 시스템이 시스템의 논리적 명세와 일치하도록 보장한다. 즉, 다시 빌드해야 하는 모든 패키지를 다시 빌드한다. 예를 들어, 커널이 변경되면 Nix 패키지 관리자는 외부 커널 모듈이 다시 빌드되도록 보장한다. 마찬가지로 라이브러리가 업데이트되면, 정적으로 연결된 패키지까지 포함하여 모든 시스템 패키지가 새 버전을 사용하도록 보장한다.

3. 6. 다중 사용자 패키지 관리

NixOS에서는 소프트웨어를 설치하기 위해 특별한 권한이 필요하지 않다. 시스템 전체 프로필 외에도 모든 사용자는 패키지를 설치할 수 있는 전용 프로필을 가지고 있다. 또한 Nix는 여러 버전의 패키지가 공존할 수 있도록 하므로, 서로 다른 사용자는 각자 다른 버전의 동일한 패키지를 프로필에 설치할 수 있다. 두 사용자가 동일한 버전의 패키지를 설치하는 경우 하나의 사본만 빌드되거나 다운로드된다. Nix의 보안 모델은 시스템 구성에 의해 명시적으로 신뢰받는 사용자만이 파생 결과물의 내용을 제어할 수 있는 빌드 매개변수(예: 샌드박스에 불순물을 추가하거나 신뢰할 수 없는 대체자를 사용하는 경우)를 사용할 수 있도록 보장하여 이를 안전하게 만든다. 이러한 매개변수가 없으면 경로는 시스템에서 신뢰하는 대체자 또는 암묵적으로 신뢰되는 로컬 샌드박스 빌드에서만 대체될 수 있다.[1]

4. 구현

Nix 패키지 관리자를 기반으로 하며, 모든 패키지를 패키지 저장소에서 서로 격리된 상태로 저장한다.

설치된 패키지는 빌드에 사용된 모든 입력의 암호화 해시로 식별된다. 패키지의 빌드 지침을 변경하면 해시가 수정되고, 이는 패키지 저장소에 다른 패키지가 설치되는 결과를 초래한다. 이 시스템은 구성 파일을 관리하는 데도 사용되어 최신 구성이 이전 구성을 덮어쓰지 않도록 한다.

NixOS는 파일 시스템 계층 표준을 따르지 않는다. 유일한 예외는 다음과 같다.


  • /bin/sh 심볼릭 링크가 Nix 저장소에 있는 bash 버전(예: /nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/)으로 생성된다.
  • NixOS는 시스템 전체 구성 파일을 유지하기 위해 /etc 디렉토리를 가지고 있지만, 해당 디렉토리의 대부분의 파일은 /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config와 같은 /nix/store의 생성된 파일에 대한 심볼릭 링크이다.


/bin과 같은 전역 디렉토리를 사용하지 않는 것은 여러 버전의 패키지가 공존할 수 있게 하는 요소 중 하나이다.

5. 평가

DistroWatch Weekly의 제시 스미스(Jesse Smith)는 2015년 NixOS 15.09를 리뷰하면서 NixOS가 각 변경 사항을 고유한 "세대"에 배치하여 패키지 업그레이드에 대한 걱정을 덜어주는 방식이 매우 마음에 들었다고 평가했다.[23] 최종 사용자 관점에서 NixOS는 다른 모든 리눅스 배포판과 동일하게 작동하지만, NixOS 설정은 초보자를 위한 것이 아니며 범용 데스크톱 운영 체제로 사용될 의도는 아니라고 보았다. 그러나 Nix 패키지 관리자를 검토할 수 있는 유용한 놀이터를 제공하며, 이는 다른 배포판에서 더 탐구하고 채택할 가치가 있는 흥미로운 기술이라고 덧붙였다.

Full Circle magazine은 2022년 NixOS 21.11 "Porcupine" 리뷰에서 NixOS Gnome 21.11이 진지하고 깔끔하며 우아한 인상을 준다고 평가했다.[24] 수정되지 않은 Gnome 데스크톱 팬이라면 마음에 들 것이지만, 패키지 관리에 대한 가파른 학습 곡선이 단점이라고 지적했다. 어떤 배포판에서 왔든, 명령줄에서 Nix를 효과적으로 사용하려면 많은 것을 배워야 한다고 덧붙였다.

The Register의 리암 프로벤(Liam Proven)은 NixOS 22.11 "Raccoon" 리뷰에서 2~3년 전과 비교해 설치 및 작동이 매우 간단해졌다고 평가했다.[25] 이는 도구가 잘 성숙되고 있음을 시사하지만, 처음 사용하는 관점에서는 비교할 기준이 없다고 밝혔다. 전통적인 배포판이나 유닉스는 아니지만 작동하며 그 매력을 알 수 있다고 덧붙였다.

DistroWatch의 제시 스미스(Jesse Smith)는 NixOS 23.11 "Tapir" 리뷰에서 NixOS를 사용하는 동안 오류를 한 번도 겪지 않았다는 점에서 드문 보석이라고 평가했다.[26] 배포판은 안정적이고 하드웨어와 잘 작동했으며, 실행 중 단 한 번의 문제도 없었다고 한다. 특히 시스템 관리자가 여러 머신에 동일한 배포판을 배포하거나 유지 관리하려는 경우 시도해 볼 가치가 있다고 덧붙였다.

참조

[1] 웹사이트 Community - nixos.org https://nixos.org/co[...] 2022-09-23
[2] 웹사이트 NixOS/nixos-foundation - Github https://github.com/N[...] 2022-09-23
[3] 웹사이트 nixpkgs/COPYING at master · NixOS/nixpkgs · GitHub https://github.com/N[...] Github.com 2015-09-19
[4] 웹사이트 What Is an Immutable Linux Distro, and Should You Use One? https://www.howtogee[...] HowToGeek.com 2023-12-06
[5] 웹사이트 DistroWatch.com: NixOS http://distrowatch.c[...] Distrowatch.com 2015-09-19
[6] 서적 Software Configuration Management https://web.archive.[...]
[7] 학위논문 The Purely Functional Software Deployment Model https://web.archive.[...] 2006
[8] 웹사이트 Purely Functional System Configuration Management https://www.usenix.o[...] 2024-03-04
[9] 웹사이트 Stichting NixOS Foundation http://nixos.org/nix[...] Nixos.org 2015-09-19
[10] 웹사이트 NixOS Wiki: History https://wiki.nixos.o[...] 2024-11-28
[11] 웹사이트 Make Nix Friendlier for Beginners https://media.ccc.de[...] media.ccc.de 2015
[12] 웹사이트 NixOS Wiki Archive https://archive.org/[...] 2024-01-01
[13] 웹사이트 MediaWiki for NixOS https://nixos.wiki 2024-01-01
[14] 웹사이트 NixOS Wiki: History https://wiki.nixos.o[...] 2024-11-28
[15] 웹사이트 Governance https://nixos.org/go[...] Nixos.org 2020-08-28
[16] 웹사이트 Nix RFCS (Request for Comments) https://github.com/N[...] 2021-12-17
[17] 웹사이트 Release Announcements https://nixos.org/bl[...] Nixos.org 2023-12-09
[18] 간행물 Purely Functional System Configuration Management https://edolstra.git[...] USENIX Association 2023-07-19
[19] 웹사이트 About NixOS http://nixos.org/nix[...] Nixos.org 2015-09-19
[20] 간행물 Atomic Upgrading of Distributed Systems https://edolstra.git[...] Association for Computing Machinery 2023-07-19
[21] 문서 NixOS Manual - Rolling Back Configuration Changes https://nixos.org/ma[...] Nixos.org
[22] 간행물 Secure Sharing Between Untrusted Users in a Transparent Source/Binary Deployment Model https://edolstra.git[...] Association for Computing Machinery 2023-07-19
[23] 뉴스 DistroWatch Weekly, Issue 637, 23 November 2015 https://distrowatch.[...] 2015-11-23
[24] 웹사이트 Review - NixOS https://dl.fullcircl[...] Full Circle magazine 2022-10-28
[25] 웹사이트 NixOS 22.11 'Raccoon': Like a proof of concept you can do things with OSes https://www.theregis[...]
[26] 웹사이트 NixOS 23.11 https://distrowatch.[...]
[27] 웹인용 nixpkgs/COPYING at master · NixOS/nixpkgs · GitHub https://github.com/N[...] Github.com 2015-09-19
[28] 웹인용 DistroWatch.com: NixOS http://distrowatch.c[...] Distrowatch.com 2015-09-19
[29] 저널 Integrating Software Construction and Software Deployment https://web.archive.[...]
[30] 웹인용 NixOps - The NixOS Cloud Deployment Tool https://nixos.org/ni[...] Nixos.org 2015-09-19
[31] 웹인용 Disnix https://nixos.org/di[...] Nixos.org 2015-09-19
[32] 학위논문 The Purely Functional Software Deployment Model https://web.archive.[...] 2006
[33] 웹인용 Stichting NixOS Foundation http://nixos.org/nix[...] Nixos.org 2015-09-19
[34] 웹인용 Appendix B. Release Notes https://nixos.org/ni[...] Nixos.org 2020-08-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com