DEPAPEPE さくら舞う

주원이 블로그를 갔다가 아주 멋진 연주를 듣게 됐다. 캐논을 어쿠스틱 기타로 이렇게 편곡을 할 수도 있다니 와…
연주한 DEPAPEPE 는 예전에 소년이 보내준 곡이 하나 있어 듣곤 했는데 참 감탄을 했었단 말이죠.

요건 소년이 그때 보내준 DEPAPEPE 의 さくら舞う 라는 곡인데 함 들어 보시게. 시디 사러 함 가봐야 겠다. 다른 곡들은 또 어떤게 있을지 기대된다.

//<![CDATA[
writeCode2("http://iam312.pe.kr/attachment/kk0.wma“)//]]>

이젠 굳은 살이 다 풀려버린 왼손가락과 뻣뻣해진 오른손가락이 주제를 모르고 촐싹 거린다. 아… 기타 튕기며 피리 불던 예전 동아리 방 생각도 나고, 술 한잔 한 알딸딸한 밤에 오랜만에 기분이 무척 좋다.

torque on ubuntu

hod 가 동작하기 위해서는 최소 3개의 노드가 필요하다. contrabass, cello, viola 세개의 노드로 구성을 한다고 가정한다.
이 중 contrabass 는 마스터 및 계산노드 역할을 하고, 나머지 cello, viola 는 계산노드 역할만 한다.
/opt/hadoop 디렉토리에 hadoop 이 설치되어 contrabass 가 namenode 가 되어 file system port 8020, web info port 50070 의 설정으로 hdfs 가 동작중이라 가정한다.
위의 설정을 따르는 /opt/hadoop/conf/hadoop-site.xml 파일의 내용이다.

<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

<!– Put site-specific property overrides in this file. –>

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://contrabass</value>
  </property>
  <property>
    <name>mapred.job.tracker</name>
    <value>cello:9001</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

여기서는 이렇게 정적으로 미리 설정된 hdfs 위에 map reduce 만 동적으로 클러스터가 구성되게 설정을 한다.
ubuntu(8.10) 에 패키징되어 있는 torque 를 설치할 때는 아래와 같은 몇가지 추가 작업을 해 주어야 한다.

마스터에 대해 (contrabass)
torque-server를 설치 하면 pbs_server를 실행 시키지 못하고 설치 스크립트가 종료한다. pbs_server -t create 를 손으로 실행을 해서 환경 설정을 해줘야 한다. 패키지 설치 스크립트에 이 부분이 빠진 듯.
dpkg –configure torque-server 를 하면 정상적으로 설치를 마무리 하고 torque-server 를 띄운다. 이걸 안해주면 synaptic 이나 update manager 를 열때마다 정상적으로 설치가 안된 패키지가 있다고 자꾸 알림 박스를 띄우니 꼭 해 준다.

sudo apt-get install torque-server
sudo pbs_server -t create
sudo killall pbs_server
sudo dpkg –configure torque-server

sudo apt-get install torque-scheduler

계산노드들 각각에 대해 (contrabass, cello, viola)
torque-mom을 설치 하면 pbs_mom를 실행 시키지 못하고 설치 스크립트가 종료한다. jobs 디렉토리와 config 파일을 생성해준다. 패키지 설치 스크립트에 이 부분이 빠진 듯.
이 참에, torque 서버 지정까지 해 준다.
dpkg –configure torque-mom 을 하면 정상적으로 설치를 마무리 하고 torque-mom 를
띄운다. 이걸 안해주면 synaptic 이나 update manager 를 열때마다 정상적으로 설치가 안된 패키지가 있다고 자꾸
알림 박스를 띄우니 꼭 해 준다.

sudo apt-get install torque-mom
sudo mkdir /var/lib/torque/mom_pri/jobs
sudo touch /var/lib/torque/mom_priv/config

sudo vi /var/lib/torque/server_name
#pbs_server가 동작하는 서버 이름
contrabass

sudo dpkg –configure torque-mom

모든 노드들에 대해
/var/lib/torque/spool 디렉토리에 t 권한 설정 및 쓰기 권한을 준다. 그렇지 않으면 나중에 클러스터를 구성해주는 hod allocate 명령이 실패한다. 패키지 설치 스크립트에 이 부분이 빠진 듯.

# rwxrwxrwt 설정
sudo chmod 1777 /var/lib/torque/spool

설치는 이로써 마쳤고, 아래는 torque 설정에 대한 내용이다.

마스터에 대해 (contrabass)

# 큐 생성
qmgr -c create queue batch
qmgr -c set queue batch queue_type = Execution
qmgr -c set queue batch enabled = True
qmgr -c set queue batch started = True

qmgr -c set server scheduling = True

${변수} 부분을 시스템 설정에 맞게 바꾼다

cp /var/lib/torque/conf/hodrc ~/.hod/hodrc
vi ~/.hod/hodrc

[hod]
stream                          = True
java-home                       = /usr/lib/jvm/java-6-sun
# 사용할 노드들을 묶을 이름
cluster                         = orchestra
cluster-factor                  = 1.8
xrs-port-range                  = 32768-65536
debug                           = 4
allocate-wait-time              = 3600
temp-dir                        = /tmp/hod

[ringmaster]
register                        = True
stream                          = False
temp-dir                        = /tmp/hod
http-port-range                 = 8000-9000
work-dirs                       = /tmp/hod/1,/tmp/hod/2
xrs-port-range                  = 32768-65536
debug                           = 4

[hodring]
stream                          = False
temp-dir                        = /tmp/hod
register                        = True
java-home                       = /usr/lib/jvm/java-6-sun
http-port-range                 = 8000-9000
xrs-port-range                  = 32768-65536
debug                           = 4

[resource_manager]
# 위에서 만든 queue 이름
queue                           = batch
batch-home                      = /usr
id                              = torque
#env-vars                       = HOD_PYTHON_HOME=/foo/bar/python-2.5.1/bin/python

[gridservice-mapred]
external                        = False
pkgs                            = /opt/hadoop
tracker_port                    = 8030
info_port                       = 50080

[gridservice-hdfs]
# 미리 정적으로 구성된 hdfs 를 사용하기 위해 True로 설정한다.
# hdfs 도 동적으로 사용하려면 그대로 False 로 두면 된다.
external                        = True
pkgs                            = /opt/hadoop
# 추가
host = contrabass
fs_port                         = 8020
info_port                       = 50070

~/.hod/hodrc 에서 정의한 cluster 이름을 노드의 호스트 명 옆에 적어준다.

vi /var/lib/torque/server_priv/nodes

contrabass orchestra
cello orchestra
viola orchestra

위에서 설정할 내용으로 torque 서버 재시작

sudo /etc/init.d/torque-server restart

 
계산노드가 모두 연결되었는지 확인

pbsnodes -a

hdfs 를 띄운다

start-dfs.sh

map reduce 클러스터를 3개의 노드로 구성을 한다

hod allocate -d ~/hod-clusters/test1 -n 3

hadoop을 cygwin 에서 구동시킬때 열어줘야 할 윈도우 방화벽 port

hadoop을 cygwin 에서 구동시키자면 윈도우의 방화벽 설정에 막혀서 원활히 동작하지 않는다. 아래 포트값들은 namenode 혹은 datanode 를 구동시키는데 필요한 port 값들이다. mapred 포트는 설정 예제에서 사용한 값이고 나머지는 hadoop-default.xml 에 정의된 값들이다.

ssh 22
dfs.datanode 50010
dfs.datanode.http 50075
dfs.datanode.ipc 50020
dfs.secondary.http 50090
mapred 9001
mapred.job.tracker.http 50030
mapred.task.tracker.http 50060
namenode 8020
namenode.http 50070
# 여기는 hod 에서 필요로 함
tracker 8030 (hdfs://namenode 방식을 사용할 때의 기본값 )
tracker info 50080

아래 tracker 8030, tracker info 50080 은 hod 설정을 살펴보다가 추가한 것인데 hod 를 실제 구동을 시켜 보지 않아서 추가로 필요한 것이 더 있는지도 모르겠다.

테스트라면 윈도우 방화벽 설정을 꺼버려도 상관없을 듯…

2008.12.11 추가

hod를 사용할 경우, hodrc 에 정의된 범위대로 포트가 열려야 한다. 범위가 좀 넓다. 그냥 윈도우 방화벽을 끄는게 속 편하겠다.

너의 의미

너의 그 한 마디 말도 그 웃음도
나에겐 커다란 의미
너의 그 작은 눈빛도
쓸쓸한 그 뒷모습도 나에겐 힘겨운 약속

너의 모든 것은 내게로 와
풀리지 않는 수수께끼가 되네

슬픔은 간이역의 코스모스로 피고
스쳐 불어온
넌 향긋한 바람
나 이제 뭉게구름 위에 성을 짓고
너 향해 창을 내리 바람드는 창을

너의 그 한 마디 말도 그
웃음도
나에겐 커다란 의미
너의 그 작은 눈빛도
쓸쓸한 그 뒷모습도 나에겐 힘겨운 약속

너의 그 한 마디 말도 그 웃음도
나에겐 커다란 의미
너의 그 작은 눈빛도
쓸쓸한 그
뒷모습도 나에겐 힘겨운 약속

너의 모든 것은 내게로 와
풀리지 않는 수수께끼가 되네

슬픔은 간이역의
코스모스로 피고
스쳐 불어온 넌 향긋한 바람
나 이제 뭉게구름 위에 성을 짓고
너 향해 창을 내리 바람드는 창을

[##_Jukebox|jk220000000000.mp3|09. 너의 의미|autoplay=0 visible=1|_##]

sweetpea 3집 거절하지 못할 제안 – 09. 너의 의미, 2007.12.


ebs space 공감 418회 – <1000회 공연 특집> 어쿠스틱 김창완 
방송일시 : 2008년 05월 05일 12:10

산울림 10집 11. 너의 의미, 1984.07.

세련되게 편곡한 sweetpea 도 좋고 투박한 산울림 원곡도 좋고. 김창완님이 참 부럽다. 다재 다능한 재능도 부럽지만, 저렇게 멋지게 나이 들어 가는 모습은 더 부럽다. 가끔 김광석씨도 살아있다면 지금 어떤 모습을 하고 있을까 하는 생각이 든다. 좋은 노래 많이 만드셨을 텐데. 김창완님 처럼 쭈글 쭈글 웃음 지으며 노래할텐데.

ipod touch mobile terminal에서 ctrl, esc 입력

ipod touch의 터미널을 사용하다 보면 vim을 띄워놓고 esc 를 눌러야 한다든지, ctrl-c, ctrl-d, ctrl-z 등등의 필요로 ctrl 키를 눌러야 할 때가 있다. 이럴 때 ctrl, esc 키등을 입력하는 방법이다.

사용자 삽입 이미지

이 화면은 ipod touch의 터미널에서 python IDLE를 실행시킨 화면이다. 보시다시피 IDLE를 종료하고 나가려면 ctrl-D 를 입력해야 한다(exit() 함수를 실행해도 되긴 하다.) ctrl 키를 어떻게 입력할 것인가?

사용자 삽입 이미지

터미널을 실행시키고 화면을 가볍게(정말 아주 살짝) 눌렀다 뗀다. 아래 설명하는 제스처 기능 때문인지 아주 민감하게 설정되어 있다. 이렇게 탭핑을 하면 저런 팝업이 뜬다. 몇가지 자주 사용하는 명령어들을 단축키에 할당되어 있다. 그 중에 약간 어두운 회색 배경을 가진  것들은 서브메뉴를 더 가진 것들이다. 이 중 misc 를 눌러보면 config 라는 버튼이 있다. 요걸 누르면 Preferences 창으로 전환 된다. 그 중에 Guestures 버튼을 눌러보자.

사용자 삽입 이미지

이 이미지는 화면에서 손가락을 오른쪽 아래 대각선 방향으로 문지를 때(?) ctrl 키 입력 모드로 전환 해 주도록 설정 되어 있다. 8방향 별로 키를 할당 할 수 있다.

사용자 삽입 이미지

터미널에서 실제로 해 보면 이렇다. python을 실행시킨 상태에서 오른쪽 아래 방향으로 문질렀을 때(?) ctrl 입력 모드로 전환 된 화면이다. 보면 커서가 보통 상태일 경우는 노란색인데 ctrl 입력 모드로 바뀌면서 빨간색으로 변한걸 볼 수 있을 것이다. 이 상태에서 키보드의 d를 누르면 ctrl-d 가 입력이 되면서 python이 종료된다.

터미널에서도 어느정도 자유롭게 vim 도 쓰고, ctrl-c로 강제 종료도 시킬 수 있다. 하지만 여전히 한글 입출력이 안되고, 소프트키보드는 실제 키보드에 비해 불편하다. 블루투스로 무선 키보드를 연결해서 사용할 수 있으면 좋을 것 같기도 한데, ipod touch 는 블루투스가 지원이 안된다. 이건 좀 아쉽다. 블루투스 GPS도 그림의 떡이고. 아래 데이터 커넥터에 블루투스를 연결할 수는 없나… iphone이 확 끌리는 순간이다.

ipod touch firmware 2.0.1 jail break

프리즌브레이크도 아니면서 왠 탈옥이냐고. ipod touch를 애플의 독점 소프트웨어 감옥에서 탈옥 시켜주기 때문에 jailbreak 라 한다.

요는 이렇다.

ipod touch, iphone은 BSD 커널에 기반한 Darwin 커널을 사용한다. 즉 내부는 유닉스다.
애플에서 배포한 펌웨어는 이 시스템 내부를 예쁜 UI로 싸고, 내부를 들여다 볼 수 없도록 막아놓았다. itunes 에서 저장해둔 복원용 펌웨어를 이용해, 내부를 들여다 볼 수 있게 수정한 펌웨어를 새로 빌드한다.
빌드한 펌웨어를 ipod touch 의 복구 모드를 이용해 기존 펌웨어를 덮어쓴다.
이제 내부가 열린 ipod touch를 가지고 재미나게 논다.

애플이 배포한 펌웨어를 해킹해 새로운 펌웨어를 생성해주는 툴은 해킹 천재들이 만든 winpwn (http://winpwn.com) 을 사용한다. 이 글을 쓰느라 다시 한번 홈페이지를 방문해 보니 엊그제까지만 해도 펌웨어 2.0.1 버전까지 지원 한다고 했는데, 어느새 2.0.2 버전까지 지원을 한다고 바뀌어 있다. winpwn 의 바이너리 버전이 같은걸 보니, 2.0.0, 2.0.1, 2.0.2 펌웨어 모두 크게 변경이 있는건 아닌가 보다. 이거 쓰고 나서 나도 펌웨어를 새로 빌드해 봐야 겠다.  펌웨어를 2.0.2로 업데이트 하고 나서 jail break를 하려고 보니 펌웨어 2.0.2를 지원하는 winpwn은 아직 릴리즈 되지 않았다. 곧 다운로드 가능할 것 같은데 기다리기 힘들면, 대신 quickpwn을 사용하자. http://blog.iphone-dev.org/post/46800837/my-little-pwnies-dressage

해킹된 펌웨어를 빌드해 주는 툴은 여러가지가 있는데,  나는 윈도우에서 사용 가능한 winpwn 을 사용했다. mac 용 툴은 찾아 보시길 바란다. vista 64bit 버전에서 winpwn 을 사용했으며, 32 bit 에서도 물론 잘 동작한다. 원래 32bit 용 어플리케이션이다.

winpwn 의 사용법은 그리 어렵지 않다. 실행해 보면 몇가지 메뉴가 있는데, 이 글에서 사용할 것은 두개밖에 없다. Browse .IPSW 를 눌러서 애플이 배포한 원본 펌웨어를 로드한다. 이건 파일 찾기로 2.0.1 을 하면 itunes 가 복원 모드에서 사용하기 위해 저장해둔 것이 나올것이다. 이걸 사용하면 된다. vista 64bit 버전에서는 c:사용자자기계정AppDataRoamingApple ComputeriTunesiPod Software Updates 디렉토리에 있다. AppData 디렉토리가 안보인다면 제어판의 폴더보기 옵션에서 시스템파일 보기 옵션을 켜면 보일것이다.

애플의 복원 펌웨어이미지 파일을 winpwn이 로드하면 IPSW Builder 메뉴가 활성화 된다. 눌러보면 몇개의 탭을 가진 새창이 하나 뜨는데 이중 첫번째 Applications 탭을 눌러 보자. Cydia, Installer 2.0, YouTube Activation fix 세개의 체크 박스가 있다. Cydia, Installer 2.0 등은 오픈소스, 해킹 소프트웨어들을 설치 할 수 있게 해주는 설치프로그램이다. 펌웨어 2.0.x 대의 AppStore 에 해당한다고 보면 된다. 이 프로그램을 이제 새로 만들 해킹된 펌웨어이미지 파일에 추가를 해주는 것이다. 잘 모른다면 Cydia 를 선택하고 하단의 Build .ipsw 버튼을 누르면 해킹된 펌웨어를 어디에 저장할지 물어보고 해당 디렉토리에 펌웨어를 빌드해 준다. 입맛에 따라 Installer 2.0도 설치하고, Custom Image 탭에서 ipod touch 부트, 복원모드 진입때의 그래픽 이미지를 변경할 수도 있다. Partion Resizer 탭에서 root 파티션의 사이즈를 변경할 수도 있다. ipod touch, iphone은 4G, 8G, 16G 버전에 관계없이 공통으로 300MB를 root 파티션으로 잡고 시스템 라이브러리 및 프로그램들을 여기에 설치하고, 나머지 용량을 data 파티션으로 사용한다고 한다. winpwn 을 사용하면 기본 500MB를 root 파티션으로 잡는다. 해킹된 펌웨어를 사용하여 오픈소스 소프트웨어를 이것저것 설치하다 보면 이 500MB가 부족할 수도 있는데 Partion Resizer 탭에서 이걸 더 늘려줄 수도 있다. 하지만 이건 기본 500MB로 그대로 두고 Cydia 인스톨러에서 BossTool을 설치해서 어플리케이션을 data 파티션에 설치하게 하는게 더 낫다.

이렇게 펌웨어를 빌드한후 이걸 ipod touch에 다시 넣는 과정이 필요하다. winpwn 도움말에는 iPwner 를 누르면 알아서 해준다고 하는데, vista 64bit 버전에서는 이게 잘 안되는 것 같다. 그래서 수동으로 DFU 모드로 들어가서 복구를 해 줬다.

DFU 모드로 들어가기 위해서는 대기 버튼을 계속 눌러서 전원을 끈후, 다시 대기 버튼과 홈 버튼을 계속 눌러서 부팅을 시킨다. 이때 전원이 들어오면 대기 버튼은 떼고 홈 버튼을 10초 정도 계속 누르고 있는다. DFU 모드로 들어가면서 DFU 모드용 usb 드라이버가 OS에 추가로 설치되고 itunes 에서 복원 버튼이 활성화 된다. shift 키를 누른채로 복원 버튼을 클릭하면 펌웨어이미지 파일을 선택할 수 있는데 이때 winpwn 에서 빌드한 펌웨어이미지 파일을 선택해서 복원을 진행시킨다. 전원이 들어왔다고 10초 정도 더 기다리지 않고 바로 홈 버튼을 떼면 일반 복원 모드로 진입을 하게 된다. 이 일반 복원 모드에서 해킹된 펌웨어이미지 파일로 복원을 하려고 하면 알수없는 에러(6) 을 내고 더이상 진행이 되지 않는다. 즉 pda 펌웨어 업데이트 할때 가끔 겪는 벽돌이 된다. ipod touch 가 벽돌이 되는, 사용할 수 없는 상태가 된다는 말이다. 이렇게 되면 애플에서 배포한 복원용 펌웨어이미지 파일을 이용해서 원래대로 돌아 갈 수 있다.

말이 길었는데 간단히 정리하자면,

os의 파일 찾기를 이용해서 itunes 가 저장해둔 복원용 펌웨어이미지 파일을 찾는다.
winpwn에서 Browse .IPSW를 눌러 이 파일을 로드한다
IPSW Builder를 눌러서 Applications 탭에서 Cydia 를 체크하고 Build .ipsw 를 눌러서 해킹된 펌웨어를 얻는다.
DFU 모드로 들어가서 새로 빌드한 해킹된 펌웨어로 복구한다.

winpwn의 readme 를 읽어보면 애플은 2.0.x 대의 펌웨어를 내놓으면서  펌웨어 1.x 대와 비교해 펌웨어 2.0.x의 내부를 완전히 다시 썼다고 한다. 그래서 1.x 대의 어플리케이션이 2.0.x 대에서는 동작하지 않는다. 그러면서 2.0.x 대의 펌웨어에 AppStore를 끼워넣었다. 들어가보면 그닥 유용하지 않은 무료 소프트웨어와 유용해 보이는 유료소프트트웨어를 팔고 있다. iTunes의 어플리케이션 판인 것이다. 1.x 대의 해킹된 펌웨어용 무료 소프트웨어 개발사들이 2.0.x 대의 유료 AppStore 로 들어갔다고 한다. 그래서 현재 Cydia 나 Installer 2.0 에는 설치할 수 있는 프로그램이 아직 많지 않다.
 
하지만 이러한 인스톨러는 여전히 유용하다. 바로 상당수의 오픈소스 소프트웨어들이 건재한 것이다. 특히 위에서 Cydia를 추천한 것은 바로 apt 를 이용한 데비안식 패키지 배포를 하기 때문이다. 우분투나 데비안에서 apt를 이용해 패키지를 관리하는 사람이라면 아주 반가울 것이다. apt-get, apt-cache 등의 명령이 그대로 포팅되어 있다. source list 를 추가하면 개인들이 만든 새로운 프로그램, 테마들도 추가 할 수 있다. open sshd, vsftpd, lighttpd 등의 패키지가 들어 있어서 무선인터넷이 가능한 환경이면 ipod touch 내부로 ssh, sftp, http 접속이 가능하다. 더구나 gcc, java, python, ruby 가 포팅되어 있어서 ipod touch 용 어플리케이션을 개발 할 수 있는 환경을 만들 수 있다. 들고다니는 BSD 박스가 되는 것이다.

사용자 삽입 이미지

이 커널이 OS-X 에 사용된 커널과 같은 버전인지는 나에게 mac 기계가 없어서 모르겠다. vmware 로 OS-X 를 설치해 보려고 했으나 실패했다. 이 터미널 에뮬레이터는 Cydia 에 들어가서 Terminal 패키지를 설치한 건데 ctrl 키나 esc 같은 특수키를 입력할 수가 없다. 그래서 ipod touch 에서 내가 좋아하는 vim을 사용하기 아주 불편하고, 터미널에서 ping 테스트시 ctrl-c 등의 강제 종료가 안된다. 음… 이건 터미널 에뮬레이터의 문제라기 보다는 ipod touch 에 내장된 키보드 문제군. 마우스 제스춰 비슷한 걸로 ctrl, esc 등의 입력이 가능하다. 여기 http://iam312.pe.kr/270 를 참고한다. 그리고 이 터미널 에뮬레이터에서는 한글 입출력이 안된다.  이런 문제점들은 다른 pc에서 ipod touch 로 ssh 접속해서 들어가서 작업하면 된다.

사용자 삽입 이미지

berkeleydb 패키지가 업데이트 되었군. 소스 가져다 삽질 할 필요없이 arm 기계의 빌드된 바이너리를 바로 사용할 수 있다. 데비안, 우분투여 영원하라~ 아래는 같은 업데이트 사항을 Cydia 인스톨러에서 확인한 것이다.
사용자 삽입 이미지

Cydia 인스톨러를 실행할때마다 업데이트 사항을 체크해서 보여주고 바로 업데이트까지 해준다. 우분투의 synaptic 보다는 불편하지만 좋다. ^^

사용자 삽입 이미지

해킹된 펌웨어를 이용할 때의 또 다른 이점은 다양한 테마엔진을 사용할 수 있는 것이다. 애플이 제공하는 테마엔진은 Spring Board 인데, 이를 확장시킨 오픈 소스 진영의 Summer Board 가 있고, 여기에 맞춰 공개된 다양한 테마들이 있다. 위는 Summer Board 에 기능을 더 추가한 Winter Board 라는 테마 엔진의 Buuf2 라는 테마를 적용한 것이다. 개발자가 아니더라도 애플의 감옥에서 ipod touch 를 탈옥 시킬 이유가 여기 있다.

1.x 대의 해킹된 펌웨어를 이용해 개발자를 끌어들여서 2.x 대의 AppStore 를 이용해 유료 어플리케이션 시장을 만든 애플의 능력은 음원을 이용한 시장을 연 iTunes의 충격보다 더하다. 이런 돈을 버는 장을 만드는 능력을 어찌하면 배을 수 있을 까나.

cygwin sshd on vista

회사에서 내 업무의 대부분은 유닉스 환경이다. 그리고 난 유닉스 철학을 좋아 한다. 하지만 집 피씨엔 MS 윈도우가 설치되어 있다. 두가지 이유가 있는데, 첫번째는 Adobe 사의 Lightroom 이라는 사진 관리 보정 프로그램이고, 두번째는 인터넷뱅킹 때문이다.

MS 윈도우에서 유닉스 환경을 쓰려면 몇가지 방법이 있다. vmware 류의 가상 머신에 실제 유닉스를 설치하는 것, Services For Unix (SFU), Cygwin 류의 유닉스 레이어를 설치하는 것. 그 외에 MSYS + MinGW 도 있지만, 유닉스 툴을 쓸 수 있게 해 줄 뿐이지 환경을 갖춰주는 수준까진 아닌 것 같다. 정확히는 써보지 않아서 잘 모르겠다. 여튼 난 이 중에서 Cygwin을 주로 사용하는데, 이걸 이용해 비스타에서 sshd를 설정하는 것에 간략히 정리를 해 보려고 한다.

일단 http://www.cygwin.com 에서 cygwin 을 다운로드 받는다. Setup.exe 가 다운로드 될 텐데 적당한데 저장하자. 이것을 다운로드만 받아 둔다. 그리고 마우스 오른쪽 버튼을 눌러 관리자 권한으로 실행 을 눌러 관리자 권한으로 실행 되도록 한다. net 카테고리에 openssh 를 선택해서 설치를 마친다.

설치를 마치고 막상 쉘을 열어보면 sshd가 안 떠 있다. /etc 안을 봐도 ssh 관련 설정 파일은 안보인다. cygwin 에서 sshd 를 사용하기 위해서는 추가 작업을 한번 더 해줘야 한다.

Cygwin / Bash Shell을 관리자 권한으로 실행 시킨다. 이게 중요하다. 오른쪽 마우스 버튼을 눌러서 관리자 권한으로 실행 을 꼭 선택해서 실행 시켜야 한다. 안그러면, 권한 문제로 sshd 관련 계정과 설정 파일들이 생성 되지 않는다.

시스템 환경 변수에 CYGWIN=ntsec 를 넣어준다.
ssh-host-config 를 실행시켜서 전부 yes 를 선택한다. CYGWIN 값은 ntsec 로 넣어준다.
cygrunsrv -S sshd 를 실행시켜 sshd 데몬을 NT 서비스로 띄운다.

$ ssh-host-config
:
:
:
$ cygrunsrv -S sshd

이제 ssh localhost 를 해 보면 접속이 될 것이다.

그런데 문제가 하나 있다. 가끔 회사에서 집 피씨로 ssh 접속을 해서 뭘 좀 확인해 봐야 할 때가 있다. 그런데 인터넷 회선 업체에서 유명한 포트는 전부 막아 놔서 sshd 포트를 변경해야 한다. 그런데 이거 /etc/sshd_config 파일을 변경하려고 하니 파일의 소유자가 내 계정이 아니라서 쓰기가 안된다. 저 파일안의 Port 값을 바꿔야만 하는데 낭패다.

해결책은 ssh-host-config 안에 있다.
Cygwin Bash Shell을 관리자 권한으로 다시 열자.

$ vi /bin/ssh-host-config
:
port_number=22
:

저장할 때 권한 때문에 바로 저장이 안될 것이다. w! 로 강제 저장한다.
저 값을 원하는 값으로 변경하고 ssh-host-config를 재 실행한다. 옵션은 아까 위에서 처럼 전부 yes 다. 그러면 변경한 포트 번호로 설정된 /etc/sshd_config 파일을 재 생성 해 준다.

sshd 서비스를 재 시작하자.

$ cygrunsrv -E sshd
$ cygrunsrv -S sshd

마지막으로 윈도우 방화벽 설정을 열어 변경한 포트 번호를 차단 예외 목록에 넣어 주자.
이제 변경한 포트 번호로 ssh 접속이 될 것이다.

gcc와 make를 설치하면 간이 개발 환경도 갖출 수 있다. 하지만, 64bit 비스타 임에도 불구하고 이렇게 꾸민 Cygwin 환경은 32bit 이다. 이 점이 좀 아쉽다.

꽃지 해수욕장, 그리고 렌즈 테스트

주말에 다녀온 안면도 꽃지 해수욕장이다. 렌즈 테스트겸 한롤을 찍었다. 그. 런. 데… 필름 여러장이 노출 부족이다. 렌즈가 문제인가… 아님 유통기한이 2년이나 지난 필름이 문제인가. 끄응… 바보같이 유통기한이 지난 필름으로 테스트를 하다니.

사용자 삽입 이미지

fm2, mf 50.4 ai-s | carrefour? 200 | ls-30
잘 나왔나 볼까.

사용자 삽입 이미지

fm2, mf 50.4 ai-s | carrefour? 200 | ls-30
모래 바닥에 무얼 끄적거리는 소년
사용자 삽입 이미지

fm2, mf 50.4 ai-s | carrefour? 200 | ls-30
이러고 도망 갔다. 소년이 간만에 한건 했다.

사용자 삽입 이미지

fm2, mf 50.4 ai-s | carrefour? 200 | ls-30
이번 여행에서 얻은 큰 성과. 삼각대의 재 발견.

처음 도착했을 때는 구름이 잔뜩 끼어서 낙조를 못 볼까 걱정했는데 다행히 날씨가 좋아지면서 좋은 경치를 볼 수 있었다. 가까워서 당일치기로 사진 찍으러 다녀오면 좋겠구만. 허이사님이 집에 굴러다니는 안쓰는 필름 2통을 주셨는데 가만보니 유통기한이 2년이나 지난 필름이었다. 껍데기에 까르푸라고 적혀 있는것 보니, 까르푸 자체 브랜드로 어디서 OEM 해 왔나보다. 아그파 같다는 느낌이 든다. 맛간 필름이인데도 그럭저럭 사진이 찍힌다.

니콘 50mm 표준 단렌즈

이번에 여행가서 쓰려고 니콘 클럽 장터에서 구매했던 철제 후드와 nikkor mf 50mm ai 형 렌즈의 조리개 링이 문제가 좀 있어서 렌즈는 반품을 하고 깨끗한 렌즈가 올라오지 않나 계속 장터를 기웃 거렸지만, 깨끗한건 통 올라오질 않는다. 여행 날짜는 다가오고 해서 2, 3만원 더 주더라도 깨끗한 걸로 샵에 가서 사자 하고, 오늘 남대문을 다녀왔다.

그래서 구한 렌즈!

사용자 삽입 이미지

coolpix 5200 | digital n/a | digital n/a
내방 책상

nikkor mf 50mm f1.4 ai-s, 5m 무한대 신형 렌즈이다. 흠집 찾아보기 힘든 초신동이다. 어디서 묻은 건지 모르겠지만 대물렌즈에 지문이 한군데 보이긴 하는데 뭐 상관없다. 엊그제 반품한 렌즈 살때 같이 산 후드를 달았다. 아주 맘에 든다.

이미 펜탁스 KX를 가지고 있는지라, 수동 필름 사진기를 두개나 갖고 있을 필요가 없어서 KX는 팔까 생각 중이다. 성능만 따졌을때는 KX가 최대 셧터 속도가 1/1000 이고, FM2가 1/4000 이지만, KX는 FM2에는 없는 미러락 기능을 가지고 있다. 별 사진 찍어 보겠다고 일부러 미러락 기능이 있는 KX를 샀던지라 다시 팔기도 아쉽고, 이렇게 팔아 버리면 저런 상태 좋은 녀석을 다시 만나기도 힘들것 같아 갈등이 많다.

KX를 팔더래도 아버지께 드렸던 ds2를 다시 가져오게 될 경우, 혹은 나중에 펜탁스에서 디지털 풀 프레임 바디를 출시할 때를 대비해서 KX에 물려있는 smc K50mm f1.4 렌즈는 계속 가지고 있어야겠다.

그나저나 nikkor 렌즈는 어떤 색감을 보여주려나. 듀근듀근 기대가 되는구나~ smc 렌즈 중에서도 특히 진득한 이 K형 렌즈가 아주 맘에 드는지라, 새로 산 이 nikkor 렌즈의 색감에 쉽게 만족할 수 있을지 모르겠다. 이 K형 렌즈는 같은 smc 코팅을 한 FA100mm MACRO 렌즈의 색감과 비교해도 참 진득하단 말이지. K렌즈 제작 하던 시대에는 방사능 원소가 포함되어서 지금은 사용되지 않는 광물을 렌즈 제작에 사용했다고 한다. 이 영향 때문이지 않을까 싶기도 한데, 여튼 이 K50mm f1.4렌즈는 참 진득한 사진을 만들어 준다.

요즘 같은 디지털 시대에는, 이 렌즈나 저 렌즈나 보정을 거친 최종 결과물의 색감은 다 비슷비슷해 지기 때문에 큰 의미가 있는 건 아니지만, 스캔 하기 전의 슬라이드 필름을 들여다 보고 있자면, 그 렌즈들의 색감차가 보인다. 이건 raw로 찍은 디지털 결과물에서도 마찬가지다. tokina 19-35mm 와 smc K50mm 렌즈의 색감차는 확연하다. 하지만, raw든 보정전의 스캔 결과물이든, 내가 의도했던 그 상황의 이미지가 그대로 담겨있는 건 아니기에, 결국은 보정을 하게 되고 그렇게 되면 뭘로 찍었든, 최종 결과물은 다 비슷비슷 해지더라. 결국 이후에 남는 차이는 해당 렌즈가 얼나마 플레어, 색수차 억제를 잘 해주느냐, 배럴 디스토션을 얼마나 없애주느냐 등의 저분산 유리나 비구면 렌즈알 사용 여부 등의 설계에 따른 하드웨어적인 문제로 인한 차이 뿐이다.

하드웨어 성능이 모자라는 렌즈는 그 렌즈가 감당 못하는 상황에선 안 찍으면 그만이다. 후드로 웬만큼 가렸어도 역광에서 플레어가 발생하는 싸구려 렌즈면 굳이 역광에서 찍어서 사진을 망치느니 그 상황에선 안찍으면 그만인 것이거든. 더군다나 사진으로 밥먹고 사는 사람도 아닌데, 망친 사진이면 또 어떤가. 나름의 의미가 있는 사진이라면 그것만으로도 족하다. 그래서 난 비싼 최신의 AF렌즈 보다, 저렴하게 원하는 화각을 구성할 수 있으면서도 좋은 화질을 보장해 주는 MF 단렌즈가 좋다. 손과 눈이 초점 맞추고 노출 조정하느라 바빠지긴 해도, 맘에 드는 화각이 안나와서 발 줌을 해야 할 때가 있어도, 그 정도 수고는 해줄 수 있다. ^^

하지만, 요즘은 시그마의 밝은 구형 표준 줌 렌즈가 땡길 때가 있다. 화질도 단렌즈 못지 않게 좋고 발줌할 필요도 없고 꽤 밝다. 나중에 디지털 풀 프레임으로 전환을 하게 된다면, 50mm 나 35mm 단렌즈 하나 하고, 시그마 구형 표준 줌만 구해서 사용할 생각이다.

FM2 생겼다!

소년 동생에게서 니콘 필름 사진기를 얻었다. FM2 + 35-70 3.5-4.8. 번들렌즈라는구만. 코시나에서 OEM한 렌즈다. 저번주에 찍어서 주말에 필름을 스캔해 보았는데 사진기는 아주 훌륭하다! 하지만 렌즈가 좀 아쉽다.

사용자 삽입 이미지

FM2, nikkor 35-70 3.5-4.8 | agfa vista 400 | LS-30

사용자 삽입 이미지

FM2, nikkor 35-70 3.5-4.8 | agfa vista 400 | LS-30

35mm 광각 영역에서 간이 매크로 기능이 있다. 높은 배율은 아니지만, 없는것 보단 좋다. ^^
역광엔 어떨까. 일부러 역광 상황에서 찍었다.

사용자 삽입 이미지

FM2, nikkor 35-70 3.5-4.8 | agfa vista 400 | LS-30

사용자 삽입 이미지

FM2, nikkor 35-70 3.5-4.8 | agfa vista 400 | LS-30

하지만 역광에는 취약하다. 플레어가 발생한다. 그래도 후드도 없는 상태에서 UV필터 하나로 요정도면 괘안타.
굳이 니콘 50mm 를 새로 사기 싫어서 가지고 있는 펜탁스 K50mm 를 FM2에 어케 쓸 수 없을까 해서 변환 어댑터 같은게
있을까 하고 찾아보니, 니콘 F마운트와 펜탁스 K마운트는 구경이 비슷해서 어댑터를 못만든다고 그러는구먼. 아쉽지만… 중고 장터에서 표준 50mm 1.4 렌즈를 하나 사야겠다. 알아보니, 10만원대면 구입 가능 하구먼. 니콘 MF 렌즈가 non-ai, ai, ai-s 로 구분되는데 펜탁스로 치자면, ai 는 k나 m형 렌즈고, ai-s는 a형 렌즈에 대응된다고 볼 수 있겠다. 즉, ai, non-ai는 조리개 우선, 매뉴얼 모드를 사용할 수 있고, ai-s는 셧터 우선에 프로그램 모드까지 가능한 것 같다. non-ai는 조리개 자동 개방이 안되는 구형인데, 굳이 펜탁스에 대응하는 것을 찾자면 m42 스크류 적의 렌즈 형태로 보여진다. 스크류 마운트는 아니지만, 조리개 자동 개방이 안되는 점에서 비슷한 것 같다. non-ai는 몇몇 바디를 제외하고는 조리개 값이 항상 최대 개방 상태로만 전달된다. 조리개 값을 바디에 인식 시키기 위해서는 렌즈의 마운트 부위를 개조 해야 한다고 한다.

니콘은 구형 수동 렌즈가 펜탁스 만큼 완벽히 지원되는게 아니라 좀 아쉽다.