- Docker 컨테이너 전용으로 설계된 Linux 서버 OS로, ISO만 부팅하면 곧바로 Docker Engine 환경에 들어가게 됨
- 코어 시스템을 불변·무상태 구조로 두고
/etc,/var,/home과 Docker 데이터만 별도 쓰기 영역으로 분리해, 설치와 초기 설정 부담을 크게 줄여 줌 - 기본 데이터 파일시스템은 tmpfs 기반 휘발성 저장소이며, 영속성을 켜면 별도 저장장치를 자동 감지해 파티셔닝·포맷·마운트하고 필요하면 Btrfs RAID1으로도 구성됨
squashfs기반 읽기 전용 루트와 최소 구성 요소를 사용해 악성코드나 의도치 않은 수정 노출면을 줄이고, 자원 사용량과 전력 소모도 낮추게 만듦- x86-64 전용으로 베어메탈과 가상머신에서 동작하며, 서버 관리 자체보다 컨테이너 실행과 셀프호스팅 운영에 바로 집중하게 해 줌
개요
- Docker 컨테이너 전용으로 설계된 Linux 서버 OS이며, ISO로 라이브 부팅하면 곧바로 Docker Engine 환경에 들어감
- 설치와 초기 설정 부담을 줄이기 위해 코어 시스템은 불변 구조로 두고, 데이터와 사용자 커스터마이징은 별도 저장 영역으로 분리함
- 홈랩, 베어메탈, 가상화 환경, 엣지 노드, 클러스터까지 겨냥하지만, 지원 아키텍처는 x86-64로 한정됨
- 최소 구성과 사용 편의성을 우선해, 서버 관리보다 컨테이너 실행과 운영 자체에 집중하게 만듦
주요 특징
- 플러그 앤 플레이 방식이라 ISO만 내려받아 부팅하면 필요한 도구가 포함된 Docker Engine이 바로 준비됨
- 구성 요소를 최소화해 학습 부담을 낮추고 시스템 동작을 빠르게 파악할 수 있게 함
- 불변·무상태 코어를 사용해 악성코드와 의도치 않은 수정에 대한 노출면을 줄이고, 매번 같은 상태로 부팅됨
- 선택적 영속성을 제공하며, 기본 데이터 파일시스템은 RAM의 휘발성
tmpfs이고 영속성을 켜면 별도 저장장치를 자동 감지해 파티셔닝·포맷·마운트함 - 불필요한 프로세스를 줄여 자원 사용량과 전력 소모를 낮추고, 구형 또는 저사양 장비를 더 오래 활용하게 함
- 셀프호스팅을 쉽게 운영하도록 해 Big Tech 종속에서 벗어나고 데이터와 프라이버시를 직접 관리하게 만듦
시작 방법
- 최신 ISO 다운로드 또는 다운로드 섹션에서 이미지를 받아 USB에 기록한 뒤 부팅하면 됨
- 일부 시스템에서는 부팅 전에 BIOS에서 safe boot 비활성화가 필요할 수 있음
- 기본 로그인은 사용자명
op, 비밀번호opsecret이며, 인터넷에 노출하기 전에는 비밀번호 변경이 최소한 필요함 - Wi-Fi는
setup-wifi로 선택적으로 설정 가능함 - 컨테이너 실행은 일반 Docker 사용과 같으며, 예시로
docker run -it --rm busybox ps를 사용함 - 영속성 활성화 때는 파티션이 아닌 블록 디바이스에 magic header를 써야 하며, 이 과정에서 기존 데이터가 지워짐
부팅과 실행 구조
- ISO는 베어메탈과 가상머신에서 부팅 가능하며, UEFI와 전통 BIOS를 모두 지원함
- 시작 과정은 sysv 유사 init 시스템을 사용해 단순하고 투명한 부팅 흐름을 유지함
- 부트로더가 Linux 커널과 루트 파일시스템을 메모리에 올린 뒤, 커널이 하드웨어를 초기화하고
/init에 제어를 넘김 init는/etc/inittab을 읽고/tmp,/run용tmpfs를 마운트한 뒤/etc/init.d의 스크립트를 실행함- 초기에 data filesystem을 마운트해 Docker 데이터와
/etc,/var,/home의 overlay 상위 레이어를 제공함 - 모든 파일시스템과 overlay가 준비된 뒤 나머지 서비스가 시작되고, 그 시점부터 컨테이너를 서비스할 수 있음
불변성 설계
- 루트 파일시스템은 압축된
squashfs정적 이미지로 제공되며, 자체적으로 수정 불가능한 구조임 - 이 구조 덕분에 필수 소프트웨어와 설정이 미리 포함되어, 설치 과정 없이 부팅 가능한 자급형 이미지가 됨
- 패키지 관리자, 의존성 관리, 기존 시스템 업데이트 경쟁을 피하고, 이미 동작하는 것을 다시 설치하는 작업을 재부팅 하나로 대체함
- 루트 파일시스템 파일은 실수로 삭제되거나 바이러스에 의해 수정되지 않으며, 전통적 시스템처럼 커널과 기반 바이너리 전체가 수정 가능 상태로 노출되지 않음
- 읽기 전용 루트 구조라 장기간 운영 중 남는 파일이 쌓이며 백업과 성능, 정리 상태를 해치는 잡동사니 축적을 막음
- 로컬 VM이나 다른 컴퓨터에서 자유롭게 시험해 보고, 재부팅으로 변경을 되돌릴 수 있음
- 부팅 매체에는 중요한 정보가 없고 불변성으로 그 상태가 유지되므로, 장치가 손상되거나 분실돼도 새 복사본으로 복구 가능함
영속성 구조
- 컨테이너 설치·실행, 설정 변경, 데이터 기록에는 쓰기 가능한 파일시스템이 필요하며, 재부팅 뒤에도 유지하려면 영속성이 필요함
- 초기 부팅 단계에서 자동으로 동작하는 하위 시스템이
/mnt/lightwhale-data에 data filesystem을 마운트함 - Lightwhale이 기록하는 데이터는
/mnt/lightwhale-data/lightwhale-state아래에 모이며, 이 디렉터리가overlayfs의 쓰기 가능한 상위 레이어가 됨 - 기본값은 휘발성
tmpfs이고, 영속성을 켜면 data filesystem이 별도 저장장치에 위치하게 바뀜 - 전체 루트를 덮지 않고
/etc,/var,/home만 선택적으로 overlay 처리해 불변성의 목적을 유지함/etc는 네트워크, 비밀번호,sshd같은 시스템 설정 커스터마이징에 사용됨/var는 로그와 기타 애플리케이션 데이터에 사용됨/home은 SSH authorized keys, Git 저장소 클론, Docker·Swarm 스택 관리 같은 사용자 커스터마이징에 사용됨
- Docker의 data root는
/mnt/lightwhale-data/lightwhale-state/docker에 직접 위치하며, 이미지·컨테이너·볼륨·네트워크 상태를 저장함
영속성 활성화와 자동 처리 단계
- 영속성은
echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/sdx처럼 magic header를 저장장치에 기록해 명시적으로 켜야 함 - 여러 저장장치에 magic header를 기록할 수 있으며, 그 경우 Btrfs RAID1 볼륨으로 조합됨
- 다음 부팅 때 시스템이 magic disk를 감지해 포맷하고 data filesystem으로 사용함
- persistence subsystem는
/etc/init.d/S11persistence에서 시작됨 -
데이터 파일시스템 탐지
- 모든 디스크를 검사해 파일시스템 라벨이
lightwhale-data인 파티션을 찾음 - 찾으면 그것을 data filesystem으로 사용하고 이후 마운트 단계로 건너뜀
- 모든 디스크를 검사해 파일시스템 라벨이
-
magic disk 탐지와 파티션 생성
- 디스크 시작 위치의 바이트 시퀀스
lightwhale-please-format-me를 찾아 magic disk를 판별함 - 각 magic disk에는
lightwhale-swap라벨의 swap 파티션과, 남은 공간 전체를 쓰는lightwhale-data라벨의 Linux 파티션을 만듦
- 디스크 시작 위치의 바이트 시퀀스
-
파일시스템 생성
- magic swap 파티션은 포맷 뒤
lightwhale-swap라벨을 붙임 - magic data 파티션이 하나면
btrfs --data single --metadata dup로 포맷함 - 여러 개면 RAID1으로 묶고
btrfs --data raid1 --metadata raid1cn으로 포맷함 @lightwhale-data,@lightwhale-state,@lightwhale-state-snapshots서브볼륨을 생성함
- magic swap 파티션은 포맷 뒤
-
마운트와 overlay 구성
- data filesystem이 있으면
@lightwhale-data를/mnt/lightwhale-data에 마운트하고, 없으면tmpfs를 대신 마운트함 - 불변 하위 레이어는
/etc를/run/lightwhale/overlay/lower/etc에 바인드 마운트하고, 루트 파일시스템 디렉터리 트리를 미러링해 준비함 - 쓰기 가능한 상위 레이어는
/mnt/lightwhale-data/lightwhale-state/overlay/upper/etc같은 경로에 준비함 - 이후
overlayfs로 두 레이어를 합쳐/etc에 마운트하고, 같은 방식을/var,/home에도 반복함
- data filesystem이 있으면
제약과 FAQ 핵심
- 지원 하드웨어는 x86-64 전용이며 BIOS와 EFI를 모두 지원함
- Raspberry Pi는 현재 지원하지 않으며, backlog에 올라가 있음
- Apple M-series는 베어메탈로 지원하지 않지만, 가상화 실행은 가능함
- VMWare/ESX/Proxmox/cloud 같은 가상 환경에서 실행 가능하며, QEMU/KVM과 VMware ESXi용 게스트 에이전트를 포함함
- 소프트웨어는 Docker 컨테이너만 설치 가능하며, 루트 파일시스템에 직접 설치하는 방식은 불가능함
- 코어 시스템은 불변이지만, 설정·커스터마이징·컨테이너 데이터는 기본적으로 메모리에 기록되고 영속성을 켤 때만 재부팅 뒤에도 유지됨
- 기본 호스트명에는 네트워크 충돌 방지를 위해 machine ID가 포함되며,
setup-hostname으로 변경하면 현재 셸을 제외하고 즉시 반영됨 - 보증은 없으며, 사용 결과에 대한 책임은 사용자에게 있음
- 루트 파일시스템에
wget,nano같은 선호 도구를 추가하는 방향은 지향하지 않으며, 목적 특화 최소 서버 OS라는 제약을 유지함 - 프라이버시 정책 TL;DR로는 개인 데이터를 수집하지 않으며, 텔레메트리에 동의한 경우에만 익명 데이터를 수집하고 그 내용도 검토 가능함
- 연령 관련 규제 준수는 OS 자체가 아니라, 그 위에 배포하는 사용자 서비스의 책임으로 둠