Synology NAS DS110j 에 mono 올리기
이런저런잡다구리/Synology-nasSynology 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
윈도에서 실행시킨 모습.
컴파일된 console.exe 를 NAS 로 옮겨서 돌려보자.
# mono ./console.exe
지난번 포스트에서 테스트했던 간단한 C# 에코서버도 물론 잘 동작한다.
초기 구동은 아무래도 느리지만, 반응은 제법 빠릿빠릿 하다. 아주 만족스럽네.
간단한 채팅서버나 작은 게임서버 정도는 충분히 돌릴 수 있을 듯.