삽질하는플머

'ShartDevelop'에 해당되는 글 1건

  1. Synology NAS DS110j 에 mono 올리기 2

Synology NAS DS110j 에 mono 올리기

이런저런잡다구리/Synology-nas



Synology NAS 에 mono 를 올리면 아주 신나는 일이 많이 생길 것 같아. 
닷넷 바이너리가 직접 돌아간다면 윈도에서 작업한 이런 저런 물건들을 쉽게 돌려볼 수 있잖아~ 
ipkg system이 설치된 DS110j 는 "ipkg install mono" 명령으로 2.4 버전의 모노를 설치할 수 있지만
닷넷 4.0 바이너리를 구동하려면 mono 버전이 2.8 이상이 되어야 하니... 직접 빌드하는 방법을 찾아보자. 

일단 구글을 뒤적뒤적. Synology DS211 에 mono-2.11.0 을 올리는 방법이 잘 정리된 아주 멋진 블로그를 건짐. 

http://blog.hexad.dk/2012/03/mono-211-binary-build-for-synology-211.html



이 글을 적는 시점에서 최신버전은 2.11.1 이니 그걸로 해보자. 과정은 위의 링크와 동일.
먼저 빌드에 필요한 패키지들을 설치한다. 

# ipkg install wget make automake autoconf bison glib libc-dev libstdc++ m4 gcc gawk textutils gettext zlib



mono 2.11.1 의 소스를 내려받고 압축을 푼다. 그리고 빌드 준비. 

configure 에서 --prefix 파라미터를 통해 /usr 가 아닌 /opt/mono-2.11 에 설치한다. 
혹시 나중에 제거할 일이 생겨도 이렇게 해 두면 편하다. 


# wget "http://download.mono-project.com/sources/mono/mono-2.11.1.tar.bz2"

# tar -xf mono-2.11.1.tar.bz2

# cd mono-2.11.1

# ./configure --prefix=/opt/mono-2.11.1



다음 파일들을 편집기에서 열어준다. 


mono/metadata/Makefile

mono/mini/Makefile

mono/profiler/Makefile



아래 라인을 찾아서 


LDFLAGS = 



-lrt 플래그를 추가해준다. 이유는 여기를 클릭. 


LDFLAGS = -lrt 



ipkg 에서 제공되는 pthreads 라이브러리에 문제가 있기 때문에, 빌드를 위해서는 원래의 pthreads 로 바꿔주어야 한다. 

방법은 다음과 같다. 

# mkdir /opt/arm-none-linux-gnueabi/lib_disabled
# mv /opt/arm-none-linux-gnueabi/lib/libpthread* /opt/arm-none-linux-gnueabi/lib_disabled
# cp /lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/
# ln -s /opt/arm-none-linux-gnueabi/lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/libpthread.so
# ln -s /opt/arm-none-linux-gnueabi/lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so


DS110j 는 아주 느린 환경이므로 빌드는 지루한 작업이다. 
혹시라도 중간에 네트웍에 문제가 생겨 SSH 연결이 끊기면 말짱 황이므로 screen 의 사용을 적극 권장한다. 

# ipkg install screen


screen은 딱 네가지만 기억하면 된다. 실행은 screen, 디태치는 Ctrl+A+D, 다시 붙일 때는 screen -r, 종료는 exit. 
좀 더 자세한 사용기는 여기를 클릭

이제 빌드 시작. 

# make


정말 하루 종일 걸린다. 헥헥... 다 끝났으면 다음 명령으로 /opt/mono-2.11.1 에 설치

# make install


인생을 좀 편하게 살기 위해 몇개의 심볼릭 링크를 만들어주자. 

# ln -s /opt/mono-2.11.1/bin/mono /opt/bin/mono
# ln -s /opt/mono-2.11.1/bin/mcs /opt/bin/mcs
# ln -s /opt/mono-2.11.1/bin/gmcs /opt/bin/gmcs


실행시켜보면 

# mono --version







설치가 끝났으니 제대로 굴러가는지 테스트를 해 봐야지. 
SharpDevelop 를 실행시키고 간단한 콘솔프로그램을 만들어 보자. 



윈도에서 실행시킨 모습. 





컴파일된 console.exe 를 NAS 로 옮겨서 돌려보자. 

# mono ./console.exe



지난번 포스트에서 테스트했던 간단한 C# 에코서버도 물론 잘 동작한다. 



초기 구동은 아무래도 느리지만, 반응은 제법 빠릿빠릿 하다. 아주 만족스럽네.
간단한 채팅서버나 작은 게임서버 정도는 충분히 돌릴 수 있을 듯.