프로젝트 소개

Kyanite는 일상 사용을 목표로 하는 Fedora Kinoite 스핀으로, 불변 bootc(부팅 가능 컨테이너) 이미지로 배포된다. KDE Plasma를 포함하며 기업 브랜딩을 제거하고 기본 Kinoite의 거친 부분을 다듬었다. 기본 Kinoite와의 주요 차이점: Mozilla 공식 Flatpak을 통한 Firefox, Discover를 대체하는 Bazaar, 첫 부팅 시 Flathub 구성 및 Fedora flatpak 리모트 제거, 기본 셸 Fish, 동적 배경화면, CJK 입력용 fcitx5, h264/h265/AV1 재생을 위한 negativo17 기반의 더 완전한 코덱 스택. Docker, 가상화, Steam, ROCm 같은 무거운 구성 요소는 기본 이미지가 아닌 선택적 sysext로 분리된다. 노트북 스피커 DSP 설정용 PipeWire 필터 체인이 포함되며 CPU, ROCm 또는 Vulkan의 로컬 LLM을 위한 Ollama Quadlet이 준비되어 있다. 설치는 기존 bootc 시스템에서 간단하다. `sudo bootc switch ghcr.io/alyraffauf/kyanite:stable` 명령으로 이미지를 전환하고 재부팅하면 된다. Universal Blue에서 가져온 `ujust` 명령 프레임워크는 시스템 관리를 위한 사용자 지정 레시피를 제공한다. 선택적 sysext는 별도 저장소의 systemd-sysext 페이로드로 제공된다. Docker CE(buildx, compose 포함), AMD ROCm(HIP, OpenCL 포함), Gamescope·MangoHud가 포함된 네이티브 Steam, Syncthing, Tailscale 메시 VPN, QEMU/KVM 가상화 등이 있다. 이들은 systemd-sysupdate.timer를 통해 자동 업데이트되며 `ujust install-sysext`와 `ujust remove-sysext`로 설치/제거할 수 있다. 로컬 LLM의 경우 세 개의 Quadlet 유닛이 컨테이너 내부의 GPU 런타임과 함께 Ollama를 사용자 수준 systemd 서비스로 실행한다. CPU, ROCm, Vulkan 백엔드는 상호 배타적이며 ollama-data 볼륨을 공유하므로 전환할 때 모델 가중치를 다시 다운로드하지 않는다. ROCm 백엔드는 공식 지원 AMD 카드에서 작동하고 Vulkan은 ROCm이 지원하지 않는 카드를 담당한다. Syncthing은 127.0.0.1:8384 GUI와 함께 네이티브 sysext로 제공되며 ~/.local/state/syncthing/의 기존 구성을 그대로 이어받는다. Quadlet 템플릿은 /usr/share/kyanite/quadlets/에 포함되고 ujust 레시피에 의해 ~/.config/containers/systemd/로 복사되므로 OS 업데이트가 사용자 편집 내용을 덮어쓰지 않는다. podman-auto-update.timer가 기본 실행되며 AutoUpdate=registry가 설정된 Quadlet을 매일 밤 새로 고친다. 사용자 지정은 JSON 파일로 선언적으로 이루어진다: variant별 패키지 packages.json, systemd 유닛 services.json, variant별 시스템 파일 files/, Homebrew 번들 brew/, 사전 설치 Flatpak flatpaks/, 사용자 지정 레시피 ujust/. 다른 flavor를 빌드하기 위한 variant 스캐폴드가 있지만 현재는 메인 kyanite variant만 빌드된다. 로컬 빌드에는 Podman과 Just가 필요하다. 컨테이너 빌드는 `just build`, VM 테스트는 `just build-qcow2`, 전체 ISO 빌드(약 10GB, 30분 이상)는 `just build-iso`, QEMU에서 qcow2 부팅은 `just run-vm`을 사용한다. 공유 데스크톱 자산은 digest 고정된 kyanite-common OCI 레이어에서 가져온다. BASE_IMAGE를 kinoite-nvidia 이미지로 설정하면 NVIDIA 베이스 실험판을 사용할 수 있다. 보안은 게시된 공개 키에 대한 cosign 서명으로 처리된다. 이미지는 `cosign verify`로 검증할 수 있다. 서명된 전송(signed transport)으로 전환하려면 두 단계 부트스트랩이 필요하다. 먼저 서명 없는 전환으로 정책과 키를 가져온 다음 ostree-image-signed:로 rebase하여 바이트가 파일 시스템에 닿기 전에 풀되는 모든 이미지의 자동 검증을 활성화한다. 이 프로젝트는 Apache 2.0 라이선스이며 KDE Plasma를 갖춘 Fedora Kinoite를 기반으로 하고 Universal Blue에서 영감을 받았다.