Termux는 안드로이드에서 리눅스를 구동하는데 매우 편리한 앱입니다.

기본적으로 CLI만을 사용하지만 리눅스라는 특성상 여러 꼼수를 사용하면 GUI도 사용가능합니다.

 

하지만 제가 사용하고자 하는 것은 오래된 스마트폰을 라즈베리파이가 그랬던 것처럼 Python개발용으로 사용하는 것입니다. 특히 아무래도 개발용이기에 Python을 설치하는 것을 중시합니다.

우선 설치하고 Termux를 켜는 것으로 리눅스 구동이 바로 되고 백그라운드에서 실행되기까지 하기 때문에 상당히 안전하게 구동 할 수있습니다. (배터리 관리 프로그램이 Termux를 죽일수도 있는데 그걸 방지하는 설정을 꼭 합시다.)

 

Termux는 https://f-droid.org/packages/com.termux/여기서 다운로드 가능합니다

 

Termux | F-Droid - Free and Open Source Android App Repository

Terminal emulator with packages

f-droid.org

아래에 보시면 APK다운로드가 있는데 해당 APK파일을 다운로드받아 스마트폰에 설치하는 것으로 바로 리눅스 환경을 사용해볼 수 있습니다.

다만, Android 7이상을 요구하기 때문에 제가 쓰고 있던 구형 스마트폰은 Android6라 실행이 안 되지만 Termux 자체는 오픈소스이므로 Android 6에 맞추어 재 컴파일 하면 실행이 되었습니다.

 

혹은 레딧의 한 유저가 올려놓은 앱을 사용해도 됩니다. https://www.reddit.com/r/termux/comments/eoiics/trying_to_install_on_android_6/

 

trying to install on android 6

I have an old t-mobile g3. it has broken screen (so can't update OS using root since there is no way to mirror screen on my laptop on before...

www.reddit.com

Termux::Boot는 Termux가 실행될때 자동 실행이 되게끔 해주는 애드온입니다. 설치해두면 매우 편리합니다. 다만, 노가다가 더 편리할 수도 있으니 이건 넘어갑시다.

 

Termux를 실행하면 Terminal Emulator같은 앱이 뜨면서 CLI 리눅스 환경을 쓸 수 있습니다. 다만, 다른 배포판들이랑 명령어가 조금 다릅니다.

패키지 설치 명령어는

pkg install (패키지 이름)

 

우선 내부 스토리지 접근의 경우

termux-setup-storage

 

위 명령어를 사용하면 ~/storage 폴더가 생기면서 스마트폰의 내부 스토리지에 접근이 가능해집니다.

특히 ~/storage/shared 는 우리가 스마트폰을 쓰면서 죽어라 들락날락하는 위치이므로 유용하게 사용이 가능합니다.

 

이것 만으로도 훌륭한 리눅스환경이지만 유저랜드가 역시 좀 부족합니다.

현재 termux는 공식 서버와 bintray등에서 서비스되는 저장소등이 있으나 일부 앱들이 실행이 안 되고 있습니다. 그리고 디렉토리 구조 문제로 일부 호환성문제가 있습니다. 그래서 우분투나 데비안, 아치, 페도라 같은 환경을 따로 구축해서 구동하는 것을 추천합니다.

 

termux위에 우분투 유저랜드를 구축하면 그냥 우분투 ARM버전을 쓰는 방식으로 apt 명령으로 편하게 사용이 가능합니다.

 

https://github.com/MoorDev/termux-ubuntu

 

GitHub - MoorDev/termux-ubuntu: Ubuntu chroot on termux

Ubuntu chroot on termux. Contribute to MoorDev/termux-ubuntu development by creating an account on GitHub.

github.com

https://github.com/Neo-Oli/termux-ubuntu 여기 있던 스크립트를 일부 수정해서 21년 현재 지원이 되는 18.04와 20.04 버전이 설치가 가능하게끔 스크립트를 만들어 놓았습니다.

 

우분투 환경을 만드는 방법은 다음과 같습니다. 우선 wget과 필수적인 proot가 없으므로 wget과 proot를 설치합니다.

 

우선 ~/로 접근한다음 (퍼미션 문제)

cd ~/

pkg install wget proot

wget https://raw.githubusercontent.com/MoorDev/termux-ubuntu/master/ubuntu-20.04.sh

bash ubuntu-20.04.sh

 

위와 같이 명령어를 치면 무언가 쭈르르륵 다운받고 압축풀고 하면서 마지막에 ./start-ubuntu.sh 를 실행하면 된다고 뜹니다.

(실제 디렉토리는 ~/ubuntu-fs 가 됩니다.)

실제로 ./start-ubuntu.sh를 실행하면 우분투환경으로 바뀌면서 우리에게 익숙한 apt를 쓸수 있게 됩니다. 디렉토리 구조도 문제 없고 심지어 Xorg와 VNC서버를 설치한 후에 VNC로 접근해서 GUI도 볼 수 있습니다.

 

이제 파이썬을 설치해봅시다.

apt install python3 python3-pip

 

이제 익숙하다못해 편리한 python3와 pip를 쓸 수 있게 되었습니다. 다만 현재 환경은 ARM이므로 기존에 사용하던 AMD64와 저장소도 다르고 라이브러리도 다릅니다. 딥러닝쪽인경우에는 고생깨나 해야 합니다.

딥러닝 라이브러리는 ARMv7(32비트)를 지원하지 않아서 구형 스마트폰에선 구동이 되지 않습니다. 다만 라즈베리파이3가 32비트이고 아직 많이 쓰이기 때문에 라즈베리파이3용으로 만들어진 많은 라이브러리를 가져와서 구동이 가능합니다.

 

대표적인 것이 onnx runtime의 라즈베리파이3 버전인데 (https://github.com/nknytk/built-onnxruntime-for-raspberrypi-linux/tree/master/wheels/buster) 여기있는 것을 가져와서 써도 됩니다.

 

그리고 Termux에서(./start-ubuntu.sh를 하지 않은) SSH를 설정하는 방법은

pkg install openssh

이걸로 SSH 서버를 설치하고

 

whoami 명령으로 현재 내 이름을 찾습니다. 보통 u_aXXX 형태로 되어 있습니다.

그 다음 passwd 명령으로 패스워드를 설정합니다. 이 패스워드가 곧 SSH접속 패스워드가 됩니다.

 

이제 SSH접속하는 곳에서

ssh u_aXXX@(스마트폰IP) -p 8022

이렇게 하면 패스워드를 물어볼것이고 termux 환경에 SSH로 접속이 됩니다. 포트포워딩을 하거나 하면 멀리서도 접속이 가능해지겠죠!

 

Termux에 우분투 환경을 갖추고 numpy ARM버전을 설치하는 중. 너무 편리해서 말이 안 나온다.

이런식으로 구형 스마트폰을 훌륭한 개발 플랫폼으로 만들 수 있습니다. Termux로 ARM 리눅스를 한번 구축해보세요!

,

Virtualbox는 가상머신 프로그램이고 여기저기에서 많이 쓰이고 있습니다.

하지만 리눅스에서 많이 쓰이는 용도는 윈도우용 프로그램을 가상머신 위에서 실행하는 용도입니다.

 

그래서 저도 제가 자주 쓰는 프로그램(대부분 CAD류의 설계프로그램)을 Virtualbox위에서 구동시켜서 사용합니다.

 

이번에 시스템 업그레이드를 하면서 기존 Home 파티션을 그대로 가져오는 방식을 사용하면서 VirtualBox의 이미지 및 머신 설정도 함께 가져왔습니다. 

 

그런데 이전에는 AMD시스템이었고 이번에 Intel시스템으로 바꾸면서 문제가 생겼습니다.

 

기존에 저장된 머신이 X86_CPUID_AMD_FEATURE_EDX_AXMMX 오류를 내면서 시스템이 돌아오지 않는 것입니다.

호스트가 AMD에서 Intel로 바뀌었다고 가상머신이 오류가 난다

저는 빠른 윈도우 시스템을 가져오기위해 저장기능을 자주 사용했는데 이게 도리어 문제를 일으킨겁니다.

 

그래서 방법을 찾아보니 저장된 상태가 아니라 시스템이 꺼진 상태로 만든 뒤에 실행하면 문제가 없다고 합니다.

 

Win7x64 머신이 현재 저장된 상태로 되어 있다. 그리고 이로인해 문제가 생기는 중

방법은 그냥 터미널에서

VBoxManage discardstate "머신이름"

이렇게 하면 된다고 합니다.

https://stackoverflow.com/questions/46775652/cannot-resume-saved-virtualbox-state

 

Cannot resume saved Virtualbox state

I get the following error after upgrading via Migration Assistant my laptop from a 2-core to a 4-core processor: cpum#1: X86_CPUID_FEATURE_ECX_MOVBE is not supported by the host but has already

stackoverflow.com

간단하네요.

 

XP머신은 이미 꺼짐상태로 만들었고 Win7x64머신도 마찬가지 작업 중

이 명령을 사용하면

이렇게 전원꺼짐 상태로 만들어지게 되고 시작을 누르면 부팅화면이 뜨면서 문제없이 실행이 됩니다.

다만 가상머신에서도 메인보드와 CPU가 바뀐것과 같은 상황이므로 무슨일이 벌어질지는 아무도 모릅니다. 특히 HAL이 없어서 메인보드 바꾸면 포맷이 당연했던 XP같은 놈이 문제입니다. 그런데 그냥 CPU만 바꾼상태로 인식된건지 문제없이 부팅됩니다.

 

그리고 스냅샷을 되돌리면 그 상태 그대로 돌아오므로 부팅이 완벽히 된 상태에서 스냅샷을 다시 찍습니다.

 

그러면 OK

Win7 무사히 부팅 완료! 그리고 바로 업무가 가능해졌다.

,

예전에 무선모니터라는게 잠깐 나온적이 있습니다.

말그대로 선없는 모니터란건데요. 요즘은 굳이 필요성을 못 느껴서 쓰는 사람을 못 봤습니다.

그런데 https://www.spacedesk.net/ 이물건 접하고 WindowsPC에 무선 모니터를 붙였습니다...

물론 반응속도는 게임까지는 어려운 수준이지만 Android화면에 Windows화면이 뜨니 이건..거의 신세계입니다. AutoCAD작업은 무리없네요.

사실 제 PC는 모니터없이 산지 꽤 됐습니다. 대신 HDMI to AV를 하나 달아서 가짜 모니터를 하나 달고 VNC로 연결해서 썼습니다. 밖에서는 리눅스PC를 들고다니고 Windows환경이 필요하면 VNC로 연결을 했습니다.

근데 집에서도 VNC로 연결하니 답답합니다. Parsec이라던가 Steam Link같은 부드러운 물건도 있지만 저희집 네트워크가 그리 좋은 편은 아니라서 조금 애매하네요.

그러다 Spacedesk로 모니터 대용으로 쓸만하다는 것을 알게되었는데... 진짜 쓸만합니다!

WindowsPC에

서버는 Windows10과 Windows8.1을 지원한다. 아마 Windows11도 지원이 될것이다.

서버프로그램을 설치합니다. Windows10과 Windows8.1을 지원합니다. Windows11도 아마 지원 할수 있을겁니다. 저는 Windows10 RS3 LTSC를 쓰고 있는데 최신빌드도 문제없을겁니다.

Nvidia그래픽 사용자는 461.09 이상을 설치하라고 하는군요. 드라이버 충돌위험이 있다고 합니다. 저는 AMD라 그런 문제는 없군요.

그리고 안드로이드 태블릿이나 윈도우 태블릿에서 Spacedesk앱을 설치합니다. Playstore에서 검색하니 바로 뜨는군요. 아니면 APKpure같은 사이트에서 받아서 사이드로딩 될것 같습니다.

Playstore에 안드로이드 앱이 있다 이걸 쓰도록하자


그리고 실행하면 멀티모니터로 잡힙니다. 저는 VNC로 작업하기에 Spacedesk와 VNC에 동일한 화면이 뜨도록 복제모드(Windows+P 버튼을 눌러서 복제모드가 될때까지 계속 누르기)로 바꿨습니다.

그러니까 태블릿의 터치를 Windows가 받아줍니다! 기존 구형 태블릿PC가 Windows태블릿으로 변하는 순간이었습니다.

심지어 반응속도도 나쁘지 않습니다. 굉장히 만족스러워지네요. WindowsPC가 게임용에 준하는 녀석이라 게임도 해봤는데 약간 반응이 느릴뿐이군요.

엄청난 녀석인 것 같네요. 다만 리눅스는 왜 지원이 안 될까요...?

,