coLinux에서 네트웍을 설정하는 방법은 여러가지 옵션이 있다. 그 중 여기서 목표로 하는 네트웍 설정은 다음 그림과 같다. 인터넷은 D-Link DI-624를 통해 연결되고 D-Link router는 DHCP server를 실행하고 있다. 윈도우와 coLinux를 설치한 노트북은 fast ethernet(VIA Rhine II)로 연결되어 있고 router의 DHCP server에서 192.168.0.100을 할당받았다. (아래 그림에서 빨간색 블럭이 실제 네트웍 인터페이스이고 보라색 블럭은 가상 인터페이스이다. 실선 화살표는 실제 네트웍 케이블이고 점선 화살표는 가상의 네트웍 케이블을 나타낸다. 그리고 당연히 coLinux OS와 Hosting OS인 윈도우는 같은 기계에서 실행되고 있다.)


200807011630.jpg

이 방식으로 네트웍 설정을 하려면 coLinux를 설치한 다음 WinPcap (The Windows Packet Capture Library)도 다운받아 설치해 줘야 한다.

coLinux를 설치하고 나면 디렉토리에 다음의 파일이 설치된다.


cl1.png

이 중에 example.conf 파일을 원하는 이름으로 복사해준다. 여기서는 colinux.conf 로 예를 들기로 하겠다.

c:\coLinux> copy example.conf colinux.conf

파일을 복사 한 다음 colinux.conf를 에디터에서 열어준다.

기본적으로 아래 화면에서 색이 칠해진 부분을 자신에게 맞게 변경해주면 된다.
cl2.png

위의 색이 칠해진 부분을 자신이 다운받아 압축을 풀은 루트파일 시스템, 스왑파일 이름으로 바꿔준다. 여기서는 루트파일 시스템으로 Ubuntu-7.10.ext3.2gb.fs를 사용하고 있다.


cl3.png

위의 화면의 아랫 부분이 네트웍 설정에 필요한 내용이다. 여기서는 (가상) 네트웍 카드를 2개 사용해서 첫번째는 TAP을 사용해서 coLinux-windows와의 통신 전용으로 사용하고 두번째는 WinPcap을 사용해서 coLinux가 인터넷을 억세스하는데 사용할 것이다.

위와 같이 변경해 주었으면 파일을 저장하고 에디터를 종료한다.

그리고 아래와 같은 배치파일을 만들어 준다.


cl4.png

윈도우의 네트웍 커넥션에 보면 coLinux를 설치할 때 이미 설치된 가상 TAP-Win32 adapter가 보인다.

cl5.png

이 TAP-Win32 adapter의 속성(properties)로 가서 'Internet Protocol (TCP/IP)'를 더블클릭해서 아래 그림과 같은 Internet Procotol (TCP/IP) Properties 윈도우에서 아래와 같이 IP, Subnet mask를 설정해 준다. 단 Default gateway는 빈칸으로 놔둬야 한다.

IP address: 192.168.37.10 (여기서 서브넷 37은 임의로 정한 것이다. 이미 사용하고 있다면 사용하지 않는 다른 서브넷으로 변경해도 된다. 단 윈도우의 TAP-Win32 adapter와 coLinux의 eth0는 같은 서브넷 번호를 사용해야 한다.)

IP address: 192.168.37.10

Subnet mask: 255.255.255.0

cl6.png

IP 설정이 끝났다면 Local Area Connection2 Properties 윈도우에서 'Advanced' 탭을 선택해서 Windows Firewall의 'Settings...'를 눌러준다.


cl7.png

파이어월 설정에서 Local Area Connection 2에 대해서는 파이어월을 중단시켜준다.

cl8.png


여기까지 끝났으면 도스 프롬프트에서 아까 만들어 준 배치파일(cl.bat)을 실행해서 coLinux를 실행시켜 준다.


cl9.png

Cooperative Linux Console이라는 윈도우가 열리면서 리눅스 부팅 시퀀스가 표시된다. 로그인 화면이 나오면 root로 로그인 해 준다. login id, password 둘 다 'root'를 사용하면 된다. 로그인 한 다음 에디터에서 '/etc/network/interfaces' 파일을 열어서 아래와 같이 수정해 준다.

eth1은 dhcp를 사용할 것이지만 기본 상태에서는 dhcp resolver가 없기 때문에 일단 static으로 인터넷에 연결해서 dhcp resolver를 설치한 다음에 다시 dhcp를 사용하도록 변경해 줄 것이다.


cla.png

또한 /etc/resolv.conf 파일도 다음과 같이 변경해 준다.

cld.png

변경을 마치고 파일을 저장한 다음 인터페이스를 멈췄다가 다시 활성화 시키거나 coLinux를 reboot시키고 나서 ifconfig를 해 보면 다음과 같이 나타나야 된다.


clb.png

ping 명령을 사용해서 각각의 인터페이스가 제대로 동작하는지 확인해 볼 수 있다.

clc.png

정상적으로 동작하는게 확인 되었으면 apt-get 명령어를 사용해서 dhcp resolver(여기서는 'pump'를 사용)를 다운받아 설치해 준다.


cle.png

dhcp resolver를 설치한 다음 /etc/network/interfaces 파일에서 eth1에 관한 부분을 (dhcp를 사용하도록) 변경해준다.


clf.png

파일 변경이 끝났으면 coLinux를 재부팅 하거나 ifdown eth1, ifup eth1 명령을 순서대로 사용해서 인터페이스를 비활성화 시켰다가 다시 활성화 시켜주면 된다. 아래 화면이 ifconfig의 결과인데 위에 static을 사용할 때는 ip를 강제로 192.168.0.105로 지정해 줬는데 이번에는 dhcp 서버에서 ip를 받아왔기 때문에 192.168.0.101로 할당된 걸 볼 수 있다.

clg.png

Posted by nautes

가상화 기술(virtual machine)이 많이 발전해서 요새는 자신이 사용하는 OS(호스트 OS)상에서 다른 OS(타켓 OS)를 실행시키는 경우가 많아졌다.

많이 사용되는 소프트웨어로는 VMWare, Parallels 같은 것들이 있다. 이 소프트웨어들은 호스트OS 위에 완전한 가상의 컴퓨터를 에뮬레이션 해 주기 때문에 이론적으로 가상 환경에 제공되는 디바이스에 대한 디바이스 드라이버만 있다면 그 프로세서를 지원하는 모든 OS를 설치할 수 있다. 단점은 컴퓨터의 아주 로우레벨까지 완벽하게 에뮬레이션을 해 줘야 하기 때문에 상당한 성능 저하를 피할 수가 없다.

사용자 삽입 이미지
이에 비해 coLinux(cooperative Linux)는 다른 접근방식을 사용한다. coLinux는 "리눅스가 모든 프로세서 아키텍쳐에 포팅될 수 있다면 그런 방식으로 다른 OS에는 포팅을 할 수 없을까?"라는 기본적인 질문에서 탄생하게 되었다.

http://www.colinux.org

coLinux는 단일 컴퓨터 상에서 다른 OS와 함께 돌아갈 수 있게 리눅스 커널을 포팅한 것이다. 물론 오픈소스이고 무료로 사용할 수 있다.

VMWare같은 가상화 솔루션은 타겟 OS를 User mode에서 실행시키는데 비해 coLinux는 호스트 OS에 특수한 드라이버를 만들어서 커널이 privileged mode(a.k.a. supervisor mode or ring 0)에서 실행될 수 있게 해 준다.

지속적으로 프로세서의 상태를 호스트 OS와 coLinux커널 상태로 스위칭 해 줌으로서 자신에게 할당된 주소영역에서 MMU에 대한 완전한 통제권을 가질 수 있어서 coLinux 커널이 호스트 OS로 실행되는것과 같이 동작할 수 있게 해 주기 때문에 컴퓨터에서 리눅스만 사용하는 경우와 비교했을 때 거의 유사한 성능과 기능을 제공해 줄 수 있게된다.

* coLinux는 호스트 OS와 함께 하드웨어를 공유하기 위해 I/O디바이스를 직접 억세스하지 않는다. 대신 호스트 OS에 있는 coLinux 드라이버에 의해 제공되는 에뮬레이트 된 가상 하드웨어를 사용한다. 예를 들면 윈도우의 일반 파일이 coLinux에서는 블럭 디바이스로 사용될 수 있다. 모든 실제 하드웨어 인터럽트는 호스트 OS에 투명하게 전달되기 때문에 호스트 OS가 실제 하드웨어를 제어하는데 아무 방해가 되지 않는다.

* 단 coLinux는 현재 비디오 카드에 대한 가상 어댑터가 없기 때문에 X server를 지원하지 않는다. X 윈도우를 사용하려면 윈도우에서 Cygwin/X, Xming, eXceed, X manager같은 X server를 사용해서 X session을 열어주면 된다. 다른 방법으로는 coLinux에 Xvnc를 실행시키고 윈도우에서 VNC client를 사용할수도 있다.

작업 특성상 리눅스와 윈도우를 같이 사용해야 하는 경우에 coLinux는 훌륭한 선택이 될 수 있을 것이다.

--

coLinux 설치하기

먼저 coLinux사이트로부터 2개의 파일을 다운받아야 한다. 최신버젼의 coLinux-0.7.*.exe파일(이 글을 쓰는 시점의 최신버젼은 coLinux-0.7.3.exe이다.) 과 리눅스 시스템이 pre-install 되어 있는 실제 파일시스템이다. 파일시스템은 여러가지중에 선택할 수 있다.

coLinux-0.7.3.exe를 다운받은 다음 실행해서 설치해 준다. 디폴트 설치 디렉토리는 c:\program files\colinux로 되어 있지만 이걸 c:\colinux로 바꿔주는 것이 좋고 설치하면서는 파일시스템 이미지를 다운받지 않게 해 줘야 한다.

설치가 끝난 다음 c:\colinux 디렉토리를 보면 다음의 파일이 설치되어 있을 것이다.

* colinux-bridged-net-daemon.exe

* colinux-console-fltk.exe

* colinux-console-nt.exe

* colinux-daemon.exe

* colinux-net-daemon.exe

* colinux-slirp-net-daemon.exe

* example.conf

* initrd.gz

* linux.sys

* cofs.txt

* colinux-daemon.txt

* news.txt

* README.txt

* Uninstall.exe

* vmlinux

* vmlinux-modules.tar.gz

* [netdriver]

colinux의 설치가 끝났으면 파일 시스템을 설치해줘야 한다. 여러가지중에 선택할 수 있지만 여기서는 debian을 기준으로 설명하겠다. Sourceforge 사이트에서 다운받을 수 있는 debian root image를 사용하겠다. "Root Filesystem Images - 2.6.x-based" 아래에 있는 "Debian-3.0r0.ext3.1gb.bz2"을 다운받으면 된다. 파일 크기는 18MB로 압축을 풀면 1GB가 된다. 다운받은 파일을 c:\colinux에서 풀어준다. 압축이 풀리면 "Debian-3.0r0.ext3.1gb"이란 파일이 생성된다. 이 이름을 configuration file에 넣어줘야 한다.

파일 시스템의 크기가 작은 경우 toporesize.zip을 이용해서 크기를 늘려줄 수 있다.

다음으로 고정된 크기의 스왑 파일을 만들어 줘야 한다. 이 파일 크기가 스왑 파티션의 용량이 된다. http://gniarf.nerim.net/colinux/swap/에서 적당한 크기(실제 시스템에 꼽혀있는 램 용량정도)의 더미 스왑파일(파일네임의 크기는 MB단위이다)을 다운받아 역시 c:\colinux에서 압축을 풀어주면 된다. 압축을 풀면 swapXXXMb 같은 이름의 파일이 생긴다. 이 이름도 configuration file에 넣어줘야 한다.

Configuration file

coLinux는 configuration file이 필요하다. c:\colinux에 보면 example.conf라는 예제 파일이 있다. 이걸 다른 이름으로 저장(ex. colinux.conf)한 다음 수정해 주면 된다.

# The default kernel

kernel=vmlinux

# File contains the root file system.

cobd0="c:\coLinux\Debian-3.0r0.ext3.1gb"

# Swap device, should be an empty file with 128..512MB.

cobd1="c:\coLinux\swap_512Mb"

# Tell kernel the name of root device

root=/dev/cobd0

# Additional kernel parameters (ro = rootfs mount read only)

ro

# Initrd installs modules into the root file system.

initrd=initrd.gz

# Maximal memory for linux guest

mem=64

# Slirp for internet connection (outgoing)

eth0=slirp

# Tuntap as private network between guest and host on second linux device

eth1=tuntap


configuration file은 기본적으로 위와 같은 내용을 담고 있다. 위에서 압축을 해제한 루트 파일 시스템과 스왑 파일 이름을 변경해주고 colinux가 사용할 메모리 크기를 변경해줘야 한다.

네트웍을 사용하려면 eth0=slirp를 활성화(이 문장 앞의 '#'를 없애준다) 시켜줘야 한다. 또한 인터넷 공유( Internet Sharing)을 위해 TAP-Win32를 사용하려면 eth1=tuntap을 활성화 시켜준다.

모든 변경이 끝났으면 파일을 저장해준다.

네트웍 설정

coLinux의 네트웍카드는 가상 디바이스이기 때문에 coLinux와 다른 네트웍 장치와의 연결 역시 가상의 연결이다. coLinux 모니터는 coLinux OS에 가상 네트웍카드를 제공해주고 다른 디바이스에 연결하기 위해 TAP, winPcap 또는 Slirp를 사용한다. 가상 네트웍 카드가 연결될 수 있는 것들로는 다음이 있다.

  • MS 루프백 어댑터 (winpcap)
  • TAP 가상 어댑터 (TAP)
  • 실제 이더넷 카드 (winpcap)
  • SLIRP 가상 어댑터 (slirp)
가능한 통신 패스로는 다음이 있다.
  • coLinux 가상 네트웍 카드 -> Slirp 가상 네트웍 어댑터 -> LAN (인터넷)
  • coLinux 가상 네트웍 카드 -> MS 루프백 어댑터 (winpcap을 사용해서) -> 호스트 OS
  • coLinux 가상 네트웍 카드 -> TAP 가상 네트웍 어댑터 -> 호스트 OS
  • coLinux 가상 네트웍 카드 -> 실제 이더넷 카드 (winpcap을 사용해서) -> LAN (인터넷)
  • coLinux 가상 네트웍 카드 -> TAP 가상 네트웍 어댑터 -> MS 소프트웨어 브릿지 -> 실제 이더넷 카드 -> LAN (인터넷)
  • coLinux 가상 네트웍 카드 -> TAP 가상 네트웍 어댑터 -> 윈도우 인터넷 연결 공유(ICS) -> 실제 이더넷 카드 -> LAN (인터넷)
  • coLinux 가상 네트웍 카드 -> MS 루프백 어댑터 -> MS 가상 브릿지 -> 무선랜 카드 -> LAN (인터넷)

연결 방법을 성능순으로 보면 WinPCAP 브릿지, TAP 커넥터, Slirp 순이다.

coLinux의 모든 네트웍 카드는 물론 가상 디바이스이다. 때로는 윈도우에서도 추가적인 가상 네트웍 카드를 만들어 주는게 좋을수도 있다. 윈도우 루프백 어댑터는 윈도우에 따라오는 가상 네트웍 어댑터로 아무때나 설치할 수 있다. coLinux 가상 네트웍 카드와 윈도우 루프백 가상 네트웍 카드를 연결하려면 WinPcap을 사용한다. coLinux에 따라오는 TAP 가상 네트웍 카드 소프트웨어는 다른 종류의 가상 네트웍 카드로 역시 윈도우에 설치할 수 있다.

coLinux를 네트웍에 연결하는 가장 쉬운 방법은 coLinux에 따라오는 SLIRP를 사용하는 것이다. 가장 일반적으로 coLinux 가상 네트웍 카드를 실제 네트웍에 연결하는데 사용되는 방법은 WinPcap을 사용하는 것으로 이 경우 coLinux가 DHCP 서버나 홈 라우터에서 IP 어드레스를 요구할 수 있게 해 준다. 또 다른 방법으로는 coLinux 가상 어댑터를 TAP 가상 네트웍 어댑터에 연결해서 네트웍 연결을 공유하기 위해 윈도우 인터넷 연결 공유(ICS)를 사용하는 것이다.

성능향상을 위한 목적으로라면 coLinux OS에 2개의 가상 네트웍 어댑터를 사용하는게 좋다. 하나는 호스트 OS와 직접 연결을 위해 사용하고 다른 하나는 LAN 또는 인터넷 연결에 사용한다. 이 경우 일반적으로 4개의 네트웍 카드가 사용된다는 의미이고 이 중 3개는 가상 네트웍 어댑터이다.

ICS는 NAT의 형태가 된다. NAT는 일부 프로토콜의 동작을 방해하기 때문에 coLinux OS에서 실행되는 서비스를 억세스하기 힘들게 만든다. 네트웍 프로바이더(다이얼-업, DSL, 케이블 모뎀)가 단 한개의 ip 어드레스만 제공하고 홈 라우터가 없는 경우 coLinux를 NAT를 사용해서 실행하면 여러개의 private IP 어드레스가 할당받은 한개의 ip 어드레스를 공유할 수 있게 해 준다.

권장하는 설정

모든 경우에 사용할 수 있는 네트워킹 설정으로는 coLinux에 2개의 가상 어댑터를 사용하는 것이다. 한개의 어댑터는 LAN 또는 인터넷에 연결하고 다른 어댑터는 호스트OS와 고속 연결에 사용한다.

  1. coLinux OS에서 하나의 어댑터는 호스트 OS와의 연결을 위해 설정한다. TAP - 호스트 OS와의 Private 연결 부분을 참조
  2. coLinux OS에서 두번째 어댑터는 인터넷 또는 LAN과 연결을 위해 설정한다. Network#Slirp(쉽고 무선랜과 문제를 덜 일으키지만 느림), Network#WinPcap (복잡한 설정이 필요하고 무선랜과 문제를 일으킬 가능성이 많지만 빠름) 을 참조

* 네트웍 설정 방법에 대해서는 다음 글에서 자세히 설명하도록 하겠다.

coLinux Network 설정하기 (http://techblog.tistory.com/entry/coLinux-Network)
Posted by nautes

이전버튼 1 이전버튼