이전에 MIPS 환경으로 삼바 2.2.9 포팅에 대해 포스팅 한 적이 있는데, 이게 하나 둘씩 말썽을 피우더니 드디어 크게 문제가 터지고 말았습니다.
다음은 삼바 2.2.9를 사용하면서 발생한 문제입니다.
첫째는 이미 언급된 바 있는 비스타와의 궁합입니다. 웹질을 하다 보면 비스타와 삼바가 잘 안붙는다는 문제를 호소하는 글들이 가끔있고, 이는 비스타와 삼바의 궁합이 안맞다는 등의 이유다 라는 글들이 있는데, 사실 이건 좀 싱겁게 해결했습니다.
간단히 nmbd 데몬을 하나 더 실행해주면 간단히 비스타와는 접속이 되고 잘 동작합니다.
문제는 그 다음인데, 폴더 지우기가 잘 안되는 문제가 있었습니다. 전혀 안되면 오히려 문제를 파악하기가 쉬울텐데, 한 단계 하위 폴더만 있으면 삭제가 안되는 문제가 있었습니다.
예를 들면 폴더안에 파일만 있다면 해당 폴더를 지울 수 있으나 폴더안에 또폴더들이 있을 경우는 안지워집니다. 이를 해결하기 위해 삽질을 했으나 머리가 나쁜지라 결국엔 말그대로 삽질로 끝나고 말았습니다.
둘째 문제는 다국어 지원입니다. 이건 정말 머리터지게 삽질을 했으나 해결이 안되는군요. 삼바 2.x.x에서는 삼바만의 코드페이지 테이블이 포함되어 있고 이를 이용해서 다국어를 지원하는데, 재대로 안나온다는 거. 잘못 포팅한 문제도 있을 수 있지만, 시키는대로 했는데, 왜 안나오는건지?
-_-;;; smb.conf에서 다국어 지원과 관련된 설정은 다음과 같습니다.
...
client code page = 850
character set = ISO8859-1
...
위 설정대로라면 독일어나 스페인어의 특수 문자들이 출력이 되어야 정상일 것 같은데 말이죠.
이리하여 예전에 접어둔 삼바 3.0.24를 다시 끄집어 냈습니다.
Will이 보기에 - 순전히 Will의 필요에 의한 부분으로 - 2.x.x와 달라진 점이라면, 먼저 자체 코드페이지를 사용할 수도 있겠지만(?) 별도의 iconv 라이브러리를 사용할 수 있다는 점입니다. 실제로 source/include/config.h에는 아래와 같이 iconv와 관련된 설정이 포함되어 있습니다.
...
#define USE_NATIVE_ICONV 1
...
위 내용이 주석으로 막혀 있다면 주석을 풀어주고, 아래와 같이 Makefile 과 source/include/includes.h 에서 iconv와 관련된 부분을 추가해주고 빌드하면 됩니다.
...
LDFLAGS = ... -liconv -lcharset
...
...
#include "...../iconv.h"
...
빌드가 정상적으로 끝났다면, 설치를 해야하는데, 교차 개발 환경에서 설치를 위해서 각종 스크립트를 또 수정해야하는 귀찮은 일이 있으므로 그냥 네이티브 시스템에 설치한 후 필요한 파일들만 골라서 타겟 시스템 용 루트 파일 시스템에 옮겨주는 방법을 사용했습니다.
삼바 3.x.x 부터는 덩치가 꽤 커져서 임베디드 시스템에는 전체 설치가 불가능할 수 있으니 불필요한 부분은 최대한 제거해야 합니다(주로 swat 등).
일단 여기까지 왔다면 서버를 실행하고 접속이 가능합니다(물론 삼바 사용자가 등록되어 있고, smb.conf와 LARGE FILE관련 옵션이 재대로 적용되어 있어야만 하겠죠).
Will이 확인한 바로는 다국어 설정이 재대로 되어 있다면 한글이나 유럽어들이 재대로 나옵니다. smb.conf에서는 2.2.9와 달리 3.x.x 로 오면서 다국어 관련 설정 방법이 변경되었습니다.
예를 들어 아래와 같이 설정하면 한글이 재대로 출력됩니다.
dos charset = cp949
unix charset = euc-kr
display charset = cp949
...
현재 까지 남은 문제는 파일 지우기가 재대로 안된다는 점인데... ㅠ.ㅠ
왜 안될까? ㅠ.ㅠ
---------------------------------------------------------------------------------
2008/07/08
파일 쓰기/지우기 문제 해결했습니다.
smb.conf를 조금 고치고 파일 시스템 관련 권한을 조정하니 잘 되는군요.

