프로그램 사용/vi2009. 9. 16. 10:39
VI를 넣고 안 넣고 차이에
busybox 실행 프로그램의 크기가 20kiB 정도 차이가 난다.(2010.01.28 수정 무슨 용량이 km야 ㄱ-)

-rwxrwxr-x 1 500      503        577016 Sep 16  2009 /bin/busybox
-rwxrwxr-x 1 500      503        597100 Sep 16  2009 /bin/busybox

20084 Byte > 19 KB

busybox가 대단한건지.. VI가 대단한건지...
어짜피 임베디드 리눅스에서 VI가 쓸일이 없다면 20KB라도 아끼자!



주의 : 위의 내용은 stripping 되었으며 sh4-linux 로 크로스 컴파일 된 크기 비교임,
         컴파일러에 따라 옵션에 따라 다를 수 있음

'프로그램 사용 > vi' 카테고리의 다른 글

VI 자동 줄 정렬  (0) 2009.10.06
vi auto indent  (0) 2009.10.06
vi 에서 대소문자 구분 하지 않고 검색하기 + 단어단위 검색  (0) 2009.09.02
VI에 ctags 사용하기  (0) 2009.07.21
VI syntax highlight 사용하기  (0) 2009.05.26
Posted by 구차니
Linux2009. 9. 15. 18:28
Unified Modeling Language 말고 리눅스에서도 UML이 있다 ㄱ-
일종의 colinux linux 버전 같기도 하고..

아무튼 한빛미디어의 홈페이지에서 간간히 걸려나오는데
페이지 제목은 "시스템 재해 복구 연습 해보기" 이다.
[발견 : http://network.hanb.co.kr/print.php?bi_id=267]
20100123 추가
-> 링크 변경 [링크 : http://www.hanb.co.kr/network/view.html?bi_id=267]

UML을 이용하면 리눅스 상에서 독립된 리눅스를 만들어서
임의로 시스템을 파괴하고 복구해볼수 있도록 되어 있는 듯 하다.

[링크 : http://user-mode-linux.sourceforge.net/]

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 구차니
한 중학교 교사의 이상한 설문조사에 달린 리플들을 보면서 키보드를 두들려보게 된다.



스승이라고 생각했던 선생님은 지금까지 두분이 계신다.
한분은 기억마저도 흐릿해져 성함도, 몇학년 떄였는지도 기억나지 않는
키가 매우 크고 마른 약간의 머리가 벗겨진 할아버지 선생님이셨다.

젊은 선생님들과 비교하다면 패기도 열정도 없어 보이셨지만, (지금 말하자면 살거 다 사신 사람의)
여유와 연륜이 묻어나는 노련함. 그리고 자연스럽게 사람을 이끄는 힘이 있으셨다.
(지금와서 생각하지만, 이러한 것들이 오히려 패기와 열정보다 중요한 것들이 아닐까 생각이 된다.)

자신이 앞서지 않고, 무리하게 사람들을 끌고가려 하지 않고
자연스럽게 학생들을 이끄는 더욱 높은 단계의 통제라고 해야 할까?

이러한 선생님의 모습을 보면서 꽤나 많은 생각을 했던거 같다.
그래서 이름도 희미한 그분을 나의 첫번째 스승이라고 생각을 한다.

지금은 돌아가셨을지도 모르는 박.찬.석 선생님 사랑합니다!!!





그리고  두번째 스승이라고 생각하는 분은 아직 살아계시고(웃음)
학교에서 수 많은 학생들의 사랑을 받으시므로 인해 익명처리 ㅋㅋ

목표로 하던 학교/학과 진학에 실패하고 인생머있어~ 로 달관하던 나를
"곱게 뒷자석에 타고갈래? 트렁크에 실려서 갈래?" 라는 협박으로 대학교 면접에 끌고가신 아버지와
어떻게든 학교 보내려고 노력하던 가족들..

머.. 이런 이유로 열심히 공부해야 겠다는 생각도 없이 어영부영 대학을 가고
단지 아버지의 손에서 벗어 나겠다는 일념으로 육군으로 가버린 나였는데

군대갔다와서도 3학년 전공을 떙겨들으면서
(역복학이라 이래저래 엉겼다. 원래대로라면 2학년 2학기 수업들어야 하지만 3학년 2학기 듣는식)
짜증보다는 오랫만에 느껴보는 배움/깨달음의 즐거움을 느끼고 있었지만
그것도 잠시, 대부분의 교수님들은 학부생이 멀 알겠어~ 라는 자세로
열정적으로 가르치기 보다는 그냥 교과서 읽어주는 식으로 수업을 하셨고
그로 인해서 결국에는 목마른 자가 우물을 파듯, 복학을 해서도 수업은 제대로 안 듣고
내가 하고 싶은것만 파고 있었던 나날이 었다(응? 웬 서사체 -ㅁ-)



그러다가 그 교수님의 수업을 들으면서 신선함을 느꼈다.
좀 더 많이 살았다고, 조금 더 먼저 접했다고, 조금 더 많이 안다고 자랑하는 사람이 아닌
자신도 배우고 공부하는 사람으로서, 아직 접하지 못한 사람에게 배움을 나누고자 하는 사람의 모습에서
이 분을 만나기 위해서 그래도 대학에 온거구나 라는 생각이 들정도로 행복함을 느꼈다.

아주 미묘한 차이이고, 일부에서는 무슨 차이냐고도 할지 모르겠지만
익을수록 고개를 숙이는 벼처럼, 많이 배울수록 고개를 숙이는 인간은 드물다는 점과

학생과 교수를 떠나 인간대 인간, 인격체와 인격체로서 학생을 대하는 분은 처음이었기 때문이었다.


이 교수님은 시험 때 시험 범위 밖의 문제를 항상 하나 내시고 이런 말씀을 하셨다.
"학생들 시험도 공부랍니다. 시험을 보면서 많은것을 배워가세요"

머.. 물론 나야 여전히 좋은 학점을 받지는 못했지만
학점 그 이상의 좋은 것을 얻었다.


자유로운 영혼과
그리고 교감을 할 수 있는 영혼이 있다는 사실
그리고 나도 나이먹고 저렇게 때묻지 않은 사람이 되고 싶다는 목표
Posted by 구차니
$ smbd -d
$ ps -ef | grep smbd

를 했는데 출력되는 메시지가 없는건, smbd가 구동하는데 실패를 했다는 것이다.
이유야 찾아봐야 알겠지만, 에러메시지가 어디에 나오는지 알수가 없으니 막막하다

$ smbd --help
Usage: smbd [OPTION...]
  -D, --daemon                            Become a daemon (default)
  -i, --interactive                       Run interactive (not a daemon)
  -F, --foreground                        Run daemon in foreground (for
                                          daemontools, etc.)
  --no-process-group                      Don't create a new process group
  -S, --log-stdout                        Log to stdout
  -b, --build-options                     Print build options
  -p, --port=STRING                       Listen on the specified ports
  -P, --profiling-level=PROFILE_LEVEL     Set profiling level

Help options:
  -?, --help                              Show this help message
  --usage                                 Display brief usage message

Common samba options:
  -d, --debuglevel=DEBUGLEVEL             Set debug level
  -s, --configfile=CONFIGFILE             Use alternate configuration file
  -l, --log-basename=LOGFILEBASE          Base name for log files
  -V, --version                           Print version

Build-time configuration overrides:
  --sbindir=SBINDIR                       Path to sbin directory
  --bindir=BINDIR                         Path to bin directory
  --swatdir=SWATDIR                       Path to SWAT installation directory
  --lmhostsfile=LMHOSTSFILE               Path to lmhosts file
  --libdir=LIBDIR                         Path to shared library directory
  --modulesdir=MODULESDIR                 Path to shared modules directory
  --shlibext=SHLIBEXT                     Shared library extension
  --lockdir=LOCKDIR                       Path to lock file directory
  --statedir=STATEDIR                     Path to persistent state file
                                          directory
  --cachedir=CACHEDIR                     Path to temporary cache file
                                          directory
  --piddir=PIDDIR                         Path to PID file directory
  --smb-passwd-file=SMB_PASSWD_FILE       Path to smbpasswd file
  --private-dir=PRIVATE_DIR               Path to private data directory

일단 smbd -S 를 하면 stdout(= 모니터)로 출력이 되는데, 백그라운드 모드로는 구동하면 출력이 불가능하다고
아래와 같은 메시지를 출력한다.

 ERROR: Can't log to stdout (-S) unless daemon is in foreground (-F) or interactive (-i)

해달라는 대로 해주면된다.

$ smbd -S -F 혹은
$ smbd -S -i
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 구차니
Linux2009. 9. 14. 16:08
간단하게 네트워크 공유 상태를 갱신해주는 녀석이라고 보면된다.
zeroconfig 라고도 하는데 음.. 아무튼 samba에서도 연관이 있으니, avahi 데몬은 켜주는게 쓰게 편할듯 하다.

[링크 : http://www.asianux.co.kr/support/updateView.php?no=1526]
[링크 : http://en.wikipedia.org/wiki/Avahi_%28software%29]
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 구차니
테스트용으로 notepad2의 소스로 한번 프로젝트를 구성해보았다.

Project - Add files recursively 를 클릭한다.
그러면 경로를 선택 후, 어떤 파일을 추가할지를 물어보는데, 귀찮으면 Select All을 누르고 OK

어떤 build에 속하게 할지 하는건데, 귀찮으니 일단 여기도 Select All 하고 OK

프로젝트가 생성되어 notepad2.c 파일을 열어 놓은 모습이다.
Source Insight 처럼 Ctrl-O로 모든 파일중에 비슷한 이름으로 검색하여 열어주는 기능이 없어서 조금 아쉽다.

개인적으로 마음에 드는 기능으로 화면분할기능이다(split) 간혹 동일 소스에서 여러군데를 수정해야 할때
왔다 갔다 하지 않고 보면서 할 수 있어서 편한 기능이다. (그래도 차라리 위치 네비게이션이 있는 낫다)

함수의 컨텍스트 메뉴이다. Find declatation 은 프로토타입, Find implementation은 함수의 위치를 추적하는 기능이다.

'프로그램 사용 > Code::Blocks' 카테고리의 다른 글

Code::Blocks  (0) 2009.09.14
Code::Blocks - C++ 에디터 for linux  (2) 2009.09.12
Posted by 구차니