핵심 요약
- GNU Guix가 357바이트 크기의 최소 바이너리 씨앗(hex0-seed)에서 시작해 2만 2,000개 이상의 패키지를 소스로만 빌드하는 풀 소스 부트스트랩을 메인 브랜치에 공식 병합했습니다.
- 기존의 사전 컴파일된 거대 바이너리에 의존하지 않고 공급망 보안과 백도어 취약점을 근본적으로 해결하기 위해 컴파일러 체인 전체를 단계별로 재구축했습니다.
- 현재 x86 및 x86_64 리눅스에 적용 완료되었으며, 빌드 드라이버 역할을 하는 25MiB Guile 바이너리마저 제거하고 ARM과 RISC-V로 확장을 준비 중입니다.
요약 GNU Guix 프로젝트가 운영체제의 기본 소프트웨어 패키지 2만 2,000여 개를 단 357바이트 크기의 최소 바이너리 프로그램(hex0-seed)으로부터 완전히 소스 코드로만 빌드해 올리는 '풀 소스 부트스트랩(Full-Source Bootstrap)' 구현을 메인 브랜치에 병합했습니다. 이는 유닉스 탄생 이래 사실상 처음 달성된 이정표로 평가받고 있습니다.
기존의 현대 운영체제 배포판들은 컴파일러 자체를 빌드하기 위해 이미 빌드된 거대한 바이너리 컴파일러에 의존해야 했습니다. 이러한 구조는 공급망 보안 측면에서 신뢰할 수 없는 백도어나 변조 위험(일명 'Trusting Trust' 공격)에 취약하다는 치명적인 한계가 있었습니다. 이를 해결하기 위해 Guix 팀은 사람이 16진수와 어셈블리로 검증할 수 있는 극소형 바이너리 씨앗 프로그램부터 시작해, 상위 컴파일러와 도구 체계를 차례대로 구축하는 방식을 완성했습니다.
실제 빌드 과정은 357바이트 크기의 hex0-seed 바이너리로부터 시작해 hex0, hex1, hex2 등 점진적인 어셈블러 단계를 거쳐 M2-Planet 및 GNU Mes(v0.24.2), TCC(Tiny C Compiler), 초기 GCC 버전(2.95.3, 4.9.4) 등을 계단식으로 빌드해 올립니다. 과거에는 릴리스마다 C++이나 파이썬 같은 무거운 언어를 필수 빌드 의존성으로 추가하면서 부트스트랩 순환 고리가 꼬이는 문제가 많았으나, Guix 팀은 이를 최소 의존성 체인으로 재구성해 냈습니다.
현재 이 시스템은 x86 및 x86_64 리눅스 환경에 먼저 적용되었으며, 아직 초기 드라이버 역할을 하는 약 25MiB 크기의 정적 Guile 바이너리가 남아 있어 이를 제거하기 위한 추가 작업이 진행 중입니다. 개발팀은 향후 ARM 및 RISC-V 아키텍처로도 풀 소스 부트스트랩 지원을 확대할 계획입니다.
Sponsored · 광고