# Oasis Linux

> Clean Markdown view of GeekNews topic #29190. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=29190](https://news.hada.io/topic?id=29190)
- GeekNews Markdown: [https://news.hada.io/topic/29190.md](https://news.hada.io/topic/29190.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-05-05T18:01:32+09:00
- Updated: 2026-05-05T18:01:32+09:00
- Original source: [git.sr.ht](https://git.sr.ht/~mcf/oasis)
- Points: 1
- Comments: 1

## Topic Body

- [oasis](https://git.sr.ht/~mcf/oasis)는 기반 시스템의 모든 소프트웨어를 **정적 링크**하는 작은 Linux 시스템으로, 익숙한 Linux 배포판보다 BSD에 가까운 방향을 가짐
- 모든 패키지는 [samurai](https://github.com/michaelforney/samurai)로 빌드하고 **Lua 스크립트**로 매니페스트를 생성해, 초기 패키징 비용은 크지만 예측 가능하고 재현 가능한 빌드와 패키지 경계를 넘는 증분 빌드를 제공함
- 시스템 TLS와 암호화 라이브러리로 **BearSSL**을 쓰며, libcurl의 네이티브 BearSSL 지원과 [libtls-bearssl](https://sr.ht/~mcf/libtls-bearssl)을 통해 시스템 전반에서 BearSSL을 사용함
- oasis에는 **패키지 관리자**가 없고, 어떤 패키지의 어떤 파일을 포함할지 명세로 구성한 뒤 빌드 시스템이 결과 파일시스템 트리를 git 저장소에 기록해 `/`에 병합하거나 다른 머신에서 가져올 수 있음
- `/etc`를 전체적으로 이해할 수 있을 만큼 단순하게 유지하고, gcc나 clang보다 ISO C 표준에 엄격하며 훨씬 작은 **[cproc](https://sr.ht/~mcf/cproc)** 컴파일러로 빌드하는 것을 주요 목표로 삼음

---

### oasis 개요
- [oasis](https://git.sr.ht/~mcf/oasis)는 작은 Linux 시스템이며, 익숙한 다른 Linux 기반 운영체제와는 꽤 다르고 BSD에 더 가까운 방향을 가짐
- 기반 시스템의 모든 소프트웨어가 **정적 링크**되며, 디스플레이 서버 [velox](https://github.com/michaelforney/velox)와 웹 브라우저 [netsurf](https://www.netsurf-browser.org/)도 포함됨
- 동적 링크보다 단순한 메커니즘을 사용하고, 라이브러리 업그레이드 문제를 없애며, 다른 시스템으로 쉽게 복사할 수 있는 완전한 자체 포함 바이너리를 만듦

### 빌드와 부트스트랩
- 모든 패키지는 [samurai](https://github.com/michaelforney/samurai)로 빌드되며, 빌드 매니페스트는 [Lua 스크립트](https://github.com/oasislinux/oasis/blob/master/pkg/nasm/gen.lua)로 생성됨
- 이 방식은 초기 패키징 비용이 상당하지만 유지보수 비용은 작고, 거의 최적에 가까운 빌드 시간, 예측 가능하고 재현 가능한 빌드, 줄어든 빌드 시점 의존성, 패키지 경계를 넘는 증분 빌드를 제공함
- 부트스트랩에는 git, lua, curl, sha256 유틸리티, 표준 압축 유틸리티, `x86_64-linux-musl` 크로스 컴파일러가 있는 임의의 POSIX 시스템이면 충분함
- macOS나 OpenBSD 같은 비-Linux 시스템에서도 크로스 컴파일이 간단해짐

### TLS, 패키지 구성, 시스템 확장
- **BearSSL**이 시스템 TLS 및 암호화 라이브러리로 쓰임
- BearSSL은 매우 작고 잘 작성되어 있지만 널리 채택되지는 않았음
- libcurl의 네이티브 BearSSL 지원과 BearSSL 기반 libtls 대체 구현인 [libtls-bearssl](https://sr.ht/~mcf/libtls-bearssl)을 통해 oasis는 시스템 전반에서 BearSSL을 사용함
- 일부 [선택 패키지](https://github.com/oasislinux/oasis/issues/14)만 여전히 LibreSSL을 필요로 함
- oasis에는 **패키지 관리자**가 없음
- 대신 어떤 패키지의 어떤 파일을 시스템에 포함할지 [명세](https://github.com/oasislinux/oasis/blob/master/config.def.lua#L16-L28)로 구성하고, 빌드 시스템이 결과 파일시스템 트리를 git 저장소에 기록함
- 이 결과는 `/`에 병합하거나 다른 머신에서 가져올 수 있음
- 완전한 시스템 제공을 목표로 하지만, 목표와 잘 맞지 않는 자유 소프트웨어가 많아 수천 개 패키지 저장소를 새로 만들고 유지하기보다 [pkgsrc](https://github.com/oasislinux/oasis/wiki/pkgsrc)와 [nix](https://nixos.org/nix)와의 연동을 선택함
- 이를 통해 기반 시스템을 작고 집중된 상태로 유지하면서 필요한 소프트웨어로 시스템을 확장할 수 있음

### 설정과 C 구현 방향
- oasis의 지침 중 하나는 `/etc` 디렉터리를 시스템 관리자가 전체를 이해하고 적절히 커스터마이즈할 수 있을 만큼 단순하게 유지하는 것임
- 기본 설정에서 가장 복잡한 파일은 시스템 초기화 스크립트 [`/etc/rc.init`](https://github.com/oasislinux/etc/blob/master/rc.init)이며, 길이는 16줄뿐임
- oasis의 주요 목표는 gcc나 clang보다 ISO C 표준에 훨씬 엄격하고 크기가 몇 자릿수 더 작은 C 컴파일러 [cproc](https://sr.ht/~mcf/cproc)로 빌드하는 것임
- 이 작업은 아직 [진행 중](https://github.com/oasislinux/oasis/issues/13)이지만, 모든 핵심 패키지와 대부분의 다른 패키지가 cproc으로 성공적으로 빌드됨

### 원칙
- 소프트웨어 복잡도는 모든 전이 의존성을 포함해 측정해야 함
- 실행 파일은 정적으로 링크되어야 함
- 소프트웨어 구성요소는 쉬운 커스터마이즈나 수정을 허용해야 함
- 패키지 소스는 URL이나 git 서브모듈로 참조해야 하며, 직접 포함하지 않아야 함
- `/etc`는 전체를 이해할 수 있을 만큼 단순해야 함
- 패치는 잘 정리되고 좋은 설명을 가져야 하며, 항상 깨끗하게 적용되어야 함

### 설치와 QEMU 이미지
- 설치 가이드는 [wiki](https://github.com/michaelforney/oasis/wiki)에 있음
- oasis는 야심적인 프로젝트이며 아직 할 일이 많이 남아 있음
- 사용자는 직접 커널을 빌드하고 문제가 생겼을 때 시스템을 조정하는 데 익숙해야 함
- 직접 설치하지 않고 시험해볼 수 있는 [QEMU 이미지](https://s3.sr.ht/builds.sr.ht/artifacts/~mcf/1138649/ff314f9e1f24ce4f/oasis-qemu.tar.xz)가 제공됨
- 아카이브 안에는 루트 파일시스템, Linux 커널, qemu 실행 스크립트가 들어 있음
- 사용 방법 정보가 담긴 `README.md`도 포함되며, `./run`은 그래픽 모드로 실행하고 `./run -s`는 시리얼 모드로 실행함

### 포함 소프트웨어 선택
- oasis는 가능할 때마다 더 작고 단순한 라이브러리와 도구 구현을 사용함
- 주요 선택은 다음과 같음
  - glibc 대신 musl
  - coreutils 대신 sbase
  - util-linux 대신 ubase
  - gzip 대신 pigz
  - man-db 대신 mandoc
  - openssl 대신 bearssl
  - bash 대신 oksh
  - dhclient 또는 dhcpcd 대신 sdhcp
  - vim 또는 emacs 대신 vis
  - bison 대신 byacc
  - sysvinit 또는 systemd 대신 perp와 sinit
  - chromium 또는 firefox 대신 netsurf
  - ninja 대신 samurai
  - Xorg 대신 velox
  - ncurses 대신 netbsd-curses
- 이 패키지들은 논리적인 [sets](https://github.com/oasislinux/oasis/blob/master/sets.lua)로 묶여 있음
- 전체 목록은 [pkg](https://github.com/oasislinux/oasis/blob/master/pkg) 디렉터리에서 확인할 수 있음
- 원하는 소프트웨어가 없더라도 pkgsrc나 nix를 통해 설치할 수 있을 가능성이 큼

### 연락 채널
- 메일링 리스트는 [~mcf/oasis@lists.sr.ht](mailto:~mcf/oasis@lists.sr.ht)에 있음
- IRC 채널은 libera.chat의 `#oasis`임
- 질문, 패치, 일반 논의에 사용할 수 있음

## Comments



### Comment 56871

- Author: neo
- Created: 2026-05-05T18:01:32+09:00
- Points: 1

###### [Lobste.rs 의견들](https://lobste.rs/s/tzewx3/oasis_linux) 
- 완전히 **정적 링크**되어 있다는 점이 인상적임  
  화난 상태로 bash를 링크하지 말라 ♪
  - `bash` 대신 [oksh](https://github.com/ibara/oksh)라는 프로젝트를 링크하는 것 같음

- 2020년쯤 Wayland가 막 자리 잡기 전 이 프로젝트를 살펴본 기억이 있음  
  자체 디스플레이 서버까지 포함한 **완전 정적 링크 배포판**을 만들고 있어서 당시에도 꽤 인상적이었고, 아직 살아 있다는 게 더 멋짐

- 스크린샷은 여기 있음: https://github.com/oasislinux/oasis/wiki  
  이런 건 README에 넣어주면 좋겠음

- **완전 정적 링크**라는 점이 상당히 인상적임  
  내 프로젝트들도 거의 전부 정적 링크지만, X 서버나 OpenGL/Vulkan 같은 그래픽 관련 예외는 있음  
  Oasis가 제시한 더 단순한 라이브러리/소프트웨어 [대안 목록](https://git.sr.ht/~mcf/oasis#software)도 잠깐 볼 만함

- 노트북에 **Oasis**를 설치하면서 Linux에 대해 정말 많이 배웠음  
  다만 마음 단단히 먹어야 하고, 특히 sway나 다른 Wayland 데스크톱을 쓰려고 pkgsrc를 설정할 때가 쉽지 않음  
  suckless 버전 coreutils도 많은 소프트웨어와 호환되지 않아서 문제를 예상해야 함  
  특히 좋았던 점은 전체 사용자 공간을 디버깅하고 이해하기가 매우 쉬웠다는 것이고, 재현 가능한 시스템을 만드는 접근으로는 nix보다 훨씬 덜 마법처럼 느껴짐
  - 좋은 학습 경험이었다니 반가움  
    **BearSSL**은 오랫동안 릴리스가 없었지만 가끔 커밋은 있고, 지난달에도 몇 개 있었음  
    다만 TLS 1.3을 아직 지원하지 않아서 작년 curl 8.15에서 제거됐고, TLS 1.2는 여전히 안전한 것으로 간주됨  
    curl 쪽에서는 최근 커밋과 버그 수정이 적다면 만족하는 사용자가 있을 수 없다는 우려도 있었는데, Thomas는 “내 코드에 버그를 충분히 만들지 못해 미안하다. 다음엔 더 엉성하게 해보겠다”라고 답함  
    인용한 README는 오래된 버전이고, 0.6에서는 BearSSL을 **베타 수준 소프트웨어**로 보며 계획된 기능 대부분이 구현됐고, 프로덕션 사용은 꽤 대담하지만 완전히 미친 선택은 아니라고 설명함  
    내 생각에는 Thomas Pornin이 말하는 “베타 품질 소프트웨어”의 기준이 대부분의 사람이 생각하는 프로덕션 준비 완료보다 더 높음
