
강의 Termux 리눅스 강좌 3부 : Widget으로 빠른 실행/종료 설정하기
- 흡혈귀왕
- 조회 수 3898
- 2023.07.24. 01:34
Termux 리눅스 강좌 1부 : 리눅스 컨테이너 설치 및 GUI 구동하기
https://meeco.kr/Review/37391093
Termux 리눅스 강좌 2부 : GPU 가속 설정하기
https://meeco.kr/Review/37393039
드디어 리눅스 강좌 마지막편인 3부 입니다.
여기까지 오시느라 고생 많으셨습니다.
Termux로 리눅스 구축하시고 나서 실행하기와 종료하기가 굉장히
번거로우셨을 겁니다.
이번 강좌는 Termux-widget을 통해 빠른 실행과 빠른 종료를 설정하여
명령어를 입력하지 않고도 리눅스를 사용할 수 있게 할겁니다.
https://drive.google.com/file/d/1o8v0c4RDjWQX9gmYYe-fRhwbv_TBmqbh/view?usp=sharing
https://drive.google.com/file/d/1LffmcWQyNlkKzRxbMc5IoitGUNP4r5xm/view?usp=sharing
위에 있는 termux-widget.apk와 Termux-api.apk를 다운로드 후 디바이스에 설치해주세요.
$ pkg install termux-api
위의 명령어를 입력해서 termux-api 패키지를 설치해주세요.
$ mkdir .shortcuts
위의 명령어를 입력해서 termux 저장소에 shortcuts 경로를 만들어주세요.
$ echo '#!/bin/sh
리눅스 실행 스크립트 작성을 위해 위의 명령어를 입력해주세요.
[virgl 실행 스크립트]
killall -9 termux-x11 Xwayland pulseaudio virgl_test_server_android
termux-wake-lock; termux-toast "Starting X11"
am start --user 1 -n com.termux.x11/com.termux.x11.MainActivity
XDG_RUNTIME_DIR=${TMPDIR} termux-x11 :0 -ac &
sleep 3
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
virgl_test_server_android &
proot-distro login ubuntu --user 계정id --shared-tmp --no-sysvipc -- bash -c "export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4713; GALLIUM_DRIVER=virpipe MESA_GL_VERSION_OVERRIDE=4.3COMPAT MESA_GLES_VERSION_OVERRIDE=3.2 dbus-launch --exit-with-session startxfce4"' > ~/.shortcuts/실행이름
[angle-gl + virgl 실행 스크립트]
killall -9 termux-x11 Xwayland pulseaudio virgl_test_server_android
termux-wake-lock; termux-toast "Starting X11"
am start --user 1 -n com.termux.x11/com.termux.x11.MainActivity
XDG_RUNTIME_DIR=${TMPDIR} termux-x11 :0 -ac &
sleep 3
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
virgl_test_server_android --angle-gl &
proot-distro login ubuntu --user 계정id --shared-tmp --no-sysvipc -- bash -c "export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4713; GALLIUM_DRIVER=virpipe MESA_GL_VERSION_OVERRIDE=4.3COMPAT MESA_GLES_VERSION_OVERRIDE=3.2 dbus-launch --exit-with-session startxfce4"' > ~/.shortcuts/실행이름
[angle-vulkan + virgl 실행 스크립트]
killall -9 termux-x11 Xwayland pulseaudio virgl_test_server_android
termux-wake-lock; termux-toast "Starting X11"
am start --user 1 -n com.termux.x11/com.termux.x11.MainActivity
XDG_RUNTIME_DIR=${TMPDIR} termux-x11 :0 -ac &
sleep 3
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
virgl_test_server_android --angle-vulkan &
proot-distro login ubuntu --user 계정id --shared-tmp --no-sysvipc -- bash -c "export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4713; GALLIUM_DRIVER=virpipe MESA_GL_VERSION_OVERRIDE=4.3COMPAT MESA_GLES_VERSION_OVERRIDE=3.2 dbus-launch --exit-with-session startxfce4"' > ~/.shortcuts/실행이름
현재 구축된 리눅스 GPU 가속 환경에 맞게 위의 스크립트를 입력 후 Enter를 입력해주세요.
<주의 사항>
1. 계정id 입력란에 생성한 su계정을 입력해주세요.
2. .shortcuts에 저장되는 실행 스크립트 이름은 띄어쓰기 없는 영문으로 하시는것을 추천 드립니다.
(강좌는 "Ubuntu" 라는 이름으로 설정)
$ echo '#!/bin/sh
리눅스 종료 스크립트 작성을 위해 위의 명령어를 입력해주세요.
killall -9 termux-x11 Xwayland pulseaudio virgl_test_server_android
termux-wake-unlock; termux-toast "Stopping X11, virgl, etc."' > ~/.shortcuts/종료이름
위의 스크립트를 입력 후 Enter를 입력해주세요.
<주의 사항>
.shortcuts에 저장되는 종료 스크립트 이름은 띄어쓰기 없는 영문으로 하시는것을 추천 드립니다.
(강좌는 "Exit" 라는 이름으로 설정)
위젯을 통한 빠른 실행 종료 스크립트 설정이 완료되었습니다.
설정한 스크립트 수정은
$ cd .shortcuts
$ nano 스크립트이름
을 통해 수정하면 됩니다.
위젯 실행을 위해 위젯 리스트에서 Termux:Widget을 찾아서 폰 화면에 배치해주세요.
폰 화면에 배치된 Termux:Widget의 위젯 입니다.
위젯에서 아까 설정한 실행 스크립트와 종료 스크립트를 확인할 수 있습니다.
Termux 애플리케이션 정보에서
- 다른 앱 위에 표시를 '사용 중'
- 출처를 알 수 없는 앱 설치 '허용됨'
- 배터리 '제한없음'
으로 설정해주세요.
Termux-x11 애플리케이션 정보에서도
배터리 '제한없음'
으로 설정해주세요.
이제 모든 준비가 끝났습니다!!!!
다음은 실행방법 입니다.
갤럭시탭S 같은 태블릿에선 그냥 위젯에서 실행 스크립트를 선택하면 바로 실행되지만
DeX모드는 위젯을 미지원합니다.
하지만!
그럼에도 위젯을 통한 빠른 실행과 종료는 가능합니다!
먼저 Termux-X11을 실행해주세요.
다음은 폰 화면의 Termux 위젯에서 실행 스크립트를 터치하세요.
짜짠! 리눅스 xfce4 세션이 바로 실행되었습니다!!!
이제 불필요하게 명령어 일일이 입력하면 실행하실 필요가 없습니다!
종료하는 법은 간단합니다.
프로그램 -> 로그아웃으로 리눅스를 로그아웃 후
그 후 위젯에서 종료 스크립트를 터치하면 virgl 서버와 xwayland 서버 오디오 서버 등등이
종료처리 됩니다.
x11 서버 종료까진 조금 시간이 걸려서 위젯에서 종료 버튼을 터치 후 1분 뒤에 완전히
종료되는 경우가 많습니다.
간혹 가끔씩 종료가 제대로 안되는 경우가 있는 그럴 때는 Termux 애플리케이션 정보에서
'강제 중지'를 해주시면됩니다.
리눅스를 상시 사용하실거면 실행 후 Termux-X11만 닫았다 열었다가 하는식으로 사용할수도 있습니다.
Termux-x11가 계속 실행되고 있는 상태에선 배터리 업진살 살살녹네 식으로 엄청 잡아 먹지만
저렇게 닫는거 만으로도 배터리를 절약 가능합니다.
종료 스크립트로 리눅스를 종료하지 않는 이상 Termux에서 리눅스는 여전히 실행 중이라
Termux-x11을 다시 실행하면 리눅스 GUI를 다시 불러올 수 있습니다.
클라이막스로
리눅스에 설치해서 사용하기 좋은 프로그램들에 대한 소개입니다.
[GIMP]
$ sudo apt install gimp language-pack-gnome-ko-base
유명 이미지 편집툴인 GIMP입니다. 포토샵 부럽지 않은 툴로 Termux 리눅스 환경에서
아주아주 잘 구동됩니다.
[Rawtherapee]
$ sudo apt install rawtherapee
RAW 이미지 편집 툴인 Rawtherapee 입니다.
S23U로 촬영한 50MP RAW 보정 편집 아주 잘되더군요.
[kolourpaint]
$ sudo apt install kolourpaint kdenlive
리눅스용 그림판으로 불리우는 kolourpaint 입니다.
간단한 이미지 편집하기엔 이거만한게 없습니다.
약간의 의존성 이슈가 있어서 (UI가 요상하게 출력되는) kdenlive를 같이 설치해주면 좋습니다.
kdenlive는 virgl 환경에서 실행 불가합니다. (튕겨버림)
[Pencil2D]
$ sudo apt install pencil2d
오픈소스 2D 애니메이션 툴인 Pencil2D 입니다.
나름 유명한 벡터 기반 애니메이션 툴로 아주 쾌적하게 돌아갑니다.
애니메이션 제작 능력이 있으신 분들은 꽤 재밌는 게 사용하실 수 있을 겁니다.
[Okular]
$ sudo apt install okular
리눅스용 PDF 뷰어로 꽤 요긴하게 쓰고 있습니다.
[Libreoffice]
$ sudo add-apt-repository ppa:libreoffice/ppa
$ sudo apt update
$ sudo apt install libreoffice libreoffice-help-ko
리브레오피스 입니다. 말이 필요없는 오픈소스계의 MS오피스죠...
용량이 크고 이미지가 많은 PPT가 아니라면 꽤 쾌적하게 쓸수있습니다.
폰트의 경우 /usr/share/fonts 경로에 넣어주심 됩니다.
[VLC]
$ sudo apt install vlc*
비디오 플레이어인 vlc 입니다.
virgl이 하드웨어 비디오 디코딩은 미지원하지만 GL렌더러만으로도
최대 4K@60fps H.264/AVC까지는 재생이 됩니다. (비트레이트가 높아지면 힘들어함)
일반적으로 배포되는 1080p@30fps나 1080p@60fps H.264/AVC는 아주 잘 재생되기에
영상 감상하기에는 큰 문제는 없습니다.
[Chromium]
$ sudo apt update
$ sudo apt install chromium
$ sudo sed -i 's/chromium %U/chromium --no-sandbox %U/g' /usr/share/applications/chromium.desktop
URL이 있을 경우 명령어 입력이 꼬여서 저렇게 이미지로 대체합니다 ㅠㅠ
크로미움 브라우저 설치 방법입니다.
데비안10의 소스 Repo를 추가해서 설치하는 방법인데
이런 방법을 하는 이유는 Termux 리눅스에서 snap 스토어가 작동을하지 않아서 그렇습니다.
설치 후 --no-sandbox 옵션을 추가해야지 브라우저가 구동됩니다.
크로미움 브라우저 버전은 꽤 구버전이지만 파이어폭스 보다 빠른 로딩 속도를 보여주고
유튜브 재생 시 수직동기화 문제로 갈라지는 이슈도 없습니다.
다만 WebGL은 미지원합니다.
웹서핑과 유튜브용으로 적당할것으로 보이네요.
데비안12의 소스 Repo로 설치하면 크로미움 113 버전으로 설치 가능하고
유튜브에서 화질이 8K 이상 활성화되고 S23U는 4K까지도 CPU로 디코딩합니다.
문제는 데비안12로 소스 Repo로 설치하면 파이썬을 버전업을 해버리는데
이걸 버전업하면 패키지가 완전히 꼬여버려서 조자꾸(...) 나버리는 문제가 있습니다 ㅠㅠ
그러기에 데비안10의 소스 Repo에서 설치를 진행하는 것인데 크로미움 설치 완료 후
$ nano /etc/apt/sources.list
nano 에디터로 sources.list을 불러와서 추가되었던
를 지우거나 주석처리 해주셔야합니다.
안그러면 나중에 apt install 명령어 시 데비안10 Repo의 패키지들과 충돌나서
설치가 안되는 이슈가 있습니다.
<후기>
이상으로 리눅스 강좌를 마치겠습니다 :)
1부, 2부, 3부 긴글 읽어주셔서 감사합니다.
완벽한 트릴로지 완성이네요. ㅎㅎㅎㅎㅎ
삼성이 리눅스 온 덱스 개발을 취소했을 때 그 후유증이 길게 갔고 심지어 올 6월 전까지만해도
계속 있었습니다.
그러다가 Termux의 존재를 알게되었습니다.
리눅스 온 덱스처럼 리눅스를 컨테이너 방식으로 구동하고
Termux-X11로 GUI 호출이 가능하고 미약하게나마 virgl로 GPU 가속도 지원해서
사실상 리눅스 온 덱스의 완벽한 상위호환입니다.
그덕에 리눅스 온 덱스에 대한 미련을 완전히 떨쳐버릴 수 있었습니다.
이것의 장점은 딱히 지원이나 개발이 끊길 가능성이 없고
Any 디바이스에서 구동 가능하다는게 장점이고 여전히 개발중입니다.
특히 GPU부분은 성능을 개선하기 위해 Termux github에서 지속 연구중이라
앞으로가 더욱 기대됩니다.
제일 베스트는 안드로이드 호스트 GPU의 Vulkans 드라이버를 proot-dsitro로
패스쓰루해서 zink로 OpenGL 가속을 구현하는 방식일듯한데 이건 차차 지켜봐야할거같네요.
물론 단점도 있습니다.
호스트 커널을 공유 게스트 OS로 구동되는 방식인지라 큰 문제 없어보이지만
snap store나 fuse 같은건 호스트 디바이스의 루트 권한이 있어야 작동한다고 합니다.
그래도 일반적인 사용 용도에선 전혀 문제될건 없고 남은 과제는
더 나은 GPU 가속 솔루션과 호스트 디바이스의 CPU 성능이 계속 올라가는 겁니다.
2024년에 출시된 디바이스들의 CPU 성능이 Apple M1급 정도일것으로 추정되어서
내년 디바이스들이 리눅스 사용하기 최적의 성능을 제공할것으로 보입니다.
리눅스 구축 강좌는 여기서 끝나지만 간간히 리눅스 사용성 개선 및 팁에 대한 강좌는
시간되면 계속 포스팅할 예정입니다!!
긴 글 읽어주셔서 다시한번 감사드립니다!
아디오스!
















2024년...그럼 탭s10을 기다려야겠군요