Oasis Linux
1 week ago
18
- oasis는 기반 시스템의 모든 소프트웨어를 정적 링크하는 작은 Linux 시스템으로, 익숙한 Linux 배포판보다 BSD에 가까운 방향을 가짐
- 모든 패키지는 samurai로 빌드하고 Lua 스크립트로 매니페스트를 생성해, 초기 패키징 비용은 크지만 예측 가능하고 재현 가능한 빌드와 패키지 경계를 넘는 증분 빌드를 제공함
- 시스템 TLS와 암호화 라이브러리로 BearSSL을 쓰며, libcurl의 네이티브 BearSSL 지원과 libtls-bearssl을 통해 시스템 전반에서 BearSSL을 사용함
- oasis에는 패키지 관리자가 없고, 어떤 패키지의 어떤 파일을 포함할지 명세로 구성한 뒤 빌드 시스템이 결과 파일시스템 트리를 git 저장소에 기록해 /에 병합하거나 다른 머신에서 가져올 수 있음
- /etc를 전체적으로 이해할 수 있을 만큼 단순하게 유지하고, gcc나 clang보다 ISO C 표준에 엄격하며 훨씬 작은 cproc 컴파일러로 빌드하는 것을 주요 목표로 삼음
oasis 개요
- oasis는 작은 Linux 시스템이며, 익숙한 다른 Linux 기반 운영체제와는 꽤 다르고 BSD에 더 가까운 방향을 가짐
- 기반 시스템의 모든 소프트웨어가 정적 링크되며, 디스플레이 서버 velox와 웹 브라우저 netsurf도 포함됨
- 동적 링크보다 단순한 메커니즘을 사용하고, 라이브러리 업그레이드 문제를 없애며, 다른 시스템으로 쉽게 복사할 수 있는 완전한 자체 포함 바이너리를 만듦
빌드와 부트스트랩
- 모든 패키지는 samurai로 빌드되며, 빌드 매니페스트는 Lua 스크립트로 생성됨
- 이 방식은 초기 패키징 비용이 상당하지만 유지보수 비용은 작고, 거의 최적에 가까운 빌드 시간, 예측 가능하고 재현 가능한 빌드, 줄어든 빌드 시점 의존성, 패키지 경계를 넘는 증분 빌드를 제공함
- 부트스트랩에는 git, lua, curl, sha256 유틸리티, 표준 압축 유틸리티, x86_64-linux-musl 크로스 컴파일러가 있는 임의의 POSIX 시스템이면 충분함
- macOS나 OpenBSD 같은 비-Linux 시스템에서도 크로스 컴파일이 간단해짐
TLS, 패키지 구성, 시스템 확장
- BearSSL이 시스템 TLS 및 암호화 라이브러리로 쓰임
- BearSSL은 매우 작고 잘 작성되어 있지만 널리 채택되지는 않았음
- libcurl의 네이티브 BearSSL 지원과 BearSSL 기반 libtls 대체 구현인 libtls-bearssl을 통해 oasis는 시스템 전반에서 BearSSL을 사용함
- 일부 선택 패키지만 여전히 LibreSSL을 필요로 함
- oasis에는 패키지 관리자가 없음
- 대신 어떤 패키지의 어떤 파일을 시스템에 포함할지 명세로 구성하고, 빌드 시스템이 결과 파일시스템 트리를 git 저장소에 기록함
- 이 결과는 /에 병합하거나 다른 머신에서 가져올 수 있음
- 완전한 시스템 제공을 목표로 하지만, 목표와 잘 맞지 않는 자유 소프트웨어가 많아 수천 개 패키지 저장소를 새로 만들고 유지하기보다 pkgsrc와 nix와의 연동을 선택함
- 이를 통해 기반 시스템을 작고 집중된 상태로 유지하면서 필요한 소프트웨어로 시스템을 확장할 수 있음
설정과 C 구현 방향
- oasis의 지침 중 하나는 /etc 디렉터리를 시스템 관리자가 전체를 이해하고 적절히 커스터마이즈할 수 있을 만큼 단순하게 유지하는 것임
- 기본 설정에서 가장 복잡한 파일은 시스템 초기화 스크립트 /etc/rc.init이며, 길이는 16줄뿐임
- oasis의 주요 목표는 gcc나 clang보다 ISO C 표준에 훨씬 엄격하고 크기가 몇 자릿수 더 작은 C 컴파일러 cproc로 빌드하는 것임
- 이 작업은 아직 진행 중이지만, 모든 핵심 패키지와 대부분의 다른 패키지가 cproc으로 성공적으로 빌드됨
원칙
- 소프트웨어 복잡도는 모든 전이 의존성을 포함해 측정해야 함
- 실행 파일은 정적으로 링크되어야 함
- 소프트웨어 구성요소는 쉬운 커스터마이즈나 수정을 허용해야 함
- 패키지 소스는 URL이나 git 서브모듈로 참조해야 하며, 직접 포함하지 않아야 함
- /etc는 전체를 이해할 수 있을 만큼 단순해야 함
- 패치는 잘 정리되고 좋은 설명을 가져야 하며, 항상 깨끗하게 적용되어야 함
설치와 QEMU 이미지
- 설치 가이드는 wiki에 있음
- oasis는 야심적인 프로젝트이며 아직 할 일이 많이 남아 있음
- 사용자는 직접 커널을 빌드하고 문제가 생겼을 때 시스템을 조정하는 데 익숙해야 함
- 직접 설치하지 않고 시험해볼 수 있는 QEMU 이미지가 제공됨
- 아카이브 안에는 루트 파일시스템, 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로 묶여 있음
- 전체 목록은 pkg 디렉터리에서 확인할 수 있음
- 원하는 소프트웨어가 없더라도 pkgsrc나 nix를 통해 설치할 수 있을 가능성이 큼
연락 채널
-
Homepage
-
Tech blog
- Oasis Linux