NativOS-GSI
Ubuntu ARM64/Phosh 데스크톱 환경과 안드로이드 애플리케이션 및 장치 하드웨어 지원을 결합한 실험적인 리눅스 우선(Linux-first) 안드로이드 Generic System Image입니다.
NativOS는 안드로이드를 부팅하고 커스텀 HOME 애플리케이션을 통해 통합된 리눅스 데스크톱을 시작합니다. 장치의 안드로이드 커널(Android kernel), 벤더 펌웨어(vendor firmware), 하드웨어 추상화 계층(hardware abstraction layers), 그리고 프레임워크는 여전히 필수적입니다. 이것은 독립적인 리눅스 커널 포트가 아니며, 통합된 시작 경로를 위해 Magisk가 필요하지 않습니다.
실험적 상태 (Experimental status)
이것은 개발 소스이며, 생산 인증을 받은 운영 체제가 아닙니다. 주력 휴대폰이나 테스트된 순정 펌웨어(stock-firmware) 복구 절차가 없는 장치에서는 사용하지 마십시오.
- 플래싱 및 언락은 모든 장치 데이터를 지울 수 있습니다.
- 커스텀 이미지나 검증 비활성화 메타데이터를 설치하는 동안 부트로더(bootloader)는 잠금 해제 상태로 유지하십시오.
- A/B 파티셔닝만으로는 호환성을 확립할 수 없습니다.
- 펌웨어, 벤더 정책(vendor policy), 커널 기능, 아키텍처, 및 파티션 용량은 장치마다 확인해야 합니다.
- 현재 이미지는 5 GiB 시스템 파티션:
5368709120 바이트를 목표로 합니다.
- 리눅스 애플리케이션 호환성은 불완전합니다. 패키지를 설치하는 것이 해당 그래픽 인터페이스나 하드웨어 종속 기능이 작동한다는 증거는 아닙니다.
- 엄격한 생산(production) SELinux 정책 검증을 통과하지 못했습니다. 실행 중인 휴대폰에서의 SELinux Enforcing는 해당 검증을 대체할 수 없습니다.
진행하기 전에 설치 및 복구, 알려진 한계점, 그리고 보안 경계를 읽어보십시오.
구현 (Implementation)
- 임베디드 Termux:X11 디스플레이 서버를 갖춘 사용자 정의 Android 런처.
- 인증된 고정 수명 주기 요청을 가진 Android init 관리 네이티브 설정 서비스.
- 읽기 전용 Ubuntu 데스크톱을 위한 사설 마운트 네임스페이스 및 네이티브 chroot.
- 일반적인 Linux 데스크톱 실행 전에 런처 사용자 ID(UID)로 권한을 낮추고, 기능을 제거하며, 새로운 권한 부여를 방지함.
- 중첩된 디스플레이 경로와 소프트웨어 렌더링을 사용하는 Phoc/Phosh.
- 네이티브 ARM64 PRoot 워커를 사용한 사용자별 쓰기 가능한 Linux 패키지 환경.
- APT 명령어 라우팅, 패키지 트랜잭션 잠금, 그리고 내보내진 애플리케이션 런처.
- 도크, 배경화면, Android 애플리케이션 바로가기, 서랍 제스처 및 회전 처리.
핵심 데스크톱은 네이티브 chroot를 사용하고, 쓰기 가능한 패키지 계층은 PRoot을 사용합니다. chroot나 PRoot 단독으로는 보안 샌드박스를 제공하지 못합니다. architecture를 참조하십시오.
장치 증거 (Device evidence)
| 장치 | 검증된 증거 | 자격 분류 |
|---|
Google Pixel 6a (bluejay) | V33 RC2 클린 부트, Linux 데스크톱, 12 APT 확인; 이후 제어 가능한 저장소/패키지 지속성 | 테스트된 벤더 펌웨어: Android 16 CP1A.260405.005. 이후의 OpenSSH 감사 호환성 수정이 라이브로 적용되었으며 V33보다 최신입니다. |
| ... | | |
대부분의 A/B 폰에서 이 이미지가 실행된다는 검증된 주장은 없습니다.
소스 및 이미지 버전 (Source and image versions)
이 저장소의 최상단에 있는 소스는 V33 RC2가 빌드된 이후 발견된 게스트 감사 호환성 수정 사항을 포함합니다. 보존된 V33 이미지는 해당 후속 수정 사항을 포함하지 않습니다. 이 수정 사항을 기본적으로 사용할 수 있다고 설명하기 위해서는 새로운 이미지와 신선한 장치 검증이 필요합니다.
이미지 바이너리, APK, rootfs 아카이브, OEM 펌웨어, 사설 서명 키, 사용자 데이터 및 사전 빌드된 네이티브 종속성은 여기에 커밋되지 않습니다. 소스 푸시가 다운로드 가능한 릴리스 이미지를 게시하는 것은 아닙니다. 체크섬과 테스트된 펌웨어 정보와 함께 릴리스에 명시적으로 첨부될 때까지 아티팩트가 존재한다고 가정하지 마십시오.
패키지 사용 (Package usage)
일반 NativOS Linux 터미널에서:
apt update
apt install vim tree
tree --version
개인 패키지 환경에서는 sudo가 필요하지 않습니다. 이는 Android root 권한을 부여하는 것은 아닙니다. 설치, 업그레이드, 제거 또는 복구 작업 전에 패키지 설치된 Linux 애플리케이션을 종료하십시오. 초기화 후 정확한 리포지토리 새로고침 및 선택된 캐시 쿼리가 패키지 애플리케이션과 함께 실행될 수 있습니다.
레포지토리 레이아웃 (Repository layout)
android/ Android 런처, 디스플레이 통합 및 앱 소스
gsi/build-nativos-gsi.sh Ext4 / AVB 이미지 조립
gsi/nativos-runtime/ 네이티브 서비스, 세션 러너, 정책 및 테스트
...
빌드 문서를 참조하십시오. 이 체크아웃은 아직 자체적으로 완결된, 단일 명령어로 재현 가능한 이미지 빌드가 아닙니다. 외부 준비된 rootfs, 네이티브 의존성(native dependencies), 정책 스냅샷(policy snapshots), 및 서명 입력값(signing inputs)이 필요합니다.
개발 검사 (Development checks)
python3 gsi/packages/tests.py
python3 gsi/packages/test-transaction-locks.py
python3 gsi/nativos-runtime/tests/client_policy_test.py
...
완전한 호스트 스위트(host suite)는 추가적으로 검토된 ARM64 게스트 호환성 라이브러리(guest compatibility library)가 필요합니다. 네임스페이스(Namespace) 및 권한(privilege) 테스트에는 적절하게 격리된 Linux/WSL root 환경이 요구됩니다. 호스트 테스트는 물리적 장치 테스트를 대체하지 않습니다.
기여 (Contributing)
버그 보고서에는 디바이스 모델, 펌웨어/벤더 빌드, 정확한 이미지 버전, 재현 단계(reproduction steps), 그리고 정제된 로그를 포함하십시오. 일련번호(serial numbers), 토큰, 계정 상세 정보 및 개인 파일은 제거해야 합니다. 개인 키(private keys), 스톡 펌웨어 아카이브 또는 휴대폰 백업을 제출하지 마십시오.
SELinux, 마운트 설정(mount setup), UID 처리, 패키지 실행 또는 플래싱에 대한 변경 사항에는 경계/회귀 테스트(boundary/regression tests)가 포함되어야 합니다. 단지 하나의 애플리케이션이 실행되도록 하기 위해 보안 제어(security controls)를 약화시키지 마십시오.
라이선스 및 감사의 글 (License and acknowledgements)
NativOS 소스는 프로젝트의 GPL-3.0 라이선스를 유지합니다. 타사 구성 요소는 자체 라이선스와 고지를 유지합니다. LICENSE, NOTICE, 그리고 third-party notices를 참조하십시오.
NativOS는 LineageOS, Termux, GNOME, Canonical, Google, Motorola 및 기타 상위 프로젝트(upstream projects)나 기기 제조업체와 독립적입니다.