피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
더 작은 NixOS ISO를 만들 수 있을까?
NixOS ISO 최적화를 통한 이미지 크기 458MiB에서 183MiB로 60% 감축
AI 요약
Context
NixOS는 선언적 설정을 통해 ISO 생성이 용이하나 기본 최소 이미지 크기가 458MiB로 Alpine Linux 대비 과도하게 큼. 특히 nix-store.squashfs 내의 Python, Perl, Kernel Modules 등 기본 의존성이 전체 크기의 대부분을 차지하는 구조적 한계 존재.
Technical Solution
- Nix Daemon 및 관련 문서 제거를 통한 Boost 의존성 제거 및 360MiB까지 경량화
- Stub 모듈 설계를 통한 programs/ssh.nix 모듈 제외 및 연쇄적 빌드 오류 해결
- system.systemBuilderCommands를 이용한 런타임 커널 모듈 폴더 강제 삭제로 144MiB 공간 확보
- system.etc.overlay 및 userborn 도입을 통해 시스템 활성화 단계의 Perl 의존성 대체
- system.extraDependencies 및 environment.systemPackages 초기화를 통한 GRUB 설치 도구 제거
- CorePackages 유지를 통한 getty Crashloop 방지 및 최소 셸 환경 보장
실천 포인트
- NixOS 이미지 최적화 시 nix why-depends를 활용해 의존성 전파 경로 정밀 분석 - 모듈 제거 시 발생하는 연쇄 오류 해결을 위해 빈 옵션만 정의한 Stub 모듈 작성 검토 - 시스템 빌드 후반 단계에서 불필요한 디렉토리를 삭제하는 systemBuilderCommands 활용 가능 여부 확인 - 기본 시스템 구성 요소의 의존성 제거를 위해 실험적 기능(Overlay, native userborn) 적용 검토