2007년 11월 15일 목요일

tftp 설치

1. install
  우선, tftp 패키지를 인스톨 해야한다.

  $ yum install tftp-server

  인스톨이 되면서 tftp가 깔리는 동시에 루트에 tftproot 폴더가 생성된다.


2. 설정
  /etc/xinetd.d/ 에 가보면 tftp라는 파일이 있다.
  그 파일을 열어보면 tftp에 대한 설정이 저장되어 있는데 처음 install을 했을 경우, tftp service가 disable되어있다. 그것을 "no"로 바꿔주면 enable된다.


3. 재시작
   $ /sbin/service xinetd restart

  설정을 변경해주었으므로 재시작 한다.


4. 테스트하기
   잘 설치되었는지 보려면 테스트를 해본다.
   $ tftp localhost
   라고 입력하면 자기 컴퓨터의 tftp server로 접속하게 된다.
   기본적으로 루트에 생성된 tftproot폴더로 접속된다. 아무 파일이나 다운받아보자.
   tftp> get test.txt (물론 파일을 다운받으려면 그 폴더에 이 파일이 있어야한다.)
   tftp> quit

   quit한 뒤 현재 폴더에 다운로드 받은 파일이 있나 확인해본다.
   잘 다운받아졌다면, tftp설치 complete!!

2007년 11월 13일 화요일

samba server 사용



samba server에 user추가

samba server에 user를 추가하기 위해서는 일단 리눅스 계정이 있어야만 한다.
그러므로 리눅스 계정이 있다면 그 계정으로 samba server를 만들면 되고, 아니면 리눅스 계정부터 만들어 주어야한다.

$ useradd test

test라는 이름으로 linux계정을 만드는 명령어 이다. 그리고 password를 지정해주어야 하는데 다음과 같다.

$ passwd test

test라는 계정에 password를 지정해줄 수 있게 한다.
passwd는 확인을 하기위해서 두번을 입력받아 저장한다.

이제 samba server에 이 test라는 녀석을 user로 추가해보자.
예전 버전에서는 smbadduser라는 명령어를 썼다고 하던데, 최신버전에서는 그냥 하면 되더라......;;;;;

$ smbpasswd -a test

라고 하면 test라는 계정을 samba server에 추가하면서 passwd설정까지 같이 해주는 것이다. 옵션에 따라서 추가인지 삭제인지 혹은 그룹을 지정하는 것 까지 가능하다.
이 명령어를 사용하면 test라는 계정을 samba server에 추가하면서 samba server에서 사용할 password를 물어본다.
이 때도 마찬가지로 password를 두 번 입력받아 저장한다.

"Added user test." 라는 문구가 뜨면 성공이다.


samba server 접속

server에 접속을 하기 위해서는 smbclient가 필요한데, 없으면 깔아야 한다.

$ yum install samba-client

하면 install이 되고 samba-client가 깔린다.
그리고 samba server에 접속한다.

$ smbclient //IP주소/homeDir -U ID

이런식으로 사용한다.
예를들어 127.0.0.1에 접속하려 하고 내 계정이 test라면,
$ smbclient //127.0.0.1/test -U test 라고 사용한다.
password를 치고 접속을 하면 자신의 directory가 보인다.

프롬프트도 바뀌는데
smb: \>
이렇게 뜬다.
이 samba server에서 받고 싶은 파일이 있다면 get명령어를 사용해서 파일을 받으면 된다.

smb: \> get test.txt

samba server에서 사용할수 있는 모든 명령어는 ?를 치면 다 나온다.

smb: \> ?







2007년 11월 12일 월요일

tar 압축



window에서는 알집을 사용해서 압축을 하는데,
linux에서는 tar 명령어를 사용해서 압축을 풀거나 압축을 할 수 있다.


<< 압축해제 >>

압축해제시 가장많이 사용하는 옵션은 'xvf'이다.

$ tar xvf test.tar(압축해재 할 파일명)

대부분 이런식으로 이용한다.
xvf 옵션을 많이 사용하는 이유는 대부분의 파일이 .tar로 묶여있기 때문인데, xvf옵션을 가지고 이런 확장자를 갖는 압축파일들을 풀 수가 있다.
xvf 옵션의 의미는 폴더에 압축해제를 하면서 압축을 푼 파일들을 화면에 보여달라는 뜻이다.

가끔가다가 .bz2로 묶여있는 압축파일이 있는데, 이 때는 'j' 옵션을 주면 풀 수가 있다.
.gz도 가끔 볼 수 있는데 이경우는 'z' 옵션을 주면 된다.


<< 압축생성 >>

압축을 할때 가장많이 사용하는 옵션은 'cvf'이다.
눈치를 채신분도 있겠지만, x는 압축해제, c는 압축생성이란 의미다.

$ tar cvf test.tar test
(test를 test.tar로 압축한다. 여기서 test는 dir일 수도 있고 file일 수도 있다.)

tar.gz로 압축하고 싶을 경우에는 'z'옵션을 주면 된다.


Error: suffix or operands invalid for `mov'



IEEE1394(based on TMO-LINUX)커널 컴파일 도중에 계속 뜨는 오류-_-
잘못된 곳이 없음에도 불구하고 계속 뜨길래 화가나서 검색해 봤더니, patch를 하면 괜찮아진단다;

3개의 파일을 수정을 해야한다.


1. linux/arch/i386/kernel/process.c

- asm volatile("movl %%fs,%0":"=m" (*(int *)&prev->fs));
- asm volatile("movl %%gs,%0":"=m" (*(int *)&prev->gs));
+ asm volatile("mov %%fs,%0":"=m" (prev->fs));
+ asm volatile("mov %%gs,%0":"=m" (prev->gs));



2. linux/arch/i386/kernel/vm86.c

- asm volatile("movl %%fs,%0":"=m" (tsk->thread.saved_fs));
- asm volatile("movl %%gs,%0":"=m" (tsk->thread.saved_gs));

+ asm volatile("mov %%fs,%0":"=m" (tsk->thread.saved_fs));
+ asm volatile("mov %%gs,%0":"=m" (tsk->thread.saved_gs));


3. linux/include/asm-i386/system.h

asm volatile("\n" \
"1:\t" \
- "movl %0,%%" #seg "\n" \
+ "mov %0,%%" #seg "\n" \
"2:\n" \
".section .fixup,\"ax\"\n" \
"3:\t" \

".align 4\n\t" \
".long 1b,3b\n" \
".previous" \
- : :"m" (*(unsigned int *)&(value)))
+ : :"m" (value))

#define savesegment(seg, value) \
- asm volatile("movl %%" #seg ",%0":"=m" (*(int *)&(value)))
+ asm volatile("mov %%" #seg ",%0":"=m" (value))



일일이 수정하기 귀찮다면 patch파일을 받아서 설치하는 것이 좋을 것이다.

2007년 11월 11일 일요일

IEEE1394(based on TMO-LINUX) 설치 및 컴파일


일단, IEEE1394 (based on TMO-LINUX)설치.

1. 패키지 다운로드 및 인스톨
config파일과 install파일을 포함한 kernel, law1394, tmolib 소스들을 함께 받아야한다. 그리고 install.sh파일을 실행시킨다.

$ ./install.sh

설치는 자동으로 /opt/TMO-LINUX/에 설치되며, 압축도 자동으로 풀어준다.


2. buildroot설치
buildroot를 다운받는 곳은 http://buildroot.uclibc.org/downloads 이다. (다운받기)
여기서 다운 받은 buildroot는 bz2로 압축이 되어 있으므로 tar를 사용할때 j옵션을 준다.

압축을 풀고나면 buildroot폴더가 생성이 되는데 이 안에서 컴파일을 해주어야한다. (이 컴파일 시간은 대략 1시간 좀 넘게 걸린다-_- 에러나면 끝장이다-_-;)

$ make menuconfig

여기서 옵션을 설정을 하는데, IEEE1394(based on TMO-LINUX)를 컴파일하기 위해서는 몇가지 설정을 해주어야하는 옵션이 있다.

우선, architecture는 i386. (다른보드에서 한다면 다른걸로 해도 상관없지만 1394는 대부분 i386보드다.)
그리고 Toolchain으로 들어가서 gcc버전을 바꾸어주는 부분을 찾아 gcc버전을 제일 낮은 것으로 바꾸고, cross complier와 library를 체크한다.
왜인지는 모르겠으나 'snprinf' 에러가 자꾸 발생하여 locale도 설정해주었다.

즉, Toolchain에서 설정 체크를 해주어야하는 것은 다음과 같다.

GCC compiler Version (gcc...) //gcc 버전 가장 낮은 걸로
Enable locale/gettext/i 18n support

C++ cross-compiler support
Build/install c++ compiler and libstdc++

나머지는 기본 설정으로 건드리지 않고 둔다.
그리고 저장을 하고 나와서 컴파일을 하면 된다.

$ make

(덧,
나는 kernel header version도 바꾸어 주었다. 2.6.22 버전의 커널을 사용하면 추가된 것이 많아서 enable여부나, 어떤 것을 선택할 것인가를 컴파일 도중에 물어본다. 그것이 귀찮으면 2.6.21 버전의 커널을 사용하시길...)

3. 소스 컴파일
buildroot를 설치했다면 1394소스를 컴파일한다.
compiler는 물론 cross로 i386-linux-gcc를 사용한다.
make파일에서 compiler를 지정하고 "make"명령을 사용하면 주주주주죽~ 컴파일되어가는 것을 볼 수 있다.

4. 기타 주의사항

make하다가 에러가 나면, 일단 마음을 가라앉히고 모니터를 원망스럽게 쳐다본 뒤, 컴퓨터를 한대 깐다-_-) 왜냐면, 다시 한시간동안 컴파일을 해야하기 때문이다.
보통 컴파일하다가 에러가 나는 경우는 옵션을 잘못 지정해 주었기 때문인 경우가 많다.
그럼 menuconfig를 실행시켜서 다시 옵션을 지정하고 컴파일을 해야하는데, 이 때 생성된 다른 폴더들 (예를들면 build_i386이라든가 하는)을 삭제하고 처음부터 다시 컴파일을 하는 것이 좋다.
build_i386과 toolchain_i386만 지우면 된다고 하지만, 좀 찝찝하면 project_i386까지 지워버리면 된다.

2007년 11월 4일 일요일

M (엠)

M[엠]

주연: 강동원(한민우 역), 공효진(은혜 역), 이연희(미미 역)


약 다섯달간을 기다린 영화 엠.

이명세 감독의 작품을 스크린으로 만난다는 두근거림과 강동원과 공효진 역도 궁금했고, 무엇보다 내 친구가 제작에 참여했다는 부푼 기대감으로 영화를 보러 갔다.

영화는 기대 이상이었다.
이명세 감독 다움 작품이랄까 스크린에서 모든걸 보여주고 표현하고자 했다.
많은 사람들의 악평에도 불구하고 나는 이 영화가 정말 좋았다.

시시각각으로 바뀌는 화면과 정지화면의 연속, 그리고 강동원과 공효진, 이연희의 표정, 모든 의미를 담고있는 M이라는 의미.

이 영화는 어디서 부터 시작인지 모르겠다.
나도 이명세 감독의 마법에 취해버린 것일까?ㅎㅎ

말로 설명하기는 힘든 영화이다.

어느 날 인가 부터 불면증에 시달리면서 한 글자도 쓸 수 없게 된 천재 소설가 한민우.
그는 자꾸 등뒤의 시선을 느끼며 불안해 한다.

그리고 그를 사랑해 그의 곁에 머무르는 보라색 옷을 입은 소녀와 그의 약혼녀 은혜.

의문의 바, 루팡바.


More specify



역시 이명세 감독 작품이다라는 생각을 할 정도로 대사는 적었고 스크린에서 모든 걸 보여주려 했지만, 내가 그 모든 걸 보지 못했다는 생각이 들어서 한번 더 보고 싶은 영화였다.

혹자는 M을 이명세라고 칭했고, 이명세는 인터뷰에서 M을 money라고 했지만; 역시 M은 미미일 것이다.

그리고 가장 감동적이었던 것은 마지막에 스크린이 올라갈때 제작부 3번째에 있던 그녀의 이름이었달까//ㅅ/
"정말 수고했어... 잘 봤어."

2007년 11월 2일 금요일

bootloader란

bootloader는 다른말로 bootstrap이라고 하는데 이 말의 어원은 boot(장화) + strap(끈)에서 비롯되었다.
장화의 끈을 묶고 일어서려는 사람이라는 설도 있고, 장화끈을 묶어주는 사람이라는 설도 있는데 아무튼 출발하기 직전의 준비작업이라는 의미가 되는 것 같다.

컴퓨터에서 bootloader는 OS의 최소부분을 메모리로 올려 프로세서가 이를 실행할 수 있게 해주는 일을 하는 녀석이다.
컴퓨터에 전원이 들어오면 시스템을 정상적으로 작동시킬 수 있도록 소프트웨어 및 하드웨어를 초기화 시키고 (Memory setting, CPU clock setting GPIO setting, Serial setting MAC address, Ethernet port setting 등) 커널을 부팅시키는 일을 한다.
하드웨어에 dependent하게 짜여져 있기 때문에 어셈코드가 많으며 flash메모리에 저장되기 때문에 크기가 매우 작다.

부트로더는 메모리로 운영체제를 읽어들이는 역할을 한다.
전원이 들어오면 가장 먼저 수행되어야 하기 때문에 항상 ROM같은 비휘발성 메모리에 보관되어 있다.
부트로더의 가장 큰 역할은 시스템의 초기화 이다.
CPU내의 MMU와 캐시를 활성화시키고 RT클럭과 하드웨어 등을 초기화 시킨다.


그렇기 때문에 bootloader에 대해서 공부하기 위해서는 clock 및 메모리 장치, flash를 잘 알아야하고, C와 assembler를 다룰 줄 알아야 한다.


bootloader의 종류는 매우 많은데 가장 많이 알려진 것들은 다음과 같다.

GRUB: Grand Unified Bootloader GNU 프로젝트 부트로더
LILO: linux loader x86기반의 리눅스
redboot: 레드햇에서 개발된 부트로더, eCos기반
U-boot: universal Bootloader PPCBoot와 ARMBoot를 타깃으로 개발(두개를 합친 것), 환경설정이 쉽다는 장점이 있다.
EZBoot: EZ-X5보드를 위하여 개발된 것으로 부트로더의 장점을 취합
BLOB: arm프로세서 기반의 하드웨어를 위해 개발. 아사벳보드 등
PMON: PROM Moniter MIPSqhem를 지원하기 위해 개발