미니 Termux 네이티브 XFCE4 데스크탑 (by S24+)
- 흡혈귀왕
- 조회 수 1421
- 2024.06.01. 03:16
현재 덱스테이션과 합체(...) 후
열심히 Termux 실험 대상이 되고있는 갤럭시S24+ 입니다.
해당 화면은 DeX 모드에서 실행된 Termux로
리눅스와 같은 X11 환경을 만들어준 겁니다. (세션은 XFCE4)
즉 리눅스처럼 보이지만 저 화면은 리눅스가 아니라
안드로이드에서 돌아가는 X11 환경입니다.
터미널에서 neofetch 명령어를 치면
OS정보가 리눅스가 아닌 안드로이드로 나오죠.
아직은 조금 불안정하지만 이 X11 환경에서도 GPU 가속이 가능합니다.
예전 같았으면 virgl로 10분의1토막된 성능으로 GPU 가속이 되었지만
최근 안드로이드 호스트 Vulkan 드라이버를 Termux로 불러와서 X11 WSI를 구현해주는
vulkan-wsi-layer의 등장덕에
X11 환경에서 Vulkan 가속이 가능해졌고.
mesa zink와 clvk 조합시
OpenGL4.6(zink), OpenGL ES3.2(zink), OpenCL3.0(clvk) 등등 가속도 가능합니다.
사실상 하드웨어 비디오 디코딩/인코딩 기능빼고 모두 하드웨어 가속이 된다라고 보면됩니다.
그 덕분에 크로미움 브라우저에서 WebGL 가속도 아주 잘작동하고.
(퍼포먼스가 삼브랑 거의 비슷합니다. 크롬보단 좀 떨어짐)
안드로이드가 리눅스 커널을 사용하고 있고 Termux를 통해 X11 환경이 구축된 덕분에
유명 리눅스 프로그램들이 Termux 네이티브용으로 빌드되기도 했습니다.
블렌더3D도 Termux 네이티브용으로 존재하며
vulkan-wsi-layer + mesa zink 22.0.5 조합 시 아주 쾌적하게 사용 가능합니다.
proot 컨테이너 리눅스에서 돌아가는 프로그램이 아니라 오버헤드도 없는
찐 네이티브라서 CPU를 풀로 갈궈서 렌더링이 가능합니다.
김프도 Termux 네이티브로 존재하지만
한글을 미지원해서 속편하게 proot 데비안 컨테이너에 설치된 김프를 불러다가
사용하고 있습니다.
네
Termux 네이티브 XFCE4 데스크탑에선 Termux로 빌드된 프로그램을 실행하는거 뿐만 아니라
proot 컨테이너에 설치된 리눅스 프로그램을 로그인하지 않고 바로 실행할 수 있습니다.
즉 안드로이드 X11 환경에서
WSL2 및 크롬OS 처럼 리눅스 프로그램만 구동 방식과 비슷한겁니다.
(애네도 컨테이너에 설치된 프로그램만 따로 실행하는 방식이죠)
스냅드래곤 아드레노6xx/7xx 시리즈를 제외한
GPU들은 proot 환경에서 사용 가능한 GPU 가속은 virgl이 한계 입니다.
하지만 2D 프로그램 실행하는데 virgl이면 충분하기에
블렌더3D 같은건 Termux 네이티브로 실행하고 김프, 리브레오피스 같은건 proot로 실행하면 딱입니다.
잉크스케이프 같은 경우도 Termux 네이티브로 빌드되었지만
한국어 미지원 때문에 역시 proot 데비안 컨테이너에 설치된걸 가져와서 실행하고 있습니다.
rawtherapee는 Termux 네이티브 용으로 설치했는데
proot보다 훨씬 빠르고 쾌적합니다.
보정 공부좀 해봐야겠네요....
KolourPaint와 Audacity 같은 경우도
proot 데비안 컨테이너에 설치된걸 가져다가 실행하고 있습니다.
VLC가 Termux 네이티브로 빌드되었기 때문에
동영상 감상도 가능합니다.
아쉽게도 Termux에선 안드로이드 비디오 디코딩 기능을 사용할 수 없어서
CPU + OpenGL 렌더러 빨로
H.264/AVC 기준 1080p@60fps, 4K@30fps, 4K@60fps 재생정도가 마지노선입니다.
크로미움 브라우저에서도 유튜브 재생 시 비디오 디코딩을 미지원하니
4K@30fps가 마지노선이더군요.
어차피 비디오는 안드로이드에서도 감상 가능하고
일반적인 1080p는 전혀 문제 없습니다.
fcitx5를 통해 한글 입력도 잘 지원됩니다.
proot 데비안 컨테이너에 설치된 리브레오피스를
Termux XFCE4에서 실행한 모습입니다.
아주 잘작동합니다.
그나저나 이놈의 리브레오피스 기능은 참 좋은데
윈도우나 리눅스나 정말 느리네요 ㅡㅡㅋ
터미널에서 직접 proot 데비안 컨테이너 로그인도 가능합니다.
저렇게 로그인한 상태에서 명령어 입력하는 식으로
proot 프로그램을 실행하는것도 가능하고
아니면 Termux XFCE4 애플리케이션 메뉴에 아예 proot 컨테이너에 설치된 리눅스 프로그램을 추가해서
GUI로 쉽게 실행할 수 있습니다.
정리하면 이렇습니다.
<주요 기능>
- Termux로 안드로이드에서 X11 환경을 만들고 XFCE4 데스크탑을 사용 (찐 네이티브 방식임!)
- 아직 불안정하지만 Vulkan1.3, OpenGL4.6(zink), OpenGL ES3.2(zink), OpenCL3.0(clvk) 가속 가능
- WSL2/크롬OS 마냥 해당 환경에서 proot 컨테이너에 설치된 리눅스 프로그램을 바로 실행 가능
드디어....
제가 갤럭시S3 시절부터 꿈꿔 왔던 모바일 컴퓨팅 솔루션이 완성되었습니다.
과도기의 아트릭스와 사라져버린 리눅스 온 덱스 거치고나서
정말 오래걸렸네요.
물론 단점도 있습니다.
1. Termux 네이티브 XFCE4 데스크탑 환경에선 한국어 미지원
이유는 안드로이드의 bionic libc가 locales를 미지원합니다.
보통 리눅스는 glibc 기반으로 locales를 지원하고 여러 언어로 변경 가능하죠.
근데 윈도우나 맥을 일부러 영어로 쓰시는분들도 계시고 XFCE4 세션 자체가
복잡한 데스크탑 환경은 아니라서 문제될건 없습니다.
재밌는건 강제로 한국어 로케일 변수 추가하면 XFCE4에서 일부가 한국어로 보인다는 점입니다 ㅋㅋㅋ
Termux 네이티브로 빌드된 파이어폭스나 크로미움도 한국어로 표시되구요 ㅋㅋㅋㅋ
신기하더군요.
2. USB 스토리지 인식 미지원
이건 안드로이드 정책 및 보안 이슈 때문에 루팅된 디바이스가 아닌 이상
Termux XFCE4 상에서 USB 스토리지가 인식되지 않는다고 합니다.
우회하는 방법은 있습니다.
USB 스토리지 연결 후 사용할 파일을 안드로이드 저장소로 옴기고
XFCE4에서 그 옴긴 파일을 사용하는 식으로 간접적으로 사용 가능합니다.
3. root 권한 프로그램 사용불가
Termux 네이티브용 프로그램이든 proot 리눅스 컨테이너의 프로그램이든
호스트 디바이스가 루팅되어있지 않는 이상 root 권한이 필요한 프로그램은 사용 불가 입니다.
하지만 저의 사용패턴에선 아직까지 문제되거나 안돌아간 프로그램은 없었던거 같네요.
아...딱 하나있다 fuse가 설치해도 작동하지 않았습니다 ㅡㅡㅋ
이제 남은건
1. Termux 네이티브용 비디오 편집기 등장
유명한 리눅스 프로그램들이 Termux용으로 빌드되었지만 아직 비디오 편집기가 없습니다.
proot 컨테이너에서 제대로된 비디오 편집기를 사용하려면 OpenGL3.3 이상 지원이 필수인데
아드레노를 제외한 GPU들은 virgl로만 가속이 가능해서 OpenGL2.1이 한계 입니다.
하지만 곧 유명 오픈소스 비디오 편집기인 Shotcut이 Termux 네이티브용으로 빌드될거라
해결될듯합니다.
2. vulkan-wsi-layer 안정화 및 mmap32/mmap64 추가
안드로이드 호스트 Vulkan 드라이버를 로드하고 X11 환경을 구현해주는
위의 레이어는 아직 불안정합니다.
그리고 wine에서 제대로 게임을 실행하려면 mmap32/mmap64 지원도 필요하구요.
2년전에 Termux에서 GPU 가속 상상도 못했는데 이정도 발전한거보면 이것도 이제 곧입니다.
wine에서 안드로이드 호스트 Vulkan 드라이버로 스팀 게임을 구동할 날이 멀지 않았습니다.
3. virgl 성능 개선
사실 아드레노 시리즈는 proot 컨테이너에서 dri3 패치된 mesa turnp 쓰면되지만
다른 GPU들은 사정이 여의치 않습니다.
말리나 엑스클립스는 proot 환경에서 virgl을 써야하는데
일반적인 2D 프로그램 돌리는데 충분하지만
안드로이드 EGL 드라이버가 WSI를 미지원하다보니
virgl에서 2D/3D 사용 시 CPU를 엄청 갈굽니다....
사실상 안드로이드 EGL을 통한 virgl은 반 SW 가속이나 마찮가지 입니다.
그래서 성능이 10분의1이 나오는거구요.
하지만!
몇달전 제가 Termux git에 virgl 최신 버전 빌드좀 해달라는 스노우볼을 굴린덕에
중장기적으로 Termux용 virgl 성능 개선 프로젝트가 시작되었습니다.
바로 AHardwareBuffer를 통해 dri3 구현해서 성능을 올린다는것인데
이러면 적어도 일반적인 virgl처럼 네이티브의 70% 성능 이상은 나와줄것이라
비약적인 성능 향상이될것으로 보입니다.
중장기 프로젝트라 당장은 어렵지만 그래도 기대되네요.
대충 이정도입니다.
제가 아직 Termux용 hangover-wine에서 프로그램 설치를 실패하고 있는데
다음 버전 빌드때까지 기다리던가 아니면 ARM64EC 기본 활성화 때 까지 기다려봐야겠네요.
proot 컨테이너를 통해서도 wine 구동이 가능하지만 오버헤드가 전혀 없는
Termux 네이티브 환경에서 wine을 사용하는게 목표입니다.
지금도 2400정도만 되어도 사용 환경이 엄청 쾌적한데
내년 출시하는 AP는 더 기대됩니다.
원래는 proot 리눅스 설치법을 올리려고 했다가
Termux XFCE4 솔루션을 발견해서 이거 올리고 겸사겸사 hangover-wine 설치까지 같이 올리려고
hangover-wine에서 윈도우 프로그램 설치 이슈 해결하려했는데
그냥 Termux XFCE4 구축법 먼저 올려도 될거같네요.
스크린샷도 다 찍어놓아서 정리만 하면되는 상황입니다.
게다가 proot 리눅스 보다 설치도 훨씬 간단합니다.
Termux XFCE4 설치할때 proot 데비안 컨테이너도 알아서 설치되거든요.
조만간 정리하겠습니다.
Hoxi 노션 강의는 언제 완성될까요?? ㅠㅠ