coLinux 소개

예전부터 저는 리눅스 머신 한 대에서 모든 작업을 하지 못하고, 크로스 컴파일러와 디버깅용으로만 리눅스를 사용하고 에디터를 이용하여 프로그램 코딩이나 자료 검색, 문서 작업은 Microsoft Windows에서 합니다. 그래서 리눅스를 독립으로 따로 설치하여 사용하거나, 사정에 따라 하나의 PC를 사용해야 하거나 노트북만 있다면 VmWare와 같은 가상 PC 프로그램을 이용합니다.

 

가상 PC를 이용하면 신기할 정도로 좋은데, 문제는 컴퓨터의 자원을 많이 소모하기 때문에, 소모 보다는 자원을 나누어 사용하기 때문에 한마디로 무겁다는 점입니다. 빠른 데스크탑은 그나마 만족하며 사용할 수 있는데, 환경이 열악한 노트북에서는 부담이 되지요. 그래서 가상 머신과는 달리 가볍게 사용할 수 있는 CygWin을 사용했었습니다만, 뭔가 많이 부족해서 결국 참아 가면서 가상 머신을 이용하고 있습니다.

 

그런데 가상 머신 프로그램처럼 리눅스를 설치하지만 CygWin처럼 가볍게 리눅스를 사용할 수 있는 coLinx가 있다는 것을 알게 되어 매우 큰 호기심을 가지고 설치해 보고 정리해 보았습니다.

1. WinPcap 설치

이제 coLinux를 설치해 보겠습니다. coLinux를 설치하기 전에 반드시 WinPcap을 먼저 설치하십시오. 리눅스 설치만큼 중요한 것이 네트워크 구성인데, 안타깝게도 자세하고 정확한 이유는 아직 모릅니다만, coLinux 설치 중에고 WinPcap 설치를 요구하며, 많은 글에서 WinPcap 사용을 권했습니다. 특히 공유기를 사용한다면 더욱 WinPcap 권하더군요.

 

물론 WinPcap을 사용하지 않고 네트워크를 구성할 수 있습니다. coLinux가 가상 PC이기 때문에 가상의 네트워크 카드를 이용해야 하는데, 내부 로칼 통신뿐만 아니라 인터넷까지 사용해야 하기 때문에 가상의 랜카드를 2개 사용해야 한다고 하더군요. 그리고 그냥 사용하면 안되고 브리지로 연결해야 한다는데, 그러나 아직 도대체 무슨 얘기인지 모르겠습니다. ^^;

 

이렇게 브리지를 네트워크 속성에서 지정할 수 있지만, WinPcap을 사용하면 아래의 설명과 같이 따로 브리지를 연결할 필요없이 사용할 수 있습니다. 그러므로,

  1. WinPcap을 먼저 설치합니다. WinPcap 사이트를 방문하신 후,
  2. Get WinPcap 링크를 이용하여 최신 버전을 내려 받습니다.
  3. 내려받은 실행 파일로 설치하면 작업이 완료됩니다.

2. coLinux 설치

이제 coLinux를 설치합니다.

  1. http://sourceforge.net/project/showfiles.php?group_id=98788를 방문한 후,
  2. Download 링크를 이용하여 최신 버전을 내려 받습니다.

Setup 파일을 실행하면 기본 폴더가 C:/Programs Files/coLinux가 됩니다만 DOS창 즉, Command 창에서 작업하는 경우가 많으므로 C:/coLinux처럼 짧은 이름의 디렉토리에 설치하는 것이 좋습니다.

또한 설치 중에 기본적으로 사용할 리눅스 이미지 파일을 내려 받는 선택이 있는데, 여기서 선택해서 내려 받으면 매우 느리더군요. 그러므로 직접 구하시고 여기서는 내려 받지 않도록 "Root Filesystem image Download" 체크를 없앱니다.를 선택합니다.

대신에 coLinux를 모두 설치한 후에, http://sourceforge.net/project/showfiles.php?group_id=98788에서 내려 받으시고, 내려 받은 파일 안에 있는 이미지 파일을 coLinux가 설치된 디렉토리에 풀어 놓습니다. 자세한 설명은 아래 "4. 설치 리눅스 선택 및 설치"를 참고하여 주십시오.

3. 네트워크 환경 준비

coLinux가 모두 좋은데, 네트워크 환경 잡기가 매우 어렵더군요. 겨우 방법을 알게 되었습니다만, WinPcap부터 잘 알지 못하기 때문에 여기서는 죄송하게도 따라하기 식으로 설명을 드림을 양해해 주시기 바랍니다. coLinux 설치가 완료되면 네트워크 환경 속성 창에 "로컬 영역 연결 2"라는 이름으로 새로운 네트워크가 등록되어 있습니다. 이 연결을 이용하여 가상 PC에서 인터넷 연결에 사용할 것입니다.

우선 저의 로컬 네트워크 주소는 "192.168.10"이며 서브넷 마스크는 "255.255.255.0", 연결된 공유기 IP는 "192.168.10.1"입니다. 그래서 다른 네트워크 주소를 지정해 주었는데, "192.168.33"을 사용하기로 했습니다. 그래서 새로 생긴 네트워크 환경의 TCP/IP의 주소를 "195.168.33.50"으로 설정했습니다.

새로 생성된 네트워크 정보의 이름은 리눅스 실행에서 사용되므로 기존의 "로컬 영역 연결"과 헷깔리지 않게 설명을 드리기 위해서 "로컬 영역 연결 2"에서 " coLinuxNet" 으로 이름을 바꾸겠습니다.

4. 설치 리눅스 선택 및 설치

http://sourceforge.net/project/showfiles.php?group_id=98788를 방문하시면 coLinux 외에 여러가지 리눅스 배포본을 함께 배포하고 있습니다. 애용하시는 배포본을 내려 받아, 설치한 coLinux에 아래와 같은 요령으로 복사하시고 환경 파일을 구성하시면 되는데, 저는 Fedora를 애용하고 있어서 본 강좌는 Fedora로 언급하겠습니다. 데비안을 이용하는 글은 웹에 정말 많더군요. ^^

 

fedora를 내려 받은 후 coLinux가 설치된 디렉토리에 압축 풀기를 합니다.

5. 리눅스를 실행하는 방법

리눅스 실행 방법 1

coLinux를 설치하고 리눅스 이미지 파일도 준비했기 때문에 바로 리눅스를 실행해 보겠습니다. 리눅스 이미지 압축파일 풀기로 생성된 start-Fedora-9.bat를 실행하면 되는데, 설치 경로에 따라 bat 파일을 먼저 수정해 줘야 합니다.

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 cobd0="C:/Program Files/coLinux/Fedora-9.img" cobd1="C:/Program Files/coLinux/swap.img" root=/dev/cobd0 eth0=slirp,,tcp:5901:5900 ro

두개의 이미지의 경로를 옳바르게 수정한 후에 start-Fedora-9.bat를 도스창(커맨드창)에서 실행합니다. 그래서 아래와 같이 리눅스가 실행이 되면 일단 성공입니다.

처음 설치 후에는 암호 없이 root로 로그인 하시면 됩니다. 네트워크까지 설정해서 다시 실행해야 하므로 shutdown 명령으로 종료합니다.

리눅스 실행 방법 2

위의 방법 1에서처럼 colinux-daemon.exe 실행 파일 뒤에 필요한 정보를 인수로 주고 실행할 수 있지만 conf 파일을 작성하고 conf 파일 이름을 이용하여 실행할 수 있습니다. 예로 fedora.conf 라는 이름으로 환경 파일을 작성했다면 아래와 같이 실행할 수 있습니다.

colinux-daemon.exe @fedora.conf

conf 파일은 colinux-daemon.exe 실행에서 옵션으로 주었던 내용을 행단위로 나누어 적어 주면 됩니다.

 

즉, 아래의 명령 행은

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 cobd0="C:/Program Files/coLinux/Fedora-9.img" cobd1="C:/Program Files/coLinux/swap.img" root=/dev/cobd0 eth0=slirp,,tcp:5901:5900 ro

다음과 같은 내용으로 conf 파일로 작성하면 됩니다.

kernel=vmlinux
initrd=initrd.gz
mem=256
cobd0="C:/Program Files/coLinux/Fedora-9.img"
cobd1="C:/Program Files/coLinux/swap.img"
root=/dev/cobd0
eth0=slirp,,tcp:5901:5900 ro

6. 리눅스에서 네트워크 환경 설정

네트워크 정보로 리눅스 실행

리눅스를 실행할 때, 가상의 리눅스가 사용할 네트워크 정보를 알려 주어야 합니다. 새로 생성하고 이름을 coLinuxNet으로 바꾼 네트워크는 리눅스에서 인터넷을 연결하기 위해 사용하며, 기존의 "로컬 영역 연결"은 내부 로컬 망을 위해 사용하겠습니다. 그래서 리눅스 실행은 아래와 같습니다.

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 cobd0="C:/coLinux/Fedora-9.img" cobd1="C:/coLinux/swap.img" root=/dev/cobd0 eth0=tuntap,"coLinuxNet" ro eth1=pcap-bridge,"로컬 영역 연결"

리눅스 네트워크 설정

리눅스가 부팅이 되고 로그인을 해도 네트워크 연결이 되지 않습니다. 로컬망과 인터넷 연결을 위해 네트워크 환경을 설정합니다.

]# system-config-network

system-config-network를 실행하면 조금 황당하실 수 있습니다. 왜냐하면 선문자나 특수 문자 때문에 화면이 깨져 보이기 때문이죠.

이상하게 보이실 수 있습니다. 그러나 화면의 eth0는 인터넷 연결에 사용하기 위해 네트워크 IP "192.168.33"에 맞추어 지정합니다. 예로 아래와 같습니다.

Name                eth0
Device            
sub net             255.255.255.0
Use DHCP            [ ]      <--- 체크 안함
Static IP           192.168.33.51
Default gateway IP

system-config-network를 처음 실행하면 eth0는 보이지만 eth1은 보이지 않습니다. 그러므로 system-config-network에서 로컬망 통신을 위해 eth1을 추가합니다.

추가를 선택해서 아래와 같이 정보를 등록합니다.

Name                eth1
Device              eth1
sub net             255.255.255.0
Use DHCP            [ ]      <--- 체크 안함
Static IP           192.168.10.51
Default gateway IP  192.168.10.1

즉, 내부 로컬 통신망에서 리눅스의 IP는 192.168.10.51이 되겠습니다. 그러므로 텔넷으로 연결하거나 NFS 서버를 운영하여 리눅스로 연결할 때에는 192.168.10.51 주소를 이용하시면 됩니다.

 

이제 DNS IP를 설정하고 네트워크를 다시 시작 시키면 완료됩니다. DNS와 기타 이더넷 장치에 대한 정보를 /etc/sysconfig/network-scripts/ifcfg-eth에 설정되어 있습니다. 이 파일의 내용 중 DNS 정보를 수정합니다.

]# vi /etc/sysconfig/network-scripts/ifcfg-eth0        <---- eth0에 대해
# Realtek Semiconductor Co., Ltd. RTL-8029(AS)
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.33.51
HWADDR=00:ff:0f:fb:c1:80
DNS1=10.0.2.3        ----> 한국통신 DNS 서버 IP인 "168.126.63.1"으로 변경합니다.
]# vi /etc/sysconfig/network-scripts/ifcfg-eth1        <---- eth1에 대해
# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
GATEWAY=192.168.10.1
TYPE=Ethernet
DNS1=10.0.2.3 ----> 한국통신 DNS 서버 IP인 "168.126.63.1"으로 변경합니다.
DEVICE=eth1
HWADDR=00:00:00:00:00:00
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.10.51

이제 네트워크를 다시 실행하고 FALINUX 포럼으로 핑 테스트를 실행해 보겠습니다.

]# /etc/rc.d/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down interface eth1:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
Bringing up interface eth1:                                [  OK  ]
]# ping forum.falinux.com
PING forum.falinux.com (211.239.155.97) 56(84) bytes of data.
64 bytes from 211.239.155.97: icmp_seq=1 ttl=56 time=10.0 ms
64 bytes from 211.239.155.97: icmp_seq=2 ttl=56 time=10.0 ms
64 bytes from 211.239.155.97: icmp_seq=3 ttl=56 time=10.0 ms
64 bytes from 211.239.155.97: icmp_seq=4 ttl=56 time=10.0 ms
                             :

이렇게 출력되면 성공입니다. 이제 인터넷과 연결되므로 꼭 해야될 것부터 하죠. 바로 업데이트입니다.

]# yum -y update
....
Updated: fedora-release.noarch 0:9-5.transition
Complete!
]#

그런데 여기서 한번만 하시면 안 됩니다. 여러 번 하셔서 다음과 같이 더 이상 업데이트할 것이 없다는 메시지가 나올 때까지 실행하십시오.

]# yum -y update
Loaded plugins: refresh-packagekit
Setting up Update Process
No Packages marked for Update
]#

휴~ 어쩌다 보니 밤을 샜네요. 벌써 8시가 가까워 가지만 네트워크까지 성공해서 매우 기쁩니다. 앞으로 coLinux를 이용하여 개발환경을 구축한는 방법에 대해 계속 알아 보고 올리려 합니다. VmWare만큼이나 다양하게 사용할 수 있는지 모르겠네요. 그랬으면 좋겠는데 말이죠. ^^