colinux (cooperative linux) 관련

예전에 colinux를 설치해서 잘 쓰다가, 이 이쁜 프로그램이 너무 만족스러워서 포스팅을 했더니 그 뒤로 꽤 많은 사람들이 해당 글을 보기 위해 접속하고 있다. 아마도 프로그램 설치 방법에 관한 내용을 기대하고 들어 왔을 것 같다. 하지만 예전에 썼던 글에는 설치방법은 적지를 않았다. 실망이 많았을 것이다.

그 글을 쓰고 난지도 한참이 지났고, 한동안 colinux를 잊고 있다가 다시 필요해져서 http://colinux.org 를 찾았다. 버젼은 꽤 업데이트가 되었고 현재 0.7.1이 beta 0.6.4가 stable인 상태다. stable을 받아서 설치하고 나니, 공포의 블루스크린이 뜨기 시작한다. 이걸 어쩐담… wiki를 살펴보니 부팅 옵션을 변경해주면 나아질 수도 있다고 해서 그렇게 했는데도 블루 스크린이 여전하다. 문제가 계속 심각해져서 일단 서비스를 내려놓고 검색을 좀 더 하기 시작했다. 아니나 다를까 stable인 주제에 winxp에서 자주 그런 문제가 발생한다고 한다. beta버젼에서는 블루 스크린에 대한 많은 버그가 수정되었다고 해서 새로운 버젼으로 다시 설치를 했다. (※ 설치하고자 하는 분이 있다면 stable말고 beta를 설치하세요. 0.8.0이 가장 최근 스냅샷이긴 하지만 저는 0.7.1 rc4를 설치했습니다.) 별 무리 없이 잘 실행중이다.

그리고 루트 이미지도 그렇다. 내가 예전에 colinux에서 데비안을 돌릴때는 stable이 우디(3.0)여서 아무 생각없이 우디 버젼의 stable 데비안 이미지를 가져다 설치했더니 패키지 레포지트리 가운데 몇개가 죽어있고 (backports), 그나마도 무슨 문제인지 apt-get update시에 패키지를 제대로 merge하지 못하고 중간에 에러가 나버린다. 몇 번을 새로 다운로드 받아서 해봐도 안되어서 살펴보니 어느덧 stable이 이치(4.0)로 바뀌어 있었고, 그래서 이미지도 이치 버젼의 것으로 새로 다운받아 적용해봤더니 아주 잘 되고 있다. 게다가 apm도 다 최신버젼이다 (apache2, php5, mysql5). 아주 흐뭇하다. (※ 다른 배포판 쪽은 잘 모르겠지만, 데비안 계열을 이용하려면 3.0 이미지보다 4.0 이미지를 이용하세요.)

네트워킹 설정 (WinPCAP)

그리고 colinux를 설치하면서 가장 애먹이는 부분이 네트워킹 설정 부분이다. 나의 경우는 공유기를 사용하고 있으며 colinux를 마치 가상의 다른 물리적 머신으로 전제하고 작업해야 하므로 winpcap을 이용한 브릿지 방식의 네트워킹을 사용하고 있다. 이 경우 colinux는 winpcap을 통해 공유기에서 직접 ip를 받아온다. 공유기를 사용하는 유저라면 이 방법이 접근이 용이하므로 가장 유용할 듯 하다. 단 데비안을 막 부팅한 상태라면 /etc/network/interfaces 파일이 수정되지 않은 상태이므로 이 부분을 변경해야 한다. 디폴트로 nano가 깔려 있으므로,

kirrie@debian:~$nano /etc/network/interfaces

한 뒤에 편집창에서 static으로 잡혀 있는 설정을 dhcp로 변경한다. (특별한 라우터 구성이 아닌 다음에야 최근의 거의 모든 공유기는 dhcp를 통해 ip를 받아온다. 그런데 사실 준비된 ip가 다 사용중이지 않은 뒤에야 static으로 남은 ip를 잡았다고 동작하지 않을 이유가 없는데, 뭔가 모르게 잘 안되어서 그냥 dhcp로 ip를 공유기로부터 가져오기로 했다.) 아무튼 아래와 같이 변경한다.

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

줄 앞에 #가 붙으면 해당 줄은 모두 주석처리되어 아무런 효력이 없다. 그러므로 주석 해제된 줄이 위와 같이 되도록 수정하면 된다. 나머지 부분은 삭제해도 좋고, 혹시 모를때를 대비해서 그냥 주석처리를 해놓는 것도 좋다.

정상적으로 수정했고 잘 저장했다면 네트워크 인터페이스를 재시동한다.

kirrie@debian:~$ifdown eth0

kirrie@debian:~$
ifup eth0

ifdown은 해당 인터페이스를 내리 (종료) 라는 명령이고 ifup은 올리 (실행) 라는 명령이다. 모든게 정상적이라면 dhcp-client가 열심히 ip를 공유기로부터 받아오려고 사정사정 하는게 보일 것이다. (나는 지금 네트워킹 부분을 데비안 환경에 맞춰 설명하고 있다. 다른 배포판에서는 조금 다른 형태일수도 있다. 하지만 나는 다른 배포판을 안써본지가 억만년은 넘었으므로 패스.)

ifup eth0 명령 후에 몇 줄이 지나가고 다시 프롬프트가 뜨면 이제 다 설정이 잘 되었는지 확인해본다.

kirrie@debian:~$ping www.google.com

모든게 다 잘됐다면 colinux는 구글에다가 핑패킷을 날리고 있을 것이다.

네트워킹 설정이 끝났으면 이제 apt의 소스리스트를 업데이트하고 필요한 어플리케이션을 설치한다.

—>

처음엔 그냥 설치 잘 했다, 정도를 쓰려고 했는데 쓰다보니 이야기가 조금 길어졌다. 혹시 colinux를 설치하다가 문제가 발생했거나 하신 분이 이 글을 보고 있다면, 일단 먼저 자신의 문제가 어디서 발생한 것인지 잠시 생각해보고 wiki를 통해 해답을 찾아보길 바란다. 그래도 안된다면 kirrie_at_gmail_dot_com 으로 문의해주시면 최대한 도움을 주도록 노력하겠다.

다음엔 colinux를 가지고 할 수 있는 다른 여러가지 삽질(?)들을 소개할까 한다.

coLinux, 윈도우 서비스로 돌아가는 작고 쓸만한 리눅스

내가 리눅스를 좋아하는 이유는, 그 안에 무한한 삽질의 가능성이 존재하기 때문이다. 체계적이고 상세하게 기술되어 있는 방대한 Document들을 찬찬히 읽어 내려가는 기쁨과 수많은 포럼 및 메일링 리스트에서 실시간으로 이루어지는 열정적인 논쟁들을 엿보는 재미는 그 어떤 여가생활보다도 충만한 에너지를 충전시켜준다.

가능하다면 불법 소프트웨어 사용자의 딱지를 떼고 자유와 열정이 살아 숨쉬는 리눅스의 세계로 풍덩 빠져버리고 싶은 욕망이 시시때때로 고개를 들지만, 현실적으로 일과 관계된 소프트웨어들이 죄다 윈도우에서만 돌아가는 상황이라 무작정 윈도우를 버리는 것도 쉽지만은 않았다.

아니면 VirtualMachine류의 어플리케이션을 이용해서 리눅스를 에뮬레이트해 쓸 수도 있었다. 그러나 경험상, 그런 식으로 돌아가는 리눅스를 진지하게 써본 기억이 없다.

그러는 와중에 이놈을 발견하고야 말았다. coLinux(Cooperative Linux). 적은 용량의 프로그램 하나만 설치하면, 윈도우에서 서비스형태로 거의 완벽한 리눅스를 체험해 볼 수 있다. 물론 하드웨어 지원이나, X시스템의 부재 등의 단점이 존재한다. 차지하는 자원도 굉장히 적고 실행해 본 결과 colinux-daemon과 네트워크 사용을 위한 colinux-bridge-daemon이 각각 4메가바이트의 메모리만을 사용한다. 이미지(not picture) 형태의 파일시스템을 사용하므로 원한다면 physical partition을 사용할 수도 있다. 새로운 시스템의 형성이나 복제가 매우 간편하다. 필요하다면 그때그때 전세계 수많은 coLinux 사용자들이 미리 생성해 놓은 이미지를 가지고 다른 리눅스 배포판을 체험해 볼 수도 있다.

내 경우엔, 윈도우용 APM을 대체할 개발서버가 필요했다. critical한 문제는 아니지만, APM은 윈도우와 리눅스 사이에 미세한 환경의 변화가 있다. PHP의 경우 윈도우에선 제대로 지원되지 않는 함수도 있다. 그렇다고 본 서버에서 직접 개발을 하는 것도 여러가지 이유로 굉장히 불편하거니와, 혹시라도 있을 보안상의 문제도 마음에 걸렸기 때문에 반드시 로컬에서 접근 가능한 리눅스 서버가 필요했다.

두 말 할 필요도 없이 이 경우 coLinux가 가장 나은 대안 같아 보인다. 어차피 서버로 사용할 리눅스기 때문에 단점인 완벽하지 못한 하드웨어 에뮬레이션이나 X의 미지원등은 전혀 문제가 되지 않거나 오히려 반갑기까지 했다. X는 서버의 적!

내가 생각하는 개발 서버로의 coLinux활용도는 다음과 같다.

1. 로컬 네트워크가 존재하는 상황 (공유기나 라우터 등) 에서 coLinux는 bridge 방식으로 네트워크에 접속하여 하나의 독립된 개체로 인식된다.

2. 본 서버와 같은 환경을 구축한다. 현재 데비안 sarge로 설정해 두었다.

3. coLinux는 네트워크 상에서 독립된 개체이므로 삼바를 이용해서 쉽게 파티션에 접근할 수 있다.

4. 맘껏 일을 한다.

5. 개발이 종료되면, 본 서버에서 rsync를 이용해 완료된 작업을 간단하게 긁어간다.

6. 런칭!

+ 혹시라도 X가 필요하다면, ssh X11포워딩이나 vnc를 이용해서 X 어플리케이션을 실행 할 수도 있다.

+ 간단한 설정 파일을 가지고 원하는 만큼의 파티션을 지정해서 사용할 수 있다. 물론 각각의 파티션은 이미지 파일로써 존재해야만 한다.