개발/Tool

coLinux installation with debian image

gonGon 2012. 6. 30. 01:13

window에서 linux를 사용하려고 이전처럼 cygwin을 설치하려다가 coLinux가 검색되어 설치해 보았다.

cygwin이 단순히 bash의 emulator이며 어떤 linux인지 규정하기가 애매한 데 반해, coLinux는 (vmware처럼) 설치하려는 linux의 image를 선택하여 구동할 수 있으며 fork(), 공유메모리 사용 가능 등 실제 linux처럼 작동하는 장점이 있다고 한다.


1. download

http://sourceforge.net/projects/colinux/files/


위 경로에서 coLinux와 image들을 구할 수 있다.


cf) ubuntu를 설치하려다가 debian으로 전환했다. 올라와 있는 ubuntu 최신 버전이 12.04인데 image가 완전하지 않은 것 같다.(기동할 때 에러 메시지가 몇몇 보이고 불안해 보인다.) 아래 버전인 9.04는 지원하는 저장소를 찾지 못했다.

Debian은 6버전(squeeze)을 지원한다. 용량도 작고 꼭 필요한 것들만 선택해서 쓸 수 있어서 학습용으로는 debian이 더 나은 것 같다. 또 다른 linux와 달리 기동에 필요한 conf와 bat 파일을 미리 만들어서 배포하고 있어서 좋다.






2. install

잘 설명된 블로그들이 많아서 여기저기 참고하여 설치했다.


2.1 coLinux 설치와 설정파일

coLinux는 exe파일 click만 해서 진행할 수 있다. 설치 단계 중에 image파일 다운로드하는 check box가 있는데 그 곳을 check하여 image를 다운하면 속도가 늦다고 해서 check하지 않고 설치만 했다.


cf) coLinux 설치한 곳에 example.conf가 있는데 이를 열어보면 coLinux의 기본 설정을 찾아볼 수 있다.


kernel=vmlinux
cobd0="c:\coLinux\root_fs"
#cobd1="c:\coLinux\swap_device"
root=/dev/cobd0
ro
initrd=initrd.gz
#mem=64
#eth0=slirp

#eth1=tuntap


몇 가지 더 있는데 뭔소린지도 모르겠고 안 건들어도 잘 돌아간다.

cobd0은 coLinux가 구동할 linux image, cobd1은 swap 파일을 지정한다.

swap파일은 배포하는 image파일 안에 없으면 (fsutil 등으로) 만들어줘야 한다.

root, ro, initrd는 그대로 쓰면 된다.

mem은 linux에 할당할 메모리 size이다.

eth0, eth1은 네트워크 설정할 때 사용한다. 처음 coLinux를 올린 후에 network설정에서 수정한다.



2.2 debian image - 설정 및 실행파일까지

debian image(Debian-6.0.1-squeeze.7z)는 7zip으로 압축되어 있다. 빵집으로 풀어보니 파일에 오류가 있어서 7zip을 설치하여 압축을 풀었다. 압축을 해제하면 아래 파일들이 나온다.


rootfs_2gb.img
colinux_squeeze_how2create.txt
coLinux_squeeze_readme.txt
squeeze.bat
squeeze.conf
swap_128mb.img


linux image외에 conf파일, 실행에 필요한 bat파일, 스왑파일까지 모두 포함하여 배포하고 있다.

squeeze.conf는 다음과 같다.


kernel=vmlinux
cobd0="rootfs_2gb.img"
cobd1="swap_128mb.img"
root=/dev/cobd0
ro
initrd=initrd.gz
mem=128
eth0=slirp


cobd0과 cobd1에 할당할 값에는 이미지파일의 경로를 적는다. 절대경로를 적어 주거나, 위처럼 (상대경로로) 기록된 설정을 그대로 사용하려면 coLinux가 설치된 위치에 다운받은 image파일을 풀어놔야 한다. 


squeeze.bat를 열어 보면 다음과 같다.


colinux-daemon.exe @squeeze.conf -t nt


colinux-daemon.exe는 실행파일이고 @뒤에 설정파일을 명시하거나, @없이 설정파일의 내용을 쭉 적어줘도 된다. (각 항목들은 개행없이 공백으로 구분한다.) 

"-t nt" 항목은 꼭 사용하자. 이게 없으면 도스창 위에 다시 console이 뜬다. 이 console은 위치 이동이 안 되고 크기 조절은 conf에서 지정해야 하므로 불편하다. (도스창에서는 linux 이미지를 기동하면서 발생하는 coLinux의 로그가 출력되는데 디버깅 등의 목적으로 사용될 수는 있을 것이다.)



2.3 network - [window]

이 부분은 원문을 참조하여 설명을 해 논 블로깅도 많이 있지만 딱히 관심있는 부분이 아니여서 여기저기 블로깅들을 참조하여 따라하기로 했다.


2.3.1. winpcap설치

http://www.winpcap.org 에서  winPcap을 다운받아 설치. click & next로 설치 완료.


2.3.2. 로컬 영역 연결 수정

winpcap 을 설치하면 네트워크 설정에 "로컬 영역 연결"이 하나 늘어난다. (로컬 영역 연결2 또는 로컬 영역 연결3) 이를 수정한다. (아래는 "coLinux"로 이름을 수정해 놓은 상태)



TAP-Win32 Adapter V8 (coLinux) 옆에 있는 "구성" click.



"고급" 탭의 "속성" 중 "Media Status"를 선택한 후, 값을 "Always Connected"로 한다.



IP 정보를 입력할 차례다. "일반"탭에서 "인터넷 프로토콜(TCP/IP)" > "속성" 클릭.


위와 같이 입력한다. IP주소는 debian의 network 설정에서 사용해야 하니 기억하자. 게이트웨이와 DNS설정은 비워둔다.


이제 debian을 기동해 보자. 기동한 이 후에 network 설정을 수정한다.



2.4 기동

coLinux를 설치한 위치에서 squeeze.bat를 실행한다. root로 로그인.(초기 설정은 root/root 이다.)

/etc/network/interfaces 파일을 열어 수정한다.


[수정전]

# /usr/share/doc/ifupdown/examples for more information.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp


[수정후]

# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
# /usr/share/doc/ifupdown/examples for more information.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.0.2.15
broadcast 10.0.2.255
netmask 255.255.255.0
gateway 10.0.2.2
nameserver 10.0.2.3

iface eth1 inet static
address 192.168.37.10
netmask 255.255.255.0


eth0을 dhcp에서 static으로 바꾸고, address~nameserver까지 적어준다.

eth1을 추가한다. static으로 두고, address와 netmask만 적어준다. 이 정보는 window에서 추가한 network의 정보와 같다. 



window에서 debian에 접근할 때는 192.168.37.10을 사용한다.. 고 하는데 이거 문제 있다.

local환경에서 window랑 통신이 안 된다.

winpcap을 사용하지 않고 네트워크 연결 브릿지를 사용하는 방법으로 해야 하는데, 나중에 정리.


위처럼 설정을 마친 후에 debian을 재기동 하자.

네트워크 연결을 확인할 도구가 ping 정도 밖에 없어서 apt-get을 실행해 봤다. (우분투 9버전을 설치했을 때는 저장소들이 지원을 안 해서 404가 떨어졌다.)


apt-get install dnsutils 했더니 dnsutils가 없다고 한다.

apt-get update 하여 list를 update해 주었다.