제가 사용하는 노트북은 오래된 관계로 기가비트랜이 달려있지 않습니다. 오로지 100M급만 사용이 가능합니다. 덕분에 광랜을 달아도 제대로 된 속도 경험이 힘들었는데 이참에 기가비트 랜으로 갈았습니다.


저 포장지는 떼어도 되는데 그냥 새물건 간지(?)를 위해 안 떼고 있다


가격도 뭐... 이 정도면 싸고 제가 이전에 쓰던 녀석도 같은 리얼텍 칩셋이 달려 있었기에 그냥 무난무난하게 쓰고 있었습니다.


속도는 나름 기가비트를 뽑고 있습니다. 그런데 어제 이상할 정도로 핑튐 현상이 심하더군요. 업로드 속도가 비대칭인 이상 좀 구리긴 했지만 이 정도는 아니었습니다.


아주 뭔가 지속적 통신을 하기라도 하면 미친듯이 출렁거리더군요. 그당시에 제가 CPU많이 처먹는 작업을 해서 그렇긴 합니다만 좀 심하게 출렁거렸습니다. 스마트폰보다 더 네트워크성능이 더 구렸을 정도...


아무래도 리얼텍이 드라이버 만듦새로 꼭 문제를 일으키곤 했으니 혹시나 하고 찾던 도중 중요한 사실을 알았습니다.


우분투 18.04에 포함된 기본 커널 드라이버의 버전이 낮다는 것.

원래 리눅스란 놈 자체가 서버에서 구르기 때문에 무조건 신버전이 좋은 것이 아니긴 합니다. 그런데 제가 쓰는 커널이 4.18임에도 불구하고  2016년에 배포한 소스쓴다는 것!



modinfo로 확인해보니 1.09버전을 쓰고 있었습니다. 인터넷 조금만 뒤져봐도 해당 버전 잘 안 된다는 말이 많습니다. 엄연히 말하면 1.09 주변 버전이 잘 안 된다는것이지만 (리얼텍은 이상할 정도로 버전에 민감합니다.) 아무튼 해당 시기에 좀 문제가 많았습니다.


그래서 드라이버를 갈아버리기로 결심했습니다. 여차하면 커널 모듈을 되돌리면 그만이니까요.


https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software


이곳으로 들어가서 소스코드를 다운로드 받도록 합시다



아래로 쭉 내리면 Linux용 드라이버 다운로드 아이콘이 있고 이메일을 적으라고 합니다. 아무래도 과도한 서버요청을 막기위한 조치인 듯 합니다. (리얼텍 제품이 한둘이 아니니 과도한 서버요청은 회사 입장에서도 어렵겠지요)


그리고 조금 기다리면 이메일이 날아오고 중간에 Capcha를 하면 다운로드를 받을 수 있게 됩니다.


그리고 컴파일러와 일부 라이브러리가 필요한데 저 같은 경우에는 이것저것 이미 다 설치가 되어있던 상황이라 얼마나 필요한지는 잘 모르겠습니다.


일단 build-essential, libelf-dev, linux-header 는 필수라고 봐야합니다.


sudo apt install build-essential libelf-dev linux-headers-generic


linux-headers-generic 패키지는 상황에 따라 필요 없을 수도 있습니다. 보통 커널을 자신이 직접 컴파일 하는경우에는 자신의 이름으로 설치가 되어 있습니다.


이제 드라이버가 있는 곳에서 


make -j2


뒤에 j 옵션은 필요할 수도 있고 필요 없을 수도 있습니다.

상황에 따라 j뒤를 바꿔 주세요.


그 다음 ko 파일이 있는 것이 확인 되면 


sudo make install


이제 버전이 바뀌었는지 확인해봅시다.



2.11 버전으로 바뀌었군요! 얼마나 좋아진것인지는 알길이 없지만 아무튼 버전이 바뀌지 기분이 색다르긴 합니다

,

Unity3D는 매우 훌륭한 게임엔진이고 성공한 게임엔진입니다. 그리고 정말 많은 분야에서 사용중입니다.


그러나 Unity3D로 게임을 개발을 하기 위해선 윈도우나 맥OS환경이 필수 였습니다. 하지만 Unity3D측에서도 실험적으로 리눅스용을 만들고 지원하고 있습니다. 명색이 다용도 엔진이기 때문에 리눅스용 게임도 만들 수 있는데 개발도 리눅스에서 할 수 있게 하기위한 방법인 것입니다.


물론 경쟁자인 Unreal엔진이 비슷한 노선을 취하기 때문인 것도 맞는 것 같습니다.


Unity3D는 버전별로 상이한 방식을 취하기 때문에 여러 버전을 설치하는 것이 당연시 되고 있습니다 .이를 관리하기 위해서 UnityHUB란 것을 만들었고 최근에는 개발 환경을 이것으로 갖추고 있습니다.


https://forum.unity.com/forums/unity-hub.142/


이곳으로 들어가시면 알 게 됩니다.



해당 포럼에 들어가면 UnityHub XXX is available!! 이런 식으로 써 있습니다. 그 글을 클릭 하면..



이렇게 3대 OS용 UnityHub를 다운로드 받을 수 있게 되어있습니다. 여기서 리눅스도 다운로드 받을 수 있게 되어있습니다. 그리고 이를 다운로드 받으면..


Appimage 형태로 다운로드 됩니다. 즉, 리눅스 배포판을 가리지 않고 실행 되는 방식입니다. 속성에서 


그리고 일반적인 프로그램 실행하듯 실행해 주시면 됩니다. 메뉴에 등록할거냐고 물어보는데 저는 그냥 귀찮아서 등록을 안 하는 것을 선호합니다. 그건 알아서 선택하시기 바랍니다.


그리고 계정 로그인을 하고 잠시 기다리시면...



이렇게 엔진 개발환경을 다운로드 받을 수 있습니다. 

심지어 필요한 컴포넌트도 다운로드가 가능합니다. 굉장히 편리하지요. 그러면 Unity3D 개발환경을 구축 할 수 있게 됩니다. 설치 위치는 톱니바퀴 모양을 누른다음 설정에서 건들 수 있습니다. 물론 권한이 있어야 가능하겠지요?


개인적으로 /opt 안에 폴더를 하나 만든 다음 권한을 따로 주는 것을 선호하지만 ~/안에 설치하는 것을 선호하는 사람도 있을 것입니다. 그것은 취향차이라고 합시다.


이제 프로젝트 탭에서 프로젝트를 하나 만들고 실행해 봅시다.


그러면 짜잔!! 이제 리눅스용 unity3D를 설치할 수 있게 되었습니다. 짝짝짝


추가로 만약 에디터 환경이 너무 느리다 싶으면 OpenGL대신 Vulkan을 사용해 볼 수 있습니다. 확실히 Vulkan이 속도가 빠릅니다.


방법은 Edit-Project Settings

한글판의 경우에는 다르게 나올 수 있다. 하지만 보통 이런 툴은 영문판을 쓸 테니 영문으로 설명한다 알아서 따라오자


그 다음에 Player 탭에서 아래로 쭉 찾아서 Rendering을 찾은 다음 Auto Graphic API for Linux에 체크를 해제합니다. 어차피 윈도는 DirectX11로 고정이고 macOS도 Metal로 고정입니다. 리눅스만이 OpenGL과 Vulkan 두가지를 지원합니다.


그리고 나온 창에서 OpenGL Core가 위에 있을 텐데 Vulkan을 OpenGL Core위로 땡겨서 OpenGL보다 Vulkan이 우선되도록 합니다. OpenGL이 위에 있는 이유는 호환성 때문인데 (구형 VGA는 지원이 안 됨) Vulkan이 이러나 저러나 빠르기 때문에 Vulkan을 추천합니다.


이제 리눅스에서도 Unity3D 엔진으로 이용한 게임 개발이 쉬워졌습니다.


참고로 C# 에디터가 필요하다면 개인적으로 VSCode를 설치하시는 것을 추천합니다. MonoDevelop보다 깔끔하더군요. 그리고 VSCode를 cs파일을 열때 기본으로 설정해두면 Unity3D에서 스크립트를 수정할 때 유용합니다.


VSCode를 설치하는 방법은 따로 검색하시는 것을 추천합니다.

,


OpenCV란 참 고마운 영상처리 라이브러리가 있습니다. 이걸 쓰면 각종 영상처리를 쉽게 처리가 가능합니다. 그리고 얼굴 인식이라던가 글자 인식도 쉽게 할 수있습니다. 그리고 그것을 더 쉽게 하기 위해서 Dlib란 라이브러리가 나왔습니다. 저 같은 경우에는 얼굴 인식용으로 주로 사용하는데 OpenCV만 사용하는 것보다 훨씬 더 편리합니다.


그리고 기본 언어가 Python이라서 개발환경 갖추는것이 너무 좋습니다. 리눅스에서 Python개발환경은 그냥 대충 해도 되는 것이니까요.


그래서 보통 영상처리쪽은 리눅스에서 환경을 갖추는 것이 일반적입니다. VFX쪽과 비슷하지요. 윈도우에서 하면 고통이 좀 심하거든요. 아니면 리눅스 가상머신을 올리던지요.


그런데 OpenCV라이브러리는 크게 문제가 없는데 Dlib란 이 물건... 병목이 심합니다. 기본적으로 CUDA코어를 써서 어떻게든 해결해보려고 하는데 만약 Nvidia그래픽카드를 안 쓰면 당장 답이 없습니다.


그래서 흔한 방법을 쓰면 속도면에서 너무 고통스럽습니다. 그래서 CUDA없는 시스템의 경우에는 수동으로 라이브러리를 컴파일해서 설치해주는 것이 좋습니다. CPU상황에 맞게 AVX나 SSE 같은 것을 켜는 것입니다.


일단 우분투에서 OpenCV설치는 쉽습니다.


python3-opencv 란 패키지를 제공하기 때문에 이것을 설치하면 끝입니다.

sudo apt install python3-opencv



(Python2.7은 이제 그만 쓰는게 좋겠습니다. 이제 Python3를 추천합니다.)


 하지만 Dlib는 pip로 설치하거나 그냥 따로 setup.py를 써서 인스톨 해야 합니다.


솔직히 이러나 저러나 pip가 참 편합니다. 그런데 pip로 설치하면 라이브러리를 그냥 기본값으로 설치해버립니다.


그래서 dlib의 경우에는 따로 컴파일을 해서 설치합니다.

https://github.com/davisking/dlib/releases



여기서 dlib의 최신판을 다운로드 받습니다.


그리고 cmake를 사용합니다. 만약 없다면 필요한 라이브러리를 미리 설치하도록 합시다


sudo apt-get install build-essential cmake

sudo apt-get install libgtk-3-dev

sudo apt-get install libboost-all-dev


이제 시스템마다 다른 방식을 써야 하는데


만약 스카이레이크 이후의 CPU라면 AVX를 지원합니다. 그보다 이전의 시스템이라면 SSE4를 쓰면 되지만 그쯤되면 그냥 이참에 시스템을 바꾸는 것을 추천합니다.


python3 setup.py install --yes USE_AVX_INSTRUCTIONS


만약 Nvidia카드가 없고 AVX지원 CPU라면 위와 같이 입력함으로서 AVX를 지원하게끔 설치가 가능해집니다.


만약 Nvidia카드도 있고 AVX도 붙어있는 환상의 조합이라면


python3 setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA


필요에따라선 sudo가 붙어야 할 수도 있습니다.


이제 알아서 파이썬 설치 스크립트가 해당 옵션을 붙여서 컴파일을 함께 하는 것을 볼 수 있습니다.



만약 내 CPU가 AVX가 되는지 모르겠으면

grep avx /proc/cpuinfo


이 명령어를 써서 만약 뭔가 뜨면 AVX가 되는 것이고 안 되면 안 되는 것으로 생각하면 됩니다.

AVX가 되면 성능 그냥 굴리는 것보다 향상 폭이 크다고 하네요!

,