머.. 어짜피 samba3 계열의 중간 다리를 하는 버전들이라 설치방법은 3.2.0 과 동일하다.

./samba-3.0.23c/source/ 에서
$ ./autogen.sh
$ export CC=<cross-compile-gcc>
$ ./configure --host=i686
$ make
$ make DESTDIR=<target_root_path> install

근데, 하다보면 에러난다.

Compiling lib/time.c
lib/time.c: In function `GetTimeOfDay':
lib/time.c:60: error: too few arguments to function `gettimeofday'

검색해보니, vi ./samba-3.0.23c/source/lib/time.c 의 60 라인에
gettimeofday(tval); 부분을
gettimeofday(tval,NULL);  이렇게 수정해주면된다.

  55 void GetTimeOfDay(struct timeval *tval)
  56 {
  57 #ifdef HAVE_GETTIMEOFDAY_TZ
  58         gettimeofday(tval,NULL);
  59 #else
  60         gettimeofday(tval);
  61 #endif
  62 }

이런 소스인데, HAVE_GETTIMEOFDAY_TZ 를 다른 곳에서 선언해주면 문제없이 될 듯 하다.


[링크 : http://www.nabble.com/3.0.21a-cross-compiling-%28uClibc%29-for-mipsel-fails-td2450460.html]
Posted by 구차니
Microsoft/Windows2009. 9. 16. 14:09
net view <SERVERNAME>
하면 서버에서 공유중인 목록이 출력된다.

그런데
시스템 오류 5이(가) 생겼습니다.

액세스가 거부되었습니다.
요런 에러가 발생을 해서 검색을 해보니

에러 메시지의 원인은 다음과 같을 수 있습니다:
 
    1. 시간 동기화 문제
 
    2. 원격 컴퓨터에 대한 접근권한 없음 (Share, NTFS, GPO).
 
    3. 방화벽 혹은 3rd 파티 프로그램에 의한 원격지 접속의 방해
 
    4. 컴퓨터의 계정이 사용불가능함 (혹은 암호의 유효기간이 지남)
 
             혹은 존재하지 않는 도메인
 
    5. 액티브 디렉토리의 복제 문제

[링크 : http://support.microsoft.com/kb/555644]
라고 되어있다.

일단 서버측의 시간을 보니.. 임베디드라서 0 epoch에서 시작.. 1970년이다.. (멍....)
Posted by 구차니
$ tree /usr/local/samba/
/usr/local/samba/
|-- sbin
|   |-- nmbd
|   `-- smbd
|-- bin
|   |-- eventlogadm
|   |-- findsmb
|   |-- ldbadd
|   |-- ldbdel
|   |-- ldbedit
|   |-- ldbmodify
|   |-- ldbrename
|   |-- ldbsearch
|   |-- net
|   |-- nmblookup
|   |-- ntlm_auth
|   |-- pdbedit
|   |-- profiles
|   |-- rpcclient
|   |-- sharesec
|   |-- smbcacls
|   |-- smbclient
|   |-- smbcontrol
|   |-- smbcquotas
|   |-- smbget
|   |-- smbpasswd
|   |-- smbspool
|   |-- smbstatus
|   |-- smbtar
|   |-- smbtree
|   |-- tdbbackup
|   |-- tdbdump
|   |-- tdbtool
|   `-- testparm
|-- include
|   |-- libsmbclient.h
|   |-- netapi.h
|   |-- smb_share_modes.h
|   |-- talloc.h
|   `-- tdb.h
|-- lib
|   |-- auth
|   |-- charset
|   |-- gpext
|   |-- idmap
|   |-- lmhosts
|   |-- lowcase.dat
|   |-- nss_info
|   |-- pdb
|   |-- perfcount
|   |-- rpc
|   |-- smb.conf
|   |-- upcase.dat
|   |-- valid.dat
|   `-- vfs
|-- man
|   |-- man1
|   |   |-- findsmb.1
|   |   |-- ldbadd.1
|   |   |-- ldbdel.1
|   |   |-- ldbedit.1
|   |   |-- ldbmodify.1
|   |   |-- ldbrename.1
|   |   |-- ldbsearch.1
|   |   |-- log2pcap.1
|   |   |-- nmblookup.1
|   |   |-- ntlm_auth.1
|   |   |-- profiles.1
|   |   |-- rpcclient.1
|   |   |-- sharesec.1
|   |   |-- smbcacls.1
|   |   |-- smbclient.1
|   |   |-- smbcontrol.1
|   |   |-- smbcquotas.1
|   |   |-- smbget.1
|   |   |-- smbstatus.1
|   |   |-- smbtar.1
|   |   |-- smbtree.1
|   |   |-- testparm.1
|   |   |-- vfstest.1
|   |   `-- wbinfo.1
|   |-- man5
|   |   |-- lmhosts.5
|   |   |-- smb.conf.5
|   |   |-- smbgetrc.5
|   |   `-- smbpasswd.5
|   |-- man7
|   |   |-- libsmbclient.7
|   |   |-- samba.7
|   |   `-- winbind_krb5_locator.7
|   `-- man8
|       |-- cifs.upcall.8
|       |-- eventlogadm.8
|       |-- idmap_ad.8
|       |-- idmap_adex.8
|       |-- idmap_hash.8
|       |-- idmap_ldap.8
|       |-- idmap_nss.8
|       |-- idmap_rid.8
|       |-- idmap_tdb.8
|       |-- idmap_tdb2.8
|       |-- mount.cifs.8
|       |-- net.8
|       |-- nmbd.8
|       |-- pam_winbind.8
|       |-- pdbedit.8
|       |-- smbd.8
|       |-- smbpasswd.8
|       |-- smbspool.8
|       |-- swat.8
|       |-- tdbbackup.8
|       |-- tdbdump.8
|       |-- tdbtool.8
|       |-- umount.cifs.8
|       |-- vfs_acl_tdb.8
|       |-- vfs_acl_xattr.8
|       |-- vfs_audit.8
|       |-- vfs_cacheprime.8
|       |-- vfs_cap.8
|       |-- vfs_catia.8
|       |-- vfs_commit.8
|       |-- vfs_default_quota.8
|       |-- vfs_dirsort.8
|       |-- vfs_extd_audit.8
|       |-- vfs_fake_perms.8
|       |-- vfs_fileid.8
|       |-- vfs_full_audit.8
|       |-- vfs_gpfs.8
|       |-- vfs_netatalk.8
|       |-- vfs_notify_fam.8
|       |-- vfs_prealloc.8
|       |-- vfs_preopen.8
|       |-- vfs_readahead.8
|       |-- vfs_readonly.8
|       |-- vfs_recycle.8
|       |-- vfs_shadow_copy.8
|       |-- vfs_shadow_copy2.8
|       |-- vfs_smb_traffic_analyzer.8
|       |-- vfs_streams_depot.8
|       |-- vfs_streams_xattr.8
|       |-- vfs_xattr_tdb.8
|       `-- winbindd.8
|-- private
|   |-- passdb.tdb
|   `-- secrets.tdb
|-- share
|   `-- locale
|       `-- de
|           `-- LC_MESSAGES
|               `-- pam_winbind.mo
`-- var
    |-- cores [error opening dir]
    |-- locks
    |   |-- account_policy.tdb
    |   |-- brlock.tdb
    |   |-- browse.dat
    |   |-- connections.tdb
    |   |-- gencache.tdb
    |   |-- group_mapping.ldb
    |   |-- locking.tdb
    |   |-- messages.tdb
    |   |-- mutex.tdb
    |   |-- nmbd-smb.conf.pid
    |   |-- ntdrivers.tdb
    |   |-- ntforms.tdb
    |   |-- ntprinters.tdb
    |   |-- perfmon
    |   |-- printing
    |   |-- registry.tdb
    |   |-- sessionid.tdb
    |   |-- share_info.tdb
    |   |-- smbd-smb.conf.pid
    |   `-- unexpected.tdb
    |-- log.nmbd
    `-- log.smbd

편의를 위해 순서를 약간 변경했습니다.
Posted by 구차니
삼바를 하면서 고생한게 몇개 있는데..

첫째는 크로스 컴파일시에 --target 옵션 넣으면 안된다는 것과
둘째는 설치 경로를 못잡아서 헤맨 것이다.


일단 삼바가 제대로 설정되었는지 확인하기 위한 testparm툴을 삼바에서 제공한다.
이 녀석을 사용하면 무엇이 잘못되었는지 찾는데 도움이 될 것이다.
[링크 : http://forums.debian.net/viewtopic.php?f=5&t=42082]

나의 경우에는 무리하게 Makefile 을 수정해서 생긴문제였는데
testparm을 하면 아래와 같이 출력되었었다.
# testparm
Load smb config files from /etc/smb.conf
creating default valid table
Loaded services file OK.
ERROR: lock directory /home/morpheuz/st7109/target/var/locks does not exist
ERROR: state directory /home/morpheuz/st7109/target/var/locks does not exist
ERROR: cache directory /home/morpheuz/st7109/target/var/locks does not exist
ERROR: pid directory /home/morpheuz/st7109/target/var/locks does not exist
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        netbios name = SMB TEST

Makefile에서
prefix를 /home/morpheuz/st7109/target 으로 했었는데. 이 경우에 컴파일 된 smbd에 저 경로를 이식하는 바람에
타켓 환경에서 엉뚱한 경로를 뒤적이게 되서 이러한 현상이 발생하게 되었다.

이를 해결하기 위해서는
아~~~무런 Makefile 수정없이 아래와 같이 입력하면 된다.

make DESTDIR=/home/morpheuz/st7109/target install

물론 Makefile 내에 DESTDIR이 있지만, 설정상의 문제인지 강제로 저값을 넣어주면
설치중에 엉뚱한 경로가 추가되어 설치에 실패하게 된다.
($(DESTDIR)%(LIBDIR) 사이에 이상하게도 /가 하나더 들어간다 결과적으로
/home/moprheuz/st7109/target//usr/local 경로가 되면서 설치 실패한다.)


아래의 링크는 autoconf의 DESTDIR 과 각종 디렉토리 변수에 대한 gnu 문서이다.
[링크 : http://www.gnu.org/software/autoconf/manual/standards/DESTDIR.html#DESTDIR]
[링크 : http://www.gnu.org/software/autoconf/manual/standards/Directory-Variables.html#Directory-Variables]
Posted by 구차니
gnutls - GNU Tranport Layer Seucity Library
[링크 : http://www.gnu.org/software/gnutls/]

SWAT - Samba Web Administration Tool
[링크 : http://us3.samba.org/samba/docs/man/Samba-HOWTO-Collection/SWAT.html]
웹으로 삼바를 설정하는 웹어플리케이션. 굳이 필요없다면 제외가능

CUPS - Common Unix Printing System
[링크 : http://en.wikipedia.org/wiki/CUPS]
삼바에서 프린터도 공유하는 이유로 CUPS 지원항목이 들어있는 것으로 추측된다.

FHS - Filesystem Hierarchy Standard
[링크 : http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard]
일반적인 리눅스에서 사용하는 RootFS의 구조 / /dev /etc /var 이런 구조를 지칭한다.

talloc - talloc is a hierarchical pool based memory allocator with destructors
[링크 : http://talloc.samba.org/]

winbind - winbind is a component of the Samba suite of programs that solves the unified logon problem. Winbind uses a UNIX implementation of Microsoft RPC calls, Pluggable Authentication Modules (PAMs), and the name service switch (NSS) to allow Windows NT domain users to appear and operate as UNIX users on a UNIX machine.
[링크 : http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html]
이 녀석은 있으면 좋고 없으면 그만이다.

tdb - Trivial DB. The directory in which Samba stores the tdb files is determined by compile-time directives.
[링크 : http://www.linuxtopia.org/online_books/network_administration_guides/samba_reference_guide]
[링크 : http://tdb.samba.org/]
Posted by 구차니
FEATURE default 설명
debug no Turn on compiler debugging information
developer no Turn on developer warnings and debugging
krb5developer no Turn on developer warnings and debugging, except -Wstrict-prototypes
picky-developter - Halt compilation on warnings
largefile - omit support for large files
external-libtalloc auto Enable external talloc
socket-wrapper no Turn on socket wrapper library
nss-wrapper no Turn on nss wrapper library
swat yes Build the SWAT tool
dmalloc no Enable heap debugging
cups auto Turn on CUPS support
iprint yes if cups is yes Turn on iPrint support
static=PKGS no build static libraries default
shared=PKGS yes build shared libraries default
pie yes Turn on pie support if available
relro yes Turn on Relocations Read-Only (relro) support if available
fam auto Turn on FAM support
shared-libs yes Use shared libraries internally
dnssd no Enable DNS service discovery support
avahi auto Enable Avahi support
merged-build - Build Samba 4 as well
gnutls yes Turn on gnutls support

configure --help 에서 정리

Posted by 구차니
Linux2009. 9. 11. 19:13
cat /proc/filesystems

proc 파일 시스템에
filesystems라는 파일에 사용가능한 FS-type이 있다고 한다.

]$ cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   binfmt_misc
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   futexfs
nodev   tmpfs
nodev   inotifyfs
nodev   eventpollfs
nodev   devpts
        ext2
nodev   ramfs
        iso9660
nodev   mqueue
        ext3
nodev   rpc_pipefs
nodev   autofs
nodev   nfsd

위의 내용은 FC6 2.6.18-1.2796.fc6xen의 filesystem 내용이다.
음.. CIFS나 SMB가 없는데 어떻게 삼바를 마운트 하나 -ㅁ-?
[링크 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/proc/GetSMSInfo]


아무튼, 그리고 저기의 nodev의 의미는 실제장치명을 필요로 하지 않는 녀석이라고 한다.
머.. mount시에 일반적으로
mount -o "타입" "장치명" "마운트될 위치"
으로 실행이 되는데, 굳이 장치명을 기술하지 않아도 되는 녀석이라는 의미이려나?
[링크 : http://kldp.org/node/92546]
Posted by 구차니
samba는 윈도우에서 파일 공유 하듯, 리눅스 - 윈도우 간에 파일 공유 하도록 해주는 녀석이다.
원래 약자로 SMB를 읽기 쉽게 s m b 가 들어가는 단어를 찾다가 samba가 되었다고 하는데...

아무튼 리눅스에서 사용하는 명령어는

smbclient 이녀석은 단일 파일을 조작하는 녀석으로 보인다.
$ smbclient //mypc/yshare "" -N -Tx backup.tar

[링크 : http://linux.die.net/man/1/smbclient]
[링크 : http://linux.die.net/man/7/samba]

$ sudo mount -t cifs //SERVERIP/ /home/me/Desktop/SERVER/ -o user=myusername,password=mypass

cifs 타입으로 마운트 해서 사용도 가능하다.
[링크 : http://ubuntuforums.org/showthread.php?t=280473]

mount시에 //SERVERIP/path가 아닌 SERVERIP/path로 할 경우 아래의 에러가 발생하니 //를 꼭 넣어주도록 하자
CIFS: UNC Path does not begin with // or \\

만약에
mount: bad address 'SERVERNAME'
이라고 에러가 발생하면 SERVERNAME대신 SERVERIP로 해주면된다.

UNC는 Unified Naming Convention 의 약자로고 한다.
[링크 : http://www.terms.co.kr/UNC.htm ]

CIFS는 Common Internet File System 의 약자라고 한다(Interface가 아니군..)
[링크 : http://www.terms.co.kr/CIFS.htm]


Posted by 구차니