GN⁺: 오아시스(Oasis) – 작고 정적 링크된 리눅스 시스템
(github.com/oasislinux)오아시스(Oasis)는 작은 리눅스 시스템
- 오아시스는 다른 리눅스 기반 운영체제와 상당히 다르며, BSD에 더 가까움.
- 모든 소프트웨어가 정적 링크되어 있어, 라이브러리 업그레이드 문제를 해결하고, 다른 시스템으로 쉽게 복사할 수 있는 완전히 독립적인 바이너리를 제공함.
- 빠른 빌드와 100% 재현 가능한 빌드를 제공하며, 최적의 빌드 시간, 예측 가능하고 재현 가능한 빌드, 감소된 빌드 시간 의존성, 패키지 경계를 넘어서도 증분 빌드 가능함.
- 최소한의 부트스트랩 의존성을 가지고 있어, macOS나 OpenBSD와 같은 비리눅스 시스템에서도 쉽게 크로스 컴파일할 수 있음.
원칙
- 소프트웨어 복잡성은 모든 전이 의존성을 포함하여 측정되어야 함.
- 실행 파일은 정적으로 링크되어야 함.
- 소프트웨어 구성 요소는 쉬운 사용자 정의 및 수정을 허용해야 함.
- 패키지 소스는 URL이나 git 서브모듈을 통해 참조되어야 하며, 직접 포함되어서는 안 됨.
-
/etc
는 완전히 이해될 수 있을 정도로 단순해야 함. - 패치는 잘 조직되어 있어야 하며, 좋은 설명을 가지고 있으며, 항상 깔끔하게 적용되어야 함.
설치
- 오아시스는 야심 찬 프로젝트이며, 아직 많은 작업이 남아 있음.
- 사용자는 자신의 커널을 빌드하고 시스템 문제를 해결하는 데 익숙해야 함.
- 문제가 발생하면 도움을 제공하는 데 항상 기쁨.
QEMU
- 오아시스를 직접 설치하지 않고 시도하고 싶다면 QEMU 이미지를 사용할 수 있음.
- 아카이브에는 루트 파일시스템, 리눅스 커널, QEMU를 실행하는 스크립트가 포함되어 있음.
-
./run
을 사용하여 그래픽 모드로,./run -s
를 사용하여 시리얼 모드로 실행할 수 있음.
소프트웨어
- 가능한 한 간단하고 작은 라이브러리 및 도구의 구현을 사용함.
- musl, sbase, ubase, pigz, mandoc, bearssl, oksh, sdhcp, vis, byacc, perp 및 sinit, netsurf, samurai, velox, netbsd-curses 등이 glibc, coreutils, util-linux, gzip, man-db, openssl, bash, dhclient/dhcpcd, vim/emacs, bison, sysvinit/systemd, chromium/firefox, ninja, Xorg, ncurses의 대체품으로 사용됨.
- 패키지는 논리적 세트로 그룹화되어 있으며, 전체 목록은 pkg 디렉토리에서 확인할 수 있음.
- 선호하는 소프트웨어가 누락된 경우, pkgsrc나 nix를 통해 여전히 설치할 수 있음.
연락처
- 질문, 패치, 일반 토론을 위해 메일링 리스트(~mcf/oasis@lists.sr.ht)와 IRC 채널(#oasis on libera.chat)을 사용할 수 있음.
GN⁺의 의견
- 오아시스는 기존 리눅스 시스템과 다른 접근 방식을 제공하며, 정적 링크, 빠른 빌드, 최소 부트스트랩 의존성과 같은 특징으로 개발자들에게 새로운 선택지를 제공함.
- 이 시스템은 소프트웨어 개발의 복잡성을 줄이고, 사용자 정의 및 수정의 용이성을 중시하는 철학을 가지고 있어, 소프트웨어 엔지니어링의 원칙에 대한 신선한 시각을 제공함.
- 오아시스는 아직 개발 중인 프로젝트이지만, 기술적 도전을 즐기고 시스템에 대한 깊은 이해를 원하는 사용자들에게 매력적인 대안이 될 수 있음.
Hacker News 의견
-
시스템에 대해서는 많이 말할 수 없지만, IRC를 통해 커뮤니티와 상호작용할 때 매우 친절했다고 함. 불변성 OS 이미지를 구축하여 쿠버네티스 노드로 실행할 계획이 있었으며, 약간의 도움을 받아 성공했다고 함.
-
정적 링킹은 라이브러리의 여러 복사본으로 인해 기본 이미지와 런타임 메모리가 더 커질 수 있음을 시사함. 정적 링킹의 단순성은 좋지만 "부피를 줄이기"라는 아이디어에 반하는 것처럼 보임.
-
2022년 8월의 이전 토론 링크 제공.
-
기본 설치 크기가 얼마인지 아는 사람이 있는지 궁금함. 어디에서도 답을 찾을 수 없었고, QEMU 이미지로의 링크가 현재는 깨져 있음. 예를 들어, 비슷한 패키지 세트를 가진 Alpine과 비교해서 어떤지 궁금함.
-
사용 사례가 무엇인지, croc C 컴파일러를 사용하는 것의 장점이 무엇인지 궁금함. TCC 대신 croc을 사용하는 이점은 무엇인지, Netsurf 브라우저에 대해 알게 되어 흥미로움. 하지만 Duktape JS 엔진을 사용하므로 성능 문제가 있을 수 있음.
-
자바스크립트를 끈 상태에서 Github에 접근할 수 없다는 불만을 표하는 (삭제된) 댓글이 있었음. Oasis 저장소는 sourcehut에서도 미러링되고 있으므로, 그것이 더 수용 가능할 수 있음.
-
michaelforney는 st의 wayland 포트도 수행했음. Oasis의 전신은 sta.li임.
-
정적 라이브러리의 크기가 얼마나 되는지 궁금함. 동적 라이브러리는 주소 공간을 공유할 수 있지만, 정적 라이브러리의 경우 링커가 사용되지 않는 루틴을 제거할 수 있으므로 예상치 못한 효율성이 있을 수 있음. 또한, 더 빠를 수도 있음.
-
musl과 전통적인 glibc 사이의 비교는 무엇인지, 두 라이브러리 사이에 성능 차이가 있는지 궁금함. 최근 Rust와 Zig 생태계에서 musl 사용이 점점 더 많아지고 있음.
-
흥미로운 선택들, 단순히 또 다른 리눅스 배포판이 아닌 것에 대해 긍정적인 평가.