ubuntu에서 django 설치

웹 어플리케이션을 작성하기 위한 대표적인 framework 은 ruby on rails 다. 하지만 내가 잘 모르는 ruby 를 사용하려니 왠지 막막하고, 더구나, 웹서버와 ruby의 연동을 위한 웹서버 설정은 나를 더 갑갑하게 했다. 내게 친숙한 python 으로 어케 좀 해 볼수 없을까 해서 django 를 알아보니 우부툰에 마침 패키징 되어 있어서 쉽게 설정을 마쳤다. 개인 프로젝트에 굳이 framework 을 사용할 필요가 있을까 했지만, 공부하는 셈 치고 이왕이면 처음부터 체계적으로 작성해 나가는게 나을 것 같았다. django 메인 페이지에 적혀 있는 DRY(Don’t Repeat Yourself) 처럼, 폼 만들고, 예외처리 스크립트 넣고 하는 반복 작업을 하느니 차라리 그 시간에 다른 공부를 하는게 낫다 생각했다. 물론 이 framework 을 공부하는 시간 또한 못잖겠지만, 한번 알아두면 좋지 않은가.

여기서는 django를 우분투(Hardy) 상에서 apache2, mod_python 으로 설치 하는 것에 대해 간략한 설명을 한다.

$ sudo apt-get install apache2-mpm-prefork
$ sudo apt-get install libapache2-mod-python
$ sudo apt-get install python-django

주의할 것은 apache2 패키지를 설치할때 기본적으로 설치 되는 패키지는 apache2-mpm-worker  이다. mod_python 과 사용하기 위해서는 apache2-mpm-prefork 패키지를 설치해야 한다(아래 reference 1 참고). libapache2-mod-python 패키지를 설치할때 의존성에 의해 apache2-mpm-worker 패키지를 지우고 apache2-mpm-prefork 패키지로 재 설치 되긴 하지만, 혹시 몰라서 적는다

이렇게 하면 django 패키지가 설치 됐다. 제대로 설치 되었는지 궁금할텐데, 프로젝트 디렉토리 설정을 해서 확인을 해보자.

우분투의 apache2 디렉토리 구성은 이렇다.

/etc/apache2 아래에 설정이 들어 있다.
/var/www 여기는 웹서버의 루트 디렉토리이다.

/var/www/yogy 디렉토리를 프로젝트 디렉토리로 해서 http://localhost/yogy 를 호출해 보도록 하겠다.

<Location “/yogy/”>
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE yogy.settings
    PythonPath “[‘/var/www’] + sys.path”
    PythonDebug On
</Location>

이 내용을 /etc/apache2/httpd.conf 안에 넣는다.

Location “/yogy/”
SetEnv DJANGO_SETTINGS_MODULE yogy.settings
PythonPath “[‘/var/www’] + sys.path”

이 세 줄이 중요하다.
Location 은 프로젝트의 URI를 지정하는 것이고 디렉토리를 지칭하는 것이 아니다. 따라서 파일 시스템상의 위치는 /var/www/yogy 가 되겠다.
다음으로 yogy.settings 는 yogy 프로젝트에서 settings.py 파일을 설정 정의 파일로 사용한다는 것이다.
마지막은 python 경로 지정을 해준다. 기본 시스템 경로에 웹서버의 루트의 경로를 추가해서 웹서버 루트 디렉토리에 아래에 있는 우리의 파이썬 프로젝트 모듈들을 로드 할 수 있게 한다.

django 공식 홈의 How To use Django with mod_python 문서에는 여기까지만 나와 있어서 처음엔 저 yogy.settings 를 어떻게 하라는건지 막막했다. 직접 yogy 디렉토리에 settings.py 빈 파일도 만들어 보고 했는데 에러 메시지만 출력하고 동작하지 않는다. 약간의 삽질을 하다 보니 관리 프로그램이 있었다. (아래 reference 2 참고)

$ whereis django-admin
django-admin: /usr/bin/django-admin

해 보면 /usr/bin/django-admin 이 있음을 알 수 있을 것이다.

그냥 실행해 보면 여러가지 옵션이 나오는데 그 중에 startproject 가 있다.

$ cd /var/www
$ django-admin startproject yogy

이렇게 실행하면 yogy 디렉토리를 만들고 그 안에 몇가지 스켈레톤 파일들을 복사해 준다. 거기에 settings.py 도 발견 할 수 있을 것이다.

이제 브라우저에서 http://localhost/yogy 를 열어보자.
It worked! 가 출력되는 페이지를 볼 수 있을 것이다.

이제  django 로 멋진 사이트를 만들기만 하면 된다!!!

이 외 각 언어별 추천할 만한 framework 을 적어둔다
Spring http://www.springframework.org/   java
Ruby on Rails http://www.rubyonrails.org/ ruby
TurboGears http://www.turbogears.org/ python
Cake http://www.cakephp.org/ php

reference :
1. http://www.djangoproject.com/documentation/0.96/modpython/ mod_python 설정에 관한 페이지다.
우분투에 패키징 되어 있는 django 는 0.96 버전이다. 최신 버전을 사용한다면 http://www.djangoproject.com/documentation/modpython/ 를 참고한다.
2. http://www.djangoproject.com/documentation/install/ 여기에는 django-admin 프로그램에 관한 내용이 언급이 되어 있다. 우분투를 사용한다면 apt-get 만으로 충분하지만, 설치 관련 내용이 궁금하다면 이 페이지를 참고 한다.

효사정 야경

늦은 저녁을 먹고 간만에 운동겸 사진기랑 삼각대 둘러메고 효사정으로 쓰레빠 끌고 올라갔다. 효사정에서 내려다 보는 한강 야경이 제법 볼만 하다. 좀 으슥한게 문제긴 하지만.

사용자 삽입 이미지

*ist DS2, tokina 19-35 | digital n/a | digital n/a
집 앞, 효사정

펜탁스에서도 풀프레임 디지털 바디가 저렴한 가격으로 나왔으면 좋겠다. 필름 바디에서 이 토키나 19-35의 19mm 영역은 정말 광활한데, 이 크랍바디에서의 19mm는 그저 그렇네.

그래도 이런 일상적인 사진을 찍기엔 부족한건 없다.

사용자 삽입 이미지

*ist DS2, tokina 19-35 | digital n/a | digital n/a
집 앞, 효사정

단지 넓은 풍경에서 좀 아쉬울 뿐.

디지털 풀프레임 바디를 쓰고 싶은데, 펜탁스의 풀프레임 바디가 언제 나올지 모르는 상황인지라, 중고 내수 캐논 5D를 좀 알아봤는데, 가격이 아직까지는 상당하더만. 게다가 내 펜탁스 마운트 렌즈들을 어댑터로 끼웠을때 측광이 잘 되는지도 의심스럽고. 니콘 D3는 나온지 얼마 안되서 무자게 비싸고. 미놀타쪽이 좀 저렴하게 나와주면 좋겠는데 이 동네도 펜탁스 못잖게 언제 나올지 모르겠고. 올림푸스는 포서드를 버릴것 같지 않으니 아예 기대도 하기 어렵고…

필름 바디를 포기하고 크랍바디용 광각렌즈를 사서 크랍바디로만 살면 그나마 저렴하게 해결되는 문제긴 하지만… 고민이 좀 되네.

끄응… 일찌감치 접고, ds2 아버지 드리고 나면, 남아있는 필름이나 열라 소진해야 겠다.

밀린 사진2

설날에 다녀온 고향에서 찍은 사진 몇 장.

이번 설엔 처음으로 부릉이를 몰고 갔다. 목포 다 가서 과속 카메라에 찍혀서 맘이 좀 아프다. 부릉이를 몰고 간 덕에 어무이 여행을 좀 해 드렸다.

몇년만에 찾은 외가집.

사용자 삽입 이미지

*ist DS2, tokina 19-35 | digital n/a | digital n/a
외할머니댁, 압해도

외할머니는 사용하지 않는 교회의 사택에 사셨다. 외할머니가 돌아가시고 난 후, 교회가 땅을 팔았나보다. 지금은 집은 없어지고, 비닐 하우스가 들어서 있었다. 대나무 담장만 유일하게 남아 있고, 그 좋던 감나무, 무화과 나무, 대추나무는 모두 베어져버렸더군. 어무이도 많이 서운해 하는 눈치다.

동네도 많이 변했다.

사용자 삽입 이미지

*ist DS2, K50 | digital n/a | digital n/a
외할머니댁, 압해도

목포와 압해도 사이에 다리가 놓여져 차로 편하게 다녀왔지만, 정작 외할머니댁은 사라지고, 동네도 변해서 기억에 남아있는 외가집이 더 이상 아니었다.

몇십년 만에 찾은 어무이의 고향.

이제서야 안 사실이지만 어무이의 고향은 강진이라고 한다. 아들내미가 무심하기도 하지. 가는길에 어무이가 어렸을 적 고향 동네 얘기를 해줬다. 집앞엔 꽤 큰 개울이 있고 뒷산이 꽤 커서 아부지가 처가집에 들르면 외삼촌이랑 토끼 잡으러 갔다오곤 했다고 한다.

사용자 삽입 이미지

*ist DS2, K50 | digital n/a | digital n/a
어무이 고향, 전남 강진

하지만 어느새 개울은 저수지가 들어서서 사라져버렸다. 10년이면 강산이 변한다더니, 정말로 강산이 변했다. 어무이가 어렸을 적의 친척들은 모두 다 돌아가셨거나, 고향을 떠났고, 지금은 어무이에게 외삼촌, 외숙모 되시는 어르신 세분만 남아계셨다. 물어물어 친척댁을 찾아냈다. 어무이는 이 곳을 몇십년만에 와본 것이라 했다. 어르신들과 만나 이런저런 얘기를 하면서 이산가족 상봉 했다고 농담 삼아 얘기 하시는데, 살짝 눈물을 훔치시는게 짠 하다.

사용자 삽입 이미지

*ist DS2, K50 | digital n/a | digital n/a
어무이 고향, 전남 강진

이곳도 역시나 저수지로 마을 일부가 수몰 되어 버려서 많이 변해버렸지만, 아직은 변하지 않고 남아 있는 부분이 있어서 정말 다행이다. 어무이가 그래도 아직은 의지할 수 있는 친가 친척이 남아 계시다는게 어찌나 다행스러운지 모르겠다.

부모님들께 잘 해 드려야 겠다는 생각이 든다. 평소에 잘 해드리지 못해서 죄송한 마음 뿐이네. 아버지에게 인화비 비싸게 사진 크게 뽑지 말라고 말할게 아니라, 마음껏 찍고 넓은 모니터로 널찍하게 보실 수 있게  DSLR과 넓은 모니터를 사드려야 했다. 다음번에 내려갈땐 내 DSLR과 삼각대랑 피씨를 싣고 가서 아버지 쓰시라고 드리고 와야 겠다. 오래된 수동 필름 사진기만 쓰신 분이라, 복잡한 DSLR은 어려워 하실지 모르지만, 기본 원리는 같으니, 수동 50mm 렌즈 물려서 간단히 사용법 알려 드리고 피씨로 옮기는 법 알려 드리면, 비용 걱정 없이 마음껏 사진 찍으실 수 있을 게다.

밀린 사진

그 동안 바빠서 영 여유가 없었구만. 이제서야 한참 지난 사진들을 정리했다. 설 연휴를 맞아 영은양과 단양을 다녀왔다. 부릉이가 생긴 후로, 활동 영역이 아주 넓어졌단 말이지. 단양의 충주호가 좀 볼만할 것 같았는데, 날이 추워 꽁꽁 언데다가, 설 대목인지라 갈만한 곳이 별로 없어서 고수동굴만 보고 왔다.

고수 동굴 돌아다니면서 찍은 사진 .

사용자 삽입 이미지

*ist DS2, tokina 19-35 | digital n/a | digital n/a
고수동굴, 단양

사용자 삽입 이미지

*ist DS2, tokina 19-35 | digital n/a | digital n/a
고수동굴, 단양

동굴안이 마치 에일리언 뱃속 같이 괴기스러웠다. 그런데 동굴안이 한 겨울인데도 신기하게 무척 따뜻했다. 코트를 벗었는데도 땀이 날 정도였다. 지열이 상당한 듯 하더만.

윈도우 적응하기 II

어제 지난번에 의뢰 받은 사이트 제작을 거의 마무리 되가고 있는 즈음… 테스트 하던 코드를 실서비스를 할 서버에 적용했다. 압축파일이 업로드 됐을때 정해진 디렉토리에 압축을 해제 하는 비교적 간단한 루틴인데, 왠걸 테스트한 리눅스 서버에서 잘도는 코드가 윈도우 서버인 서비스 서버에 붙였더니 오동작 한다. 끄응…

php 에러 로그 파일을 열어 봤다.

zip_read() expects parameter 1 to be resource, integer given in ….
zip_close() expects parameter 1 to be resource, integer given in ….

압축 라이브러리가 압축 파일을 못 열었다. 새벽 2시가 다 되간다. 일단 접어두고 낼 하자.

회사서 작업중인 서비스의 오픈이 얼마 안남은 지금, 늦게까지 막바지 작업을 하고 집에 들어왔다. 피곤하니 잠깐만 보고 자자. php 공식 홈페이지를 뒤지다 보니 IIS에서만 유독 그런 증상이 있다는 걸 알았다. 4.x 버전의 zlib 함수 설명에 full path 가 아니어서 그랬다는 코멘트가 하나 있다. 움… 그런가? 압축 해제 해야 할 업로드된 파일의 경로를 찍어보자.

C:WINDOWSTempphp16.tmp

뭐야… full path 잖아… 다시 곰곰 생각해 봤다. Temp라… 혹???
역시 그랬다. Temp에 IUSR 의 권한이 없다!

Temp 디렉토리에 인터넷 게스트계정(IUSR_MACHINENAME)에게 모든 권한을 부여하니 잘 작동한다!!! 이거 보안 문제 생기는거 아닌가? 뭐, 일단 잘 동작하니 그건 나중에 알아보자. 이젠 잠이나 자자구~

부릉이와 함께 한 두번째 주말 나들이

부릉이와 함께 한 두번째 주말 나들이 다녀 왔다. 코스는 가까운 상암 월드컵 공원과 김포공항 아웃렛.

간만에 월드컵 공원에 왔는데, 날씨가 춥고 흐려서 한바퀴 휘 둘러보고 바로 나왔다.

사용자 삽입 이미지

coolpix 5200 | digital n/a | digital n/a
월드컵 경기장.
삼각대를 안가져 가서 난간에 똑딱이를 세워두고 타이머 돌렸다.

다음 목적지는 김포공항 아웃렛.

사용자 삽입 이미지

coolpix 5200 | digital n/a | digital n/a
월드컵 공원 주차장, 부릉이 안, 영은양이 도촬.
김포공항을 어떻게 가는지 아이나비양에게 물어보는 중.

내가 찜 해둔 완전소중 파란 소파가 잘 있나 궁금했거든. 가격이 무려 29만 8천원! 6개월 짜리 적금이라도 들어야 할까. 소파야 조금만 기다려. 내가 곧 데리러 갈께! ㅜㅜ

소파와 안부인사를 하고, 아웃렛 매장을 한바퀴 휘휘 구경했다.

사용자 삽입 이미지

coolpix 5200 | digital n/a | digital n/a
김포공항 대합실.

자, 영은양 집으로 고고싱!

사용자 삽입 이미지

coolpix 5200 | digital n/a | digital n/a
김포공항 주차장, 부릉이 안.
ISO 400 였는데 어두운 곳에서의 노이즈가 상당하다. 어두운데선 플래시를 꼭 터트려야 할 듯.

김포공항 주차장을 빠져 나온지 얼마 안됐는데 아이나비양이 침묵이다! 이잉??? 아이나비양이 말이 없으니 길이 여러 갈래고 드넓은 공항을 당최 빠져 나갈 수가 없다. 김포 공항을 두어바퀴 돌고 가까스로 공항 외부로 빠져 나왔으나, 영은양 집과는 반대 방향인 방화동 방면 길이다. 끄응… 일단 부릉이를 방화동 길 한켠에 세우고 피뎅이를 살펴봤다. 피뎅이 자식 왜 그러는 거야! 똥꼬를 찔러 리부팅을 해서 플그램을 재 시작하고 다시 출발을 했지만 길안내를 해 줘야 할 아이나비양은 여전히 말이 없다. 이상타… 피뎅이를 거치대에서 떼서 살펴보려는 찰나, 이런… 어째서인지 모르겠지만, GPS 수신기 연결 커넥터가 피뎅이 전원부에서 빠져있다. 끄응… GPS 신호를 못 받는 바람에 부릉이의 움직임을 감지 하지 못한 아이나비양, 그래서 말이 없었구나? 플그램이 GPS 수신기가 분리된걸 감지 못하네. 이거는 개선해 달라고 요청을 해야겠다. 다시 수다스러워진 아이나비양과 함께 영은양 집으로 고고싱! 영은양을 집 앞에 내려주고 다시 흑석동으로 귀환했다.

아이나비양은 자꾸 올림픽대로로 가라고 안내 하는데, 그 길보다는 600번 타고 다니면서 익숙해진 노들길이 난 좋다. 자꾸 우회전 해서 올림픽대로 방면으로 가라, 사거리에서 좌회전해서 올림픽대로 방면으로 가라 떠드는데, 다 무시하고, 걍 내 가고 싶은 노들길로 가다보면 아이나비양도 포기하고, 그 길에 맞춰서 안내를 한다. 내가 좋아하는 길로 안내하게 하는 옵션이 있을 것 같은데, 함 봐봐야겠다.

윈도우 적응하기

사이트를 구축 할 일이 생겨서 간단하게 제로보드로 해결 하기로 하고 서버 계정을 받았다. 근데 받은 서버가 끄응… 윈도우 서버다. 간만에 윈도우 서버를 만져 보는구나. IIS는 이미 설정이 되서 asp 환경이 꾸며져 있었다. DB는 MSSQL이 설치 되어 있구먼. 제로보드가 MSSQL도 지원하나? 어디 보자… 안하는구먼. 기존 환경은 최대한 건드리지 않고 제로 보드를 구동시키기 위해 일단 php, mysql 의 최신 버전을 받아다 설치를 시작했다.

php 를 설치 패키지로 배포를 해주는군. 얼씨구 하고 인스톨러를 실행 해서 를 찍어봤다. 잘 나온다. 으응? 근데 뭐가 좀 이상타…. gd, mysql, zlib, exif 다 어디갔어??? php.ini 를 못읽고 기본 모듈만 로드됐네? 여기저기 뒤져보니 설치 패키지를 사용하지 말고 .zip 을 다운로드해서 직접 설치를 하라고 그런다… 고난의 시작이다. php.ini를 windows 시스템 디렉토리로 복사하고, PATH 환경변수 설정하고, IIS 확장모듈 등록하고, IIS를 재 시작했는데 어째 빈화면만 나오고 더이상 뭐가 찍히질 않는다. 아… 이건 또 왜이런겨??? 다시 또 열라 뒤져보니, php.ini가 short_open_tag 이 false 로 되어서 그런것 같으니 true 로 설정하라는 구먼. 다시 IIS를 재시작했더니 아… 드뎌 동작한다! 근데 여전히 gd, mysql, exif 등이 안보인다. php.ini 를 다시 봤더니 해당 모듈들이 죄다 주석으로 막혀 있다. 주석 풀고 IIS를 재시작, 두둥! 여전히 로드가 안됐다!!! 끄응… 왜 그러지? 다시 또 열라 뒤졌다. 윈도우는 dll 들이 로드가 바로 안된다고 그러네. 리부팅 하라 그런다. 서버인데??? 미친 윈도우 같으니… 아직 서비스 중인 서버가 아니라서 리부팅은 한다만… 서비스 중인 서버라면 꼼짝없이 서비스 중단될 상황이다. 여차저차 php 는 설정을 마쳤다.

다음은 mysql 설치.
mysql 인스톨러를 실행해서 설정을 열라 시작했다. 오… 5.x 는 트랜잭션도 지원되네? 멋지구리~ 모든 설정을 마치고, 설정 저장 실행! 헉… 뭐시냐!!! 또 에러다.

사용자 삽입 이미지

이건 서버 관리자랑 얘기해야 할 문제인것 같아서 화면을 캡쳐했다. 일단 Skip을 해서 설치를 마무리 했다. 그리고 클라이언트로 접속을 해 보려는데 이상하게 접속이 안된다. 뭐냐… 서비스 관리자를 열어서 봤더니 mysql 서비스가 시작이 안됐다. 뭐냐… 또 뒤졌다. 해당 에러를 만난 사람들이 마구마구 나온다. 그 양반들 왈, 지우고 다시 설치 하세요. 아… 화날라 그런다. 밑져야 본전이니 함 해보자. 프로그램 추가/제거가 못지워준 찌그래기 까지 손으로 다 깨끗히 삭제하고 다시 재 설치. 끄응… 아까 그 에러 또 나오잖아! 의뢰하신 분과 백신이 아무래도 해당 포트를 막은거 같으니 해당 포트를 열어보겠다 뭐 이런 얘기를 하고 나서 혹시나 하고 Retry 버튼을 눌렀는데 헛… 설치 마무리가 된다. 여기서 포인트는 설치 후 일분정도의 잡답 및 Retry 다?

아… 윈도우 세상은 알다가도 모르겠다!

이번엔 제로보드 설치.
해당 디렉토리에 파일들을 복사하고 나서 브라우저로 설치 페이지를 여니 라이센스 확인하고 난 다음 페이지에서 자꾸 403 Forbidden 난다. 아 놔… chmod 어딨더라. 끄응… 이건 윈도우잖아. IIS를 열어서 마우스 딸깍딸깍 퍼미션 조정을 했다.

뭐가 좋고 나쁘고를 떠나, 손에 익은게 최고라는 말을 우선 하고 싶다. 그렇지만, mysql 설치때와 같은 이해할 수 없는 현상은 정말 쫌… 그렇다.

똑딱이 생기다!

내 DSLR을 소년 똑딱이와 한달동안 교환해서 쓰기로 했다. 노트북을 가지고 다니면서부터 가방에 공간이 없어서 DSLR을 넣을 수가 없어서 사진찍는 횟수가 부쩍 줄었거든. m40 이나 40리밋 같은 팬케익 렌즈를 하나 살까 했지만, 사진기가 없어서 사진을 못 찍는 것도 아니고, 굳이 애매한 화각의 렌즈를 사기도 뭐시기 하고 해서 소년 똑딱이와 걍 바꿔 쓰기로 했다. 사진 찍는게 좋아서 사진기가 필요한 거지, 사진기가 좋아서 사진을 찍는 건 아니잖수. 소년이 내 DSLR을 띄엄띄엄 만지다보니 자꾸 조작법도 헷갈려했는데, 이젠 자주 만질 수 있게 됐으니 더욱 실력이 늘겠군화~ 내 사진 많이 찍어 달래야 겠다. ^^

사용자 삽입 이미지

coolpix 5200 | digital n/a | digital n/a

매뉴얼이 없는데 이것 저것 눌러 보니 대충 사용법을 알겠다. 이것도 꽤 쓸만하다구. 7.8-23.4mm f2.8-4.9, 35mm 환산 화각
38-114mm, 흠, 만능화각에, 500만 화소,  최대 2592×1944 해상도, ISO는 64-400, 음… 옛날거라
그런지 최대 감도가 좀 낮군… ISO 400에서 노이즈가 좀 있는데, 뭐 못 봐줄 정도는 아니다.

이제 요걸 주머니에 넣고 다니면서 스냅샷을 마구 날려줘야 겠다. 참, 메모리가 SD 128M 짜리가 꼽혀 있는데 이 녀석이 jpeg 포맷으로 밖에 저장을 못하는 덕분에 최대 해상도로도 무려 45장 정도 찍을 수가 있네? 메모리를 하나 사야 하나 했는데 이정도면 안사도 되겠다. ^^

부릉이와 함께 한 첫 주말 나들이

허이사님께 물려받은 자동차(이하 부릉이)를 몰고 발산에서 소년을 픽업해서 을왕리에 다녀왔다. 헤헷~ 참 좋구나~ 부릉이가 나이가 많아서 다들 걱정이 많은데 뭐 걍 타고 다니게엔 아무 문제 없다.

을왕리 기념 사진~

사용자 삽입 이미지

*ist DS2, K50mm | digital n/a | digital n/a
헤헷~ 좋군화~

사용자 삽입 이미지

*ist DS2, K50mm | digital n/a | digital n/a
응? 네네, 항상 안전운전 할께용~

Ubuntu 7.10 Gutsy on IBM ThinkPad T40

지금 사용하고 있는 노트북이 ThinkPad T40 모델이다. 14인치 1400×1050 해상도에 풀사이즈 키보드. 적당히 얇고 넓다. 상당히 만족스럽다.
리눅스에서의 드라이버 지원도 훌륭해서 대부분의 부가 기능을 사용 할 수 있다. 이전에 쓰던 삼성 Sense 820 모델도 괜찮았지만, 4년 넘게 쓰다보니 밑판이 발열로 인해 휘고, 급기야 밑판 플라스틱이 삭아서 부스러지기 시작했다. 하지만 이건, 생산년월이 2003년 11월이니까 한 4년정도 됐는데 배터리 수명이 1/3 정도로 줄어든것 말고는 아주 멀쩡하다.

각설하고, 지난달에 우분투가 판올림 됐다. 7.10 베타버전이 나오자마자 업데이트 했는데 음, 7.04 feisty 때는 fn+brightness 키가 오동작 했는데 이젠 제대로 잘 동작한다. fn+볼륨 키도 잘 동작하고. 음… 근데 fn+brightness 키로 밝기 조정은 잘 되는데 그놈 brightness 애플릿하고 연동이 안되네? 그리고 이상하게 배터리가 연결되어 있음에도 불구하고 gnome-power-manager가 전원이  AC 어댑터밖에 없는 걸로 인식한다. 심지어 AC 어댑터를 뽑고 배터리로 동작을 시켜도 AC 어댑터가 연결되어 있다고 인식을 한다. laptop_mode 로 동작을 안 시켜서 그런가?

/etc/default/acpi-support 를 열어서

ENABLE_LAPTOP_MODE=true

옵션을 줬다. acpid를 랩탑 모드로 동작을 시키면 될것 같았는데 여전히 hald가 배터리를 인식못한다. 일단 랩탑 모드로 동작하는게 맞는것 같으니 그대로 두자.

끄응… 뭐냐… 장치 인식이 잘 안되나 싶어서 hald 를 재시작했다. 헉, 이젠 모든걸 제대로 인식 한다. fn+brightness 키와 그놈 brightness 애플릿과도 연동되고 gnome-power-manager도 배터리와 AC 어댑터 모두 인식한다. 골때린다…

그래, 베타 버전이니까 그런걸거야. 정식 버전이 나오면 고쳐져 있겠지. 그러나 정식 버전이 나온지 2, 3주가 지난 지금도 여전히 이 현상은 고쳐지지 않았다. 구글링을 해보니 비슷한 현상이 여러 종류의 노트북에서 보고 되고 있다. 7.10 gutsy 의 hald 가 문제가 있다는 얘기가 많다. 그런가? 아닌데… hald 재 시작하면 모든게 제대로 인식되지 않는가? 적어도 ThinkPad T40 시스템에서 hald는 문제가 없다. 그러면 뭐가 문제인가. init.d 스크립트가 아무래도 수상하다. hald 를 재시작 하니 장치들이 제대로 인식되는 걸로 봐서 hald 보다 나중에 실행되는 init.d 스크립트가 장치 인식과 관련이 있는것 같다.

일단, 현재 runlevel 이 뭐냐…

(1) iam312@contrabass:~$ runlevel
N 2

음… 우분투는 2군. /etc/rc2.d 로 가보자.

이 문제와 관련 있어 보이는 것들은 추려보니 S12hal, S20hotkey-setup, S50acpid, S99acpi-support, S99laptop-mode

음… acpid가 hald보다 우선 순위가 낮은게 수상하다. 일단 hald 보다 먼저 실행되게 10으로 높이자.

(1) iam312@contrabass:/etc/rc2.d$ sudo mv S50acpid S10acpid

리부팅하고 오니, 오… gnome-power-manager 가 전원을 제대로 인식을 한다. acpid 가 처음부터 S50 이었던건 아닐테고, 아마도 시스템->관리->서비스 에서 acpid, apmd 를 껐다 켰다 하다가 우선순위가 변경된듯 하다. 그럼 fn+brightness는? 끄응… 이건 여전히 gnome brightness 애플릿하고 연동이 안된다. 근데 여전히 hald 를 재 시작하면 fn+brightness 키와 그놈 brightness 애플릿과 연동이 되는거다.

hald 를 verbose 모드로 띄우고 /var/log/debug 로그를 살펴봤다.

hald 를 디버깅 모드로 띄우기 위해서는 /etc/default/hal 를 열어서

DAEMON_OPTS=–verbose=yes

를 적어준다

hald 재시작

(1) iam312@contrabass:/etc/init.d$ sudo ./hal restart

(1) iam312@contrabass:/etc/init.d$ tail -f /var/log/debug
:
:
Nov 19 23:53:54 contrabass NetworkManager: <debug> [1195484034.028325] nm_hal_device_added(): New device added (hal udi is ‘/org/freedesktop/Hal/devices/acpi_brightness’).
:
:

응? 전에 안보이던게 보인다! 이거군!!! 역시 새로 인식되는 장치가 더 있던 것이다.
이 문제와 관련 있어 보이는 것들은 S10acpid, S12hal, S20hotkey-setup, S99acpi-support, S99laptop-mode

hal 뒤에 실행되는 넘들을 하나씩 까보자.
S20hotkey-setup 을 열어서 한줄씩 읽어나갔다.
응?

:
:
do_thinkpad () {
    . /usr/share/hotkey-setup/ibm.hk
    modprobe thinkpad-acpi
:
:

찾았다!!! thinkpad-acpi 커널모듈을 집어넣고 있다. 이것도 hald 보다 먼저 실행되야 하는 스크립트다.

(1) iam312@contrabass:/etc/rc2.d$ sudo mv S20hotkey-setup S11hotkey-setup

리부팅하고 오니, 오… fn+brightness 키와 그놈 brightness 애플릿이 연동된다! gnome-power-manager 에서 AC, Battery 별로 LCD 밝기 설정 옵션도 생겼다.

그럼 다음으로 suspend, hibernation 모두 잘 되나? 오오~ 잘되는군!!!
어… 아니다. 자는건 잘되는데 깨어날때 wifi 장치를 깨워주질 못해서 무선네트웍이 먹통이 된다. 다시 구글링을 해 보니 /etc/default/acpi-support 에

MODULES=”iwl4965 iwlwifi_mac80211 cfg80211″
 
 를 추가 하라고 한다. http://www.thinkwiki.org/wiki/Installing_Ubuntu_7.10_(Gutsy_Gibbon)_on_a_ThinkPad_T61 참고.
 
하지만 저건 T60 모델의 경우고 내 T40의 wifi 장치는 iwl4965 드라이버를 사용하는 모델이 아니다. 그래서 iwl4965를 ipw2200 로 변경해 줬다.
 

MODULES=”ipw2200 iwlwifi_mac80211 cfg80211″

 
 
 그리고 suspend 했다가 깨워도 보고, hibernation 했다가 깨워도 보고 했는데 오오~ 잘 깨어나서 네트웍을 새로 잡는다. 좋아!!!

vga 칩이 ATI Technologies Inc Radeon RV250 [Mobility FireGL 9000] (rev 02) 인데 이 9000 모델은 ATI에서 리눅스용 드라이버를 안 만든다. 그래서 오픈소스 드라이버를 써야 하는데 덕분에 그놈에서 compiz나 beryl 같은 눈깔사탕을 사용할 수가 없다. 오픈소스 드라이버로도 compiz-fusion 을 사용할 수 있다. 약간의 수정을 좀 해야 한다(http://wiki.compiz-fusion.org/Hardware/Blacklist 참고. 추가로 /etc/X11/xorg.conf의 DefaultDepth 값을 16으로 낮출 필요도 때에 따라 있다. compiz를 띄우고 나서도 몇가지 손을 볼게 있는데 따로 정리를 해야 겠다.). 좀 아쉽긴 하지만, 가벼운게 좋아서 XFce 를 쓰던 나인데 뭐 그닥 큰 문제는 아니다. wifi 장치가 켜 져 있는데 LED 가 안들어 오는거랑, fn+space 키가 안먹는거 정도가 남았는데 이건 다음에 하기로 하자.