우분투에서 안드로이드 게임을 하거나 안드로이드 에뮬레이터를 돌리는 것은 꽤나 어렵습니다. 기껏해야 Genymotion정도가 안드로이드를 돌리는데 겨우 쓸만합니다.
그리고 대부분 안드로이드 게임은 ARM용이기 때문에 잘 돌아간다는 보장도 없습니다. PC에서 모바일 게임을 하는게 이렇게 어렵습니다. 그리고 스마트폰과 PC와의 연동도 그다지 매끄럽지 않습니다. 그래서 삼성과 마이크로소프트가 Your Phone이란 앱을 통해서 Windows와 연동할수 있는 서비스를 내놓았는데 반응이 썩 좋지는 않습니다.
위의 페이지를 들어가면 삼성 휴대폰과 Windows를 연동할 수 있는 방법에 대해 설명하고 있습니다. 문제는 역시 Windows와 삼성 스마트폰만 가능하다는 것입니다. 우분투는 사용 할 수 없는 기능이지요.
예전에 비슷한 것으로 삼성Flow라는 것이 있었는데 이것조차 Windows만 사용가능했습니다. 즉, 우분투 사용자들은 손만 쪽쪽 빨아야만 했었습니다. 그런데...
GenyMobile에서 SCRCPY란 오픈소스 툴을 내놓았습니다. 현재 버전은 1.16입니다. 써본 결과...
신세계입니다!!!!!
저기 있는 Your Phone보다 100배 더 반응속도가 좋습니다. 오픈소스이면서 거의 모든 환경을 지원해 준다는 것도 좋구요. LG나 샤오미같은 거의 모든 안드로이드 환경을 지원하는 것도 좋습니다.
scrcpy를 사용하면
요렇게 스마트폰화면이 미러링이 됩니다. 그리고 마우스로 클릭하면 터치도 됩니다!!! 두둥!!!
혹시나 게임도 돌려봤는데
스마트폰 성능에 따라 다르겠지만 매우 부드럽습니다. 1280x1080으로 60fps는 나오는 것 같네요. 제가 사용하는 휴대폰은 삼성에서 보급형으로 내놓은 A50입니다. 성능은 요즘 나오는 플래그쉽에 비해 좋지 않은 편이지요. (그리고 테스트한 게임은 꽤 성능을 요구하는 게임입니다.)
그리고 이건 거의 모든 리눅스 배포판에서 사용가능하며 macOS와 Windows에서도 됩니다. 그리고 스마트폰은 안드로이드5.0 이상버전이기만 하면 됩니다. 루팅도 필요없습니다.
macOS나 Windows에서 scrcpy를 사용하는 것은 다른 곳에서도 많이 소개하고 있으니 저는 우분투에서 이것을 사용 방법을 소개하겠습니다.
우선 우분투에서 scrcpy를 설치해야 합니다.
우분투 16.04 이후 snap이 기본적으로 설치 되어 있기 때문에 이를 이용합니다.
터미널에서
sudo apt install android-tools-adb
sudo snap install scrcpy
설치가 끝났습니다.
이제 안드로이드 휴대폰에서 설정을 하면 됩니다.
우선 개발자 옵션을 활성화해야 합니다. 보통 개발자 옵션은 빌드번호를 여러번 터치하면 열리게 되는데 이것도 못 들어가시는 분들이 있더군요.
안드로이드 휴대폰에서 설정에 들어갑니다.
그리고 설정을 뒤지다 보녀 휴대전화 정보가 있습니다. 이쪽으로 들어갑니다.
삼성휴대폰의 경우에는 소프트웨어 정보가 따로 있는데 다른 업체에서 제작한 경우에는 소프트웨어 정보 없이 바로 다음 페이지가 나오기도 합니다. 안드로이드 버전 관련 페이지를 찾으시면 됩니다.
보통 이렇게 나올 텐데 여기서 빌드번호를 미친듯이 터치해주시면 아래에 개발자 모드 어쩌구 하면서 메시지가 뜰겁니다. 여기서 "개발자가 되셨습니다!" 라는 메시지가 나올때까지 두드려주세요. 그리고 다시 설정페이지로 돌아갑니다.
그러면 제일 아래쪽 혹은 제일 마지막 페이지에 개발자 옵션이 있을 겁니다.
여기서 USB디버깅을 활성화 해주세요. 모든 안드로이드 스마트폰은 개발용으로 쓰일 수 있기 때문에 디버깅 옵션이 있습니다. 디버깅 옵션이 없다면 그 폰은 정말 꽉막힌 제조사에서 만든 것이니 다음에는 구매를 고려하지 않으시는 것이 좋습니다. (삼성이나 LG, HTC같은 유명 업체는 무조건 해당 옵션이 있습니다.)
이제 휴대폰을 PC와 USB로 연결하고 터미널에서 다음과 같이 명령합니다.
scrcpy
처음에 오류가 날 수 있는데 이때 휴대전화의 화면을 보면 디버그 관련하여 해당 PC에서 승인 할것인지 물어봅니다. 확인을 해주시고 다시 scrcpy 명령을 치면...
여러분의 스마트폰 화면이 PC에서 뜨게됩니다!!!!
다만, 전화를 PC에서 받을 수 없고 결국 휴대폰을 사용해야 하며 (블루투스 이어폰을 쓴다면 대체가 가능하긴 하겠죠!) 소리도 PC에서 나는 것이 아니라 휴대폰에서 나온 다는 것이 한계입니다. 이건 화면 미러링을 위한 것이니 어쩔 수 없지요. 그리고 화면이 꺼지면 미러링도 당연히 멈춥니다.
하지만 이게 얼마인가요. 그리고 삼성DEX는 아직 지원이 안 되는 것 같지만 어찌어찌 하면 삼성DEX를 쓸 수 있을지도 모릅니다.
그나저나 미러링 속도가 게임도 가능할정도로 빠릅니다. 필요하다면 그냥저냥 쓸만한 안드로이드 스마트폰이나 안드로이드 개발보드를 PC에 물려서 안드로이드 환경과 PC환경을 함께 사용할 수 있겠네요.
만약 PC와 안드로이드 스마트폰을 블루투스로 연결하면 휴대폰 소리가 PC로 전달됩니다. 이제 모바일 게임을 PC에서 하는데에 지장이 없네요!!!
여기서 한달에 한번씩 바뀌고 있으니 정상작동이 안 된다 생각이 들면 이 페이지로 와서 다시 키를 입력하시면 됩니다.
우선 등록을 마치고 나면 이제 라이브러리를 인식 시킬 시간입니다.
libaacs 와 libbdplus라는 라이브러리가 본래 Blu-ray의 DRM을 지원하는 라이브러리입니다. 하지만 libaacs나 libbdplus는 역분석으로 만들어지는 방식이기에 아직 완벽히 DRM을 지원하지 못합니다. 그래서 MakeMKV의 라이브러리를 이용하는 것입니다.
간단하게 MakeMKV는 libmmbd라는 라이브러리를 제공하는데 이걸 libaacs와 libbdplus로 인식 시키면 됩니다.
만약 libaacs가 설치되어 있다면 지워줍니다.
sudo apt remove libaacs
그리고 우분투 64비트 기준
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libmmbd.so.0 libaacs.so.0
sudo ln -s libmmbd.so.0 libbdplus.so.0
위 3줄로 MakeMKV의 라이브러리를 VLC에서 인식 시킬 수 있게 되었습니다.
한번 VLC에서 블루레이를 열어봅시다.
미디어- 디스크 열기
아무 문제없이 재생 되는 것을 확인 할 수 있습니다. HDCP도 깨진 상태이니 모니터 문제 없이 감상이 가능합니다. 만약 aacs나 bd+ 오류가 난다면 MakeMKV가 업데이트되기를 기다리시는 것을 추천합니다. 참고로 일반 블루레이 플레이어도 펌웨어 업데이트를 게을리 하면 AACS나 BD+오류를 만날 수 있습니다.
참고로 저는 리핑하고 삽질하느라 휴가를 다 보냈는데 생각보다 쉬운 방법이 있더군요. 그리고 12만원 굳었군요.(PowerDVD 값)
예전에는 Py2exe라는 녀석이 있었지만 이건 오로지 Windows전용으로만 만들 수 있는 물건이었고 당연히 저는 좋아하지 않았습니다. Pyinstaller는 일단 Python인터프리터가 깔리는 모든 OS를 지원하기 때문에 훨씬 더 각광을 받았고 지금은 많은 곳에서 쓰이고 있습니다.
설치도 pip의 존재로 인해 쉽습니다.
pip install pyinstaller
보통 Python환경을 만들어서 쓰시는 분들은 pip정도는 쓰고 있을테니 명령어 한번에 바로 사용이 가능하다는 점에서 점수를 주고 싶습니다.
사용방법도 쉽습니다.
그냥 패키지화 할 py파일이 있는 곳에서
pyinstaller 어쩌고.py
이러면 dist폴더가 만들어지고 이 안에 필요한 라이브러리와 실행 파일이 만들어집니다. 다만 해당 명령이 실행된 OS에 따라 windows용이 만들어지고 Linux용이 만들어지고 그렇습니다. 즉, 리눅스용 패키지를 만들려면 리눅스에서 명령을 내려야 하고 Windows용을 만들려면 Windows에서 명령을 내려야 한다는 것이지요. 어쨌건 쉽습니다.
그런데...
오늘 Pyinstaller로 패키지화 하고나서 프로그램 실행이 안 되는 현상을 발견했습니다.
이상하더군요. 그냥 소스형태에서는 실행이 되는데 패키지화만 하면 실행이 안 되는 겁니다. 터미널에 떠있던 문구는 다음과 같았습니다.
ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
py2_warn이란 패키지가 없다는 의미였습니다. 저는 이미 Python3를 쓰고 있었고 오로지 Python3만으로 작업 했는데 python2경고에 관한 내용이 있다는 것이 이상했습니다.
이 문제를 찾아보니 Pyinstaller 실행시 만들어지는 spec파일을 수정해서 다시 패키지화하면 된다고 하는데 다시 하려니 너무 귀찮았습니다.
더 찾아보니 Python3.7이 나온뒤에 함께 배포되는 최신 setup_tools와 Pyinstaller가 맞지 않아 생긴 문제라고 합니다.
2020년 현재 setup_tools는 46버전입니다. 현재 이 버전은 github관련 코드를 가지고 있고 py2_warn 내용을 가지고 있습니다. 그냥 Python2는 지원기간이 끝났으니 사용을 권장하지 않는다는 내용인데 이게 도리어 문제를 일으키고 있는 것입니다.
그럼 방법은 아주 간단합니다. py2_warn이 없는 45버전 이하로 setup_tools를 깔고 Pyinstaller를 쓰는 겁니다. 어차피 다시 패키징할일은 거의 없을 것 같기에 잠시 버전을 내렸다가 다시 올리면 될 일이었습니다. 어차피 시간이 지나면 Pyinstaller에서도 해결해주겠지요.
터미널을 열고 (윈도우라면 cmd혹은 Powershell)
pip install --upgrade 'setuptools<45.0.0'
만약 리눅스라면 앞에 sudo를 붙여주세요.
이러면 44버전대의 마지막 버전을 설치해줄겁니다. 그리고 Pyinstaller를 실행하면 문제없이 패키지화된 실행파일이 실행 될 것입니다.
대부분은 Chrome을 쓰고 계실겁니다. 삼성인터넷이나 돌핀도 괜찮지만 아무래도 많은 사람들이 쓰는 브라우저가 편하죠.
그리고 요즘에는 모바일 디스플레이가 AMOLED를 주로 채용하고 있고 PC용 모니터도 OLED로 가는 추세입니다. 그런데 OLED의 단점이 바로 번인현상입니다. 소자의 수명문제로 특정 모양의 무늬가 잔상으로 남는 현상인데 OLED는 이런 문제가 심각한 편입니다. 요즘 스마트폰의 수명은 대략 3년이 한계고 그 전에 바꾸는게 대다수지만 저는 4~5년은 거뜬히 쓰기 때문에 조금은 아깝습니다.
그리고 PC용 모니터는 10년이고 20년이고 쓰는 경우가 많아서 더욱 수명이 중요하고요. LCD는 이런면에서 자유롭지만 색재현율의 한계가 OLED가 더 좋다보니 Windows에서도 다크모드가 생겼습니다.
안드로이드10을 쓰고 있다면 다크모드의 사용이 가능한데요. 모든 앱이 다크모드로 되는 것은 아니지만 기본적인 앱은 다크모드를 쓸 수 있습니다. 그건 Chrome도 마찬가지입니다.
하지만 웹페이지는 다크모드로 한다고 해도 원래색 그대로 나옵니다. CSS로 설정된 그 색을 쓰는 것이기에 웹개발자가 신경쓰지 않으면 그 색 그대로 쓸 수밖에 없습니다.
Chrome에서는 이에따라 강제 다크모드를 쓸 수 있는 옵션을 준비했습니다. 다만, 실험실기능이니 언제 없어질지 알 수없습니다.
방법은 다음과 같습니다.
크롬을 열고 주소창에 다음과 같이 적습니다.
Chrome://flags
이러면 실험실기능화면이 뜹니다. 그 다음 검색버튼을 누르고 Force Dark Mode를 검색하면
Force Dark mode for Web Content라고 뜹니다.
지금은 Disable로 되어있는데 이것을
Enabled with Selective Inversion of non-Image elements
이것을 선택합니다. 때에 따라서 이미지가 반전되기도 하기 때문에 그것을 막기위한 조치입니다.
그리고 크롬을 껐다 다시 켜면? (아래의 Relaunch를 눌러도 됩니다.)짜잔! 다크모드로 인터넷이 가능해졌습니다!
Virtualbox는 리눅스 데스크탑을 사용한다면 싫어도 써야하는 물건입니다. 그 이유야 당연히 Windows환경을 요구하는 경우가 은근히 있기 때문이지요. Wine으로 해결이 가능한 부분도 많지만 Windows 시스템 그 자체를 원한다면 어쩔 수 없습니다. 보통 궁극의 해결책이라고 표현하지요.
특히 유용한 기능중 하나가 USB Passthrough 기능입니다. 리눅스를 통하지 않고 바로 USB장치를 가상머신에 연결하게 해서 Windows드라이버만 지원하는 장치를 돌아가게 하거나 직접 Windows에서 작업 가능하도록 짜인 장비를 연결하는데에 이용가능합니다.
2015년에는 VirtualBox에 주로 WindowsXP를 사용했다면 이후 2019년까지는 Windows7이 그리고 2020년 현재에는 주로 Windows10이 가상머신에 이용되고 있습니다. 그런데 USB3.0을 지원하지 않는 WindowsXP는 그렇다 치는데 Windows7에서 USB장치가 인식이 안 되는 경우가 왕왕 있습니다.
이번에 제 노트북속도가 영 아니어서 이상하다 싶어서 점검을 하다보니 HDD의 S.M.A.R.T가 심상치 않더군요. 실패목록이 있고 배드섹터도 어느정도 있으며 대체된 섹터가 거의 다 차 있었습니다. 2014년부터 쭉 써왔으니 그럴만 했지요. 노트북이니 여기저기 들고다니기도 했고요.
그래서 이 참에 오래된 HDD도 바꾸고 SSD로 넘어도 갈겸(노트북을 새로 사기엔 이 녀석은 너무 쌩쌩합니다. 자잘한 업무에는 지장없음) 새로운 SSD를 넣었습니다.
노트북을 뜯어서 HDD를 적출하고 새 SSD를 사서 Gparted를 이용해서 파티션 복제를 했습니다.
파티션 복제는 쉬웠습니다. 라이브 리눅스를 이용하면 Gparted를 쓸 수 있고 이걸 이용하면 파티션 복제는 뚝딱이었으니까요.
그런데 문제가 있었습니다.
이상하게 SSD로 바꿨음에도 부팅속도가 영 아닌겁니다. 아니 HDD시절보다 더 느려졌습니다. 아무리 HDD라도 1분 이상을 넘긴적이 없는데 2분 이상의 부팅속도를 보이더군요. 처음엔 설정문제인가 싶었는데 알고보니 특정 SSD와 리눅스 커널간의 버그랍니다.