db1-1.jpg

1. Dropbox site(http://www.getdropbox.com)로 가면 위의 화면이 나온다. 여기서 download dropbox를 선택해서 프로그램을 다운받는다.

db2.jpg

2. 다운받은 프로그램을 실행하면 나오는 화면이다. 처음 설치하는 것이면 I'm new to Dropbox를 선택하고 다음으로 넘어간다.


db3.jpg

3. Dropbox에서 사용하는 계정을 만들어 준다. 필요한 정보를 넣고 다음으로 넘어간다.


db4-1.jpg

4. 계정이 만들어졌다. 간단한 설명을 보려면 다음으로 넘어가면 되고 바로 끝내려면 'Skip tour and finish'를 눌러주면 된다.


db5.jpg

5. 여기서 'Finish and go to My Dropbox'를 눌러주면 설치는 종료된다.


db6.jpg


db8.jpg

6. 설치가 끝나면 윈도우 오른쪽 아래에 Dropbox 아이콘이 생기고 탐색기를 열어보면 자신의 Documents 폴더에 My Dropbox라는 폴더가 생긴다.


db9.jpg

7. My Dropbox 폴더로 들어가 보면 기본적으로 저 3개의 항목이 들어가 있다. 이제 저 폴더도 그냥 내 하드디스크에 있는 폴더와 마찮가지로 사용하면 된다. 최대 2GB까지 사용할 수 있다. 일반 폴더와 다른점은 이 폴더에 넣은 내용은 하드디스크에 저장되는게 아니고 자동으로 웹 디스크에 저장되기 때문에 인터넷만 사용할 수 있는곳이면 어디서든지 파일을 억세스 할 수 있다. 무료로 제공되는 용량도 2GB로 상당히 큰 편이기 때문에 작업파일을 굳이 USB 메모리에 넣어 들고다닐 필요가 없어진다.

다른 웹하드에 비해 장점은 별도의 인터페이스를 사용할 필요 없이 그냥 일반 하드디스크를 사용하는것과 동일한 방법으로 사용하면 되고 윈도우 뿐 아니고 맥/리눅스에서도 똑같이 사용할 수 있다는 점이다. 또한 공용 컴퓨터라 프로그램을 설치할 수 없는 경우에는 웹 인터페이스를 사용하면 된다.


db20.jpg

8. 화면 오른쪽 아래의 Dropbox 아이콘을 클릭하면 다음과 같은 메뉴가 나온다. 여기 보면 현재 얼마를 사용했는지 알 수 있다. 그리고 표시해놓은 web interface를 선택하면 웹 브라우져가 열리고 웹 브라우져에서 직접 파일을 관리할 수도 있다.

db10.jpg

9. Web interface로 열어 본 화면이다.


db11.jpg

10. 특정 파일에 대해 복사, 삭제등을 하려면 마우스를 파일로 가져다 대면 그 파일이 선택되고 오른쪽 끝에 역삼각형 아이콘이 생긴다. 이 아이콘을 클릭하면 풀다운 메뉴가 열린다.

db12.jpg

11. 여기서 원하는 동작을 선택하면 된다.


db13.jpg

12. 기본적으로 모든 폴더는 본인 혼자만 사용(보기, 읽기, 쓰기 등등) 할 수 있다. 하지만 public 폴더는 아무나 볼 수 있기 때문에 다른 사람에게 파일을 보내줘야 할 때 유용하다. Public 폴더에 들어있는 파일의 역삼각형을 눌러 나오는 풀다운 메뉴를 보면 11번 화면에 비해 'Copy public URL' 이라는 항목이 추가되어 있다. 이걸 선택하면 이 파일의 웹주소가 복사되기 때문에 다른 사람에게 보내는 메일이나 메신져에 이 내용을 붙여넣기 해 주면 다른 사람이 이 주소를 이용해서 파일을 읽거나 저장할 수 있게 된다.

db14.jpg

13. 또한 dropbox 사용자끼리는 폴더를 공유할 수도 있다. 이 경우 공유폴더는 공유하는 사람들끼리 마음대로 파일 생성, 삭제, 변경이 가능하다. 즉 여러 사람이 공동작업을 하는 경우 공유폴더를 이용하면 매우 편리하게 작업을 할 수 있다.

공유폴더를 만들려면 'Share'를 선택하면 나오는 오른쪽 화면에 필요한 정보를 넣어주면 된다.


db15.jpg

14. 위의 단계에서 공유하기를 원하는 사람의 이메일 주소로 이런 초대장이 발송된다. 공유를 하겠다면 표시된 링크를 눌러주면 된다.


db16.jpg

15. 그러면 웹 브라우져에 이런 정보가 표시되고 허용할건지 거부할건지 물어보게 된다. 허용하려면 'accept'를 선택해주면 된다.


db17.jpg

16. 공유를 허용해주면 초대한 쪽과 초대받은 쪽 모두 공유폴더가 만들어진다. 이 폴더의 내용에 변경(파일/폴더 생성, 삭제, 파일 변경 등) 이 생기면 그게 바로 상대방에게도 반영된다.

Posted by nautes

리눅스 커널 2.4 이후 버젼의 리눅스를 사용하고 있으면 이미 램디스크 지원이 내장되어 있다. 확인하고 싶으면 다음의 명령어를 사용하면 된다.

$ dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize

CentOS나 RHEL인 경우 위와 같은 출력이 나오고 다른 리눅스 배포판인 경우도 유사한 결과가 나온다. 아래 명령어로 만들어 져 있는 램 디스크를 볼 수 있다.

$ ls -l /dev/ram*
lrwxrwxrwx 1 root root 4 Apr 24 12:05 /dev/ram -> ram1
brw-rw---- 1 root disk 1, 0 Apr 24 12:05 /dev/ram0
brw-rw---- 1 root disk 1, 1 Apr 24 12:05 /dev/ram1
brw-rw---- 1 root disk 1, 10 Apr 24 12:05 /dev/ram10
brw-rw---- 1 root disk 1, 11 Apr 24 12:05 /dev/ram11
brw-rw---- 1 root disk 1, 12 Apr 24 12:05 /dev/ram12
brw-rw---- 1 root disk 1, 13 Apr 24 12:05 /dev/ram13
brw-rw---- 1 root disk 1, 14 Apr 24 12:05 /dev/ram14
brw-rw---- 1 root disk 1, 15 Apr 24 12:05 /dev/ram15
brw-rw---- 1 root disk 1, 2 Apr 24 12:05 /dev/ram2
brw-rw---- 1 root disk 1, 3 Apr 24 12:05 /dev/ram3
brw-rw---- 1 root disk 1, 4 Apr 24 12:05 /dev/ram4
brw-rw---- 1 root disk 1, 5 Apr 24 12:05 /dev/ram5
brw-rw---- 1 root disk 1, 6 Apr 24 12:05 /dev/ram6
brw-rw---- 1 root disk 1, 7 Apr 24 12:05 /dev/ram7
brw-rw---- 1 root disk 1, 8 Apr 24 12:05 /dev/ram8
brw-rw---- 1 root disk 1, 9 Apr 24 12:05 /dev/ram9
lrwxrwxrwx 1 root root 4 Apr 24 12:05 /dev/ramdisk -> ram0

결과에 나온 모든 램 디스크 크기는 동일하다. 위의 예제에서는 모두 16MB이다. 이걸 128MB까지 사용할 수 있게 변경해 보겠다. 단 여기서는 사용할 수 있게 해 주는거지 실제로 128B를 할당해주는게 아니다. 후에 드라이브중 하나를 포맷해 줌으로서 실제 영역을 할당해주게 된다. 램디스크 용량은 1024의 배수로 지정해 줘야 하기 때문에 128MB인 경우 131072K가 된다.

에디터를 사용해 /etc/grub.conf 파일을 열어보면 아래와 같은 라인을 찾을 수 있을 것이다.

kernel /vmlinuz-2.6.9-42.0.10.EL ro root=/dev/VolGroup00/LogVol00

이 라인의 뒤쪽 부분에 ramdisk_size=131072를 추가해주면 된다.

kernel /vmlinuz-2.6.9-42.0.10.EL ro root=/dev/VolGroup00/LogVol00 ramdisk_size=131072

변경된 파일을 저장하고 에디터를 종료한다. 이 시점에서 램디스크 용량을 변경했지만 변경된 내용을 적용하려면 시스템을 리부트 시켜줘야 한다. 시스템이 리부트되고 나서 나머지 설정을 해 주면 된다.

$ mke2fs -m 0 /dev/ram0

위의 명령을 사용해서 ram0 램디스크를 사용할 수 있게 포맷 해 준다. 이 과정에서 커널이 메모리에 램디스크를 위한 용량을 할당해주게 된다. 포맷이 끝나면 램디스크를 마운트 시켜주면 된다.

$ mkdir /mnt/rd
$ mount /dev/ram0 /mnt/rd

이제 램디스크를 사용할 수 있다. 이렇게 만들어 진 램디스크를 특정 사용자가 사용할 수 있게 해 주려면 chown 명령을 사용해서 오너를 변경해주면 된다.

$ chown testuser.testuser /mnt/rd

mount명령을 사용하면 램디스크가 /mnt/rd에 마운트 된 걸 볼 수 있다.

$ mount
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda2 on /home type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/ram0 on /mnt/rd type ext2 (rw)

주의할것은 램디스크이기 때문에 여기에 저장된 내용은 시스템을 리부팅하면 모두 지워지게 된다는 것이다. 단 램디스크를 언마운트 했다가 다시 마운트 하는 경우에는 램디스크 내용이 그대로 살아있다.

시스템이 부팅할 때 마다 자동으로 램디스크를 만들도록 설정하고 싶으면 아래의 내용을 /etc/rc.local 파일에 추가해주면 된다.

mke2fs -m 0 /dev/ram0
mount /dev/ram0 /mnt/rd
chown testuser.testuser /mnt/rd

---
Mac OS X에서는 아래의 명령으로 50MB 크기의 램디스크를 만들어 줄 수 있다. 여기서 램디스크의 용량은 바이트로 지정해 줘야 한다. (예: 50MB인 경우 50*1024*1024 = 52428800)

$ hdid -nomount ram://52428800
$ newfs_hfs /dev/disk1
$ mkdir /tmp/ramdisk1
$ mount -t hfs /dev/disk1 /tmp/ramdisk1

만들어 진 램디스크를 언마운트 하려면 다음의 명령을 사용하면 된다.
$ hdiutil detach /dev/disk1

또한 이런 명령어를 직접 사용하지 않고 쉽게 램디스크를 만들어 줄 수 있는 GUI 유틸리티도 있다.

사용자 삽입 이미지
MakeRAMDisk : http://boredzo.org/make-ram-disk/

소스코드까지 공개되어 있는 무료 유틸리티로 OS X 10.4 이상에서 동작한다.
이 프로그램을 실행시키면 자동으로 64MB의 램디스크가 만들어진다. 사이즈를 변경하고 싶으면 프로그램을 실행할 때 Option키를 누른 상태에서 실행하면 위의 화면이 나와서 크기를 변경해 줄 수 있다.
만들어 진 램디스크를 없애려면 CD를 추출하는것과 마찮가지로 램디스크 아이콘을 휴지통에 버려주면 된다.
Posted by nautes

최근의 비디오카드는 엄청난 양의 비디오램(보통 256~512MB)을 가지고 있다. 하지만 그 중 대부분은 최신 3D 게임같은것을 하지 않는다면 사용되지 않는다. 리눅스에서 이 비디오램을 스왑 파티션 또는 램디스크로 사용할 수 있다. 리눅스에서 놀고 있는 비디오카드의 메모리를 램디스크 또는 스왑으로 사용하면 엄청난 성능 향상이 가능해진다.

커널 준비하기

그래팩카드의 메모리를 사용하려면 그 메모리 영역이 커널에 매핑되어야만 한다. 기본적으로 시스템 메모리만 사용할 수 있는 램으로 인식되기 때문에 PCI 주소 영역(address space)의 메모리를 사용하려면 사용하고자 하는 메모리를 커널에 등록해 줄 수 있는 드라이버가 필요하다. 2.6 커널에 이 역할을 수행해주는 MTD(Memory Technology Device) 지원 드라이버가 포함되었다. 리눅스의 menuconfig를 실행해서 MTD 기능을 활성화 시켜줘야 한다. 커널에 포함된 (built-in) 드라이버로 하건 모듈로 컴파일하건 관계 없이 동작한다.

사용자 삽입 이미지

비디오 메모리 주소 확인

커널을 다시 만들어 준 다음에는 PCI 영역에서 비디오 메모리 주소를 찾아내야 한다. 가장 쉬운 방법은 lspci를 사용하는 것이다.

$ lspci -vvv

0000:02:00.0 VGA compatible controller: ATI Technologies Inc R300 AD [Radeon 9500 Pro] (prog-if 00 [VGA])

Subsystem: PC Partner Limited: Unknown device 7c07

Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-

Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-

Latency: 32 (2000ns min), cache line size 08

Interrupt: pin A routed to IRQ 255

Region 0: Memory at d8000000 (32-bit, prefetchable) [size=128M]

Region 1: I/O ports at b000 [size=256]

Region 2: Memory at e9000000 (32-bit, non-prefetchable) [size=64K]

Expansion ROM at e8000000 [disabled] [size=128K]

Capabilities: [58] AGP version 3.0

Status: RQ=256 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3+ Rate=x4,x8

Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>

Capabilities: [50] Power Management version 2

Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)

Status: D0 PME-Enable- DSel=0 DScale=0 PME-


이 중에 필요한 정보는 prefetchable memory region인 Region 0이다. 이 영역의 시작 주소는 0xd8000000 이다.

* 위의 화면은 예제이다. 실제로 컴퓨터의 메모리 영역의 시작번지는 다를 수 있기 때문에 꼭 확인해 줘야 한다.

메모리 매핑하기

실제로 PCI 영역의 메모리를 억세스하려면 MTD드라이버에게 해당 영역의 시작과 끝 주소를 알려줘야만 한다. 끝 주소를 계산하는 법은 간단하다. 단순히 어느정도의 메모리를 사용할지 결정하면 된다. 하지만 비디오카드가 원래 목적의 기본동작을 위해 얼마간의 메모리 영역은 남겨둬야 한다.

만일 SLRAM 드라이버를 모듈로 컴파일 했다고 하면 다음 명령을 실행해주면 된다.

# Region 0 starts at 0xd8000000, leave 4 MB ram for the VGA, so add 4*1024*1024 to it

# which is 0x00400000 in hex, 32 bit. This means: 0xd8400000 will be the starting position.

# Now, to use the other 124 MB, the easiest way is to tell the offset value.

# The third parameter's leading + means that we are telling the offset,

# not the actual region's ending address. 124 MB is 0x7c00000 in hex, 32 bit.

modprobe slram map=VRAM,0xd8400000,+0x7c00000


PHRAM 드라이버를 모듈로 컴파일 한 경우는 다음의 명령을 사용한다.

# Loading with PHRAM module is very similar to SLRAM module, except that it uses a "length"

# parameter by default rather than an "end offset".

# This does the same thing as the SLRAM module above

modprobe phram phram=VRAM,0xd8400000,0x7c00000

# This is also the same (and easier to read)

modprobe phram phram=VRAM,0xd8400000,124Mi


커널에 포함된 드라이버로 컴파일 한 경우 커널 커맨드 라인에 아래를 추가해주면 된다.

# Now the first parameter is the device which will be mapped.

# Other parameters share the same meaning shown above, in the module version.

# Please reboot your computer, to take it effect.

slram=mtd0,0xd8400000,+0x7c00000


제대로 설정이 되었는지 dmesg를 사용해서 확인할 수 있다.

slram: devname = mtd0

slram: devstart = 0xd8400000

slram: devlength = +0x7c00000

slram: devname=mtd0, devstart=0xd8400000, devlength=0x7c00000

slram: Registered device mtd0 from 3543040KiB to 3670016KiB

slram: Mapped from 0xe0880000 to 0xe8480000


또는 좀 더 확실히 하고 싶으면 /proc/mtd 파일을 보면 된다.

dev: size erasesize name

mtd0: 07c00000 00004000 "mtd0"


MTD 디바이스 만들기

커널이 MTD를 지원하도록 설정하고 나면 메모리를 억세스 할 방법이 있어야 한다. 즉 디바이스를 만들어 줘야 할 차례이다. 다음의 명령을 사용하면 된다.

$ modprobe mtdchar ("Direct char device access to MTD devices" 가 모듈로 컴파일 된 경우만 필요, 커널 built-in인 경우 사용하면 안된다.)

$ mknod /dev/mtd0 c 90 0

$ modprobe mtdblock ("Caching block device access to MTD devices" 가 모듈로 컴파일 된 경우만 필요, 커널 built-in인 경우 사용하면 안된다.)

$ mknod /dev/mtdblock0 b 31 0

사용하기

이제 비디오카드의 메모리를 램디스크나 스왑파티션으로 사용할 수 있다. 어느 경우로 사용하건 비디오램에 파일 시스템을 만들어 줘야 한다.

* 스왑 파티션으로 사용하기

스왑파티션으로 사용하려면 다음의 명령을 사용하면 된다.

$ mkswap /dev/mtdblock0

$ swapon /dev/mtdblock0

위의 명령을 실행하면 비디오카드의 메모리에 스왑 파일 시스템을 만들고 그 파티션을 활성화 시키게 된다. 스왑 파티션을 여러개 지정한 경우 어느 스왑 파티션을 먼저 사용할 지 우선권(priority) 지정하려면 swapon에 '-p X' 스위치를 사용하면 된다. 여기서 X는 0부터 32767 사이의 정수로 숫자가 클수록 우선권이 높다.

$ swapon /dev/mtdblock0 -p 10

우선권을 지정하지 않으면 현재 사용되는 스왑파티션의 우선권보다 낮은 값이 할당되게 된다. 또한 이 명령을 사용하면 fstab에도 반영되기 때문에 매번 부팅할 때 마다 다시 수동으로 추가해 줄 필요는 없다.

위의 명령을 실행한 후의 /etc/fstab의 내용이다.

$ <fs> <mountpoint> <type> <opts> <dump/pass>

/dev/mtdblock0 none swap sw,pri=10


* 램디스크로 사용하기

램디스크로 사용하려면 비디오램에 다음의 명령으로 파일시스템을 만들어 주면 된다.

$ mkfs.ext2 /dev/mtdblock0

이렇게 만들어 준 다음 리눅스 파일 시스템의 원하는 위치에 마운트 시켜 주면 된다.


* Michał SchulzGentoo Wiki의 문서를 정리, 번역한 글이다. 원문은 각각의 링크를 누르면 볼 수 있다.

Posted by nautes

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

사용자 삽입 이미지


최근 PC에 윈도우와 리눅스 멀티부팅 시스템을 사용하는 경우가 많아졌는데 윈도우를 먼저 설치하고 리눅스를 설치하면 부팅할 때 GRUB이 실행되서 어떤 OS로 부팅할지 선택하게 된다.
문제는 리눅스를 지우는 경우 grub까지 같이 없어져 버리면서 윈도우까지 부팅을 할 수 없게 된다는 점이다.
윈도우 파티션은 그대로 남아있기 때문에 아무 문제가 없는데 MBR에 부트로더가 없어서 컴퓨터를 on 하면 OS가 없다는 메시지가 나오고 더 이상 진행이 되지 않게 된다. 이 경우 그냥 윈도우를 다시 까는 사람들도 있는데 특별히 중요한 데이터가 없다면 몰라도 그렇지 않다면 상당히 귀찮은 일이 되어버리게 된다.

그래서 MBR이 무엇이고 어떤 내용을 담고 있는가와 위에서 말한 경우에 윈도우를 다시 설치하지 않고 부팅할 수 있는 방법에 대해 설명하려고 한다.

MBR이란?
Master Boot Record의 약자로 하드디스크의 첫번째 파티션을 생성할 때 만들어진다. 항상 디스크의 첫번째 섹터
에 위치하며 디스크의 파티션 테이블과 부팅에 필요한 작은 실행파일을 저장하게 된다.
앞쪽 446 바이트는 실행파일이고 바로 뒤 64 바이트가 파티션 테이블, 마지막 2 바이트가 시그니쳐로 항상 0x55AA 값을 가진다. (한 섹터는 512 바이트로 446 + 64 + 2 = 512)

다음은 정상적인 MBR의 예이다.
Physical Sector: Cyl 0, Side 0, Sector 1
000000000 33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C 3AZ??.|uP.P.u?.|
000000010 BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 ?..PW?a.o¤E??.±.
000000020 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B 8,|.u.??.aoI.‹.‹
000000030 EE 83 C6 10 49 74 16 38 2C 74 F6 BE 10 07 4E AC i??.It.8,to?..N¬
000000040 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 25 <.tu»..?.I.eo‰F%
000000050 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 05 –SF.?.<.t.?.<.t.
000000060 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B4 :Au+@?F%.u$»?UP?
000000070 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 74 AI.Xr.?uU?u.oA.t
000000080 0B 8A E0 88 56 24 C7 06 A1 06 EB 1E 88 66 04 BF .Sa?V$C.?.e.?f.?
000000090 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4E ..?..‹U3E?y..‹N
0000000A0 25 03 4E 02 CD 13 72 29 BE 46 07 81 3E FE 7D 55 %.N.I.r)?F.?>?}U
0000000B0 AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 27 07 EB ?tZ?i.U…ou??'.e
0000000C0 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EB S?‘R™.F..V.e..Ze
0000000D0 D5 4F 74 E4 33 C0 CD 13 EB B8 00 00 00 00 00 00 OOta3AI.e?......
0000000E0 56 33 F6 56 56 52 50 06 53 51 BE 10 00 56 8B F4 V3oVVRP.SQ?..V‹o
0000000F0 50 52 B8 00 42 8A 56 24 CD 13 5A 58 8D 64 10 72 PR?.BSV$I.ZX?d.r
000000100 0A 40 75 01 42 80 C7 02 E2 F7 F8 5E C3 EB 74 49 .@u.B€C.a?o^AetI
000000110 6E 76 61 6C 69 64 20 70 61 72 74 69 74 69 6F 6E nvalid partition
000000120 20 74 61 62 6C 65 00 45 72 72 6F 72 20 6C 6F 61 table.Error loa
000000130 64 69 6E 67 20 6F 70 65 72 61 74 69 6E 67 20 73 ding operating s
000000140 79 73 74 65 6D 00 4D 69 73 73 69 6E 67 20 6F 70 ystem.Missing op
000000150 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 00 00 erating system..
000000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000180 00 00 00 8B FC 1E 57 8B F5 CB 00 00 00 00 00 00 ...‹u.W‹oE......
000000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000001B0 00 00 00 00 00 00 00 00 A6 34 1F BA 00 00 80 01 ........¦4.?..€.
0000001C0 01 00 07 FE 7F 3E 3F 00 00 00 40 32 4E 00 00 00 ...?>?...@2N...
0000001D0 41 3F 06 FE 7F 64 7F 32 4E 00 A6 50 09 00 00 00 A?.?d2N.¦P....
0000001E0 41 65 0F FE BF 4A 25 83 57 00 66 61 38 00 00 00 Ae.??J%?W.fa8...
0000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U?

바이러스나 기타 이유로 앞쪽 446 바이트가 지워지거나 값이 변경된다면 부팅할 때 아무 메세지 없이 그냥 멈춰있게 되는데 그 경우라 하더라도 파티션 테이블만 살아 있다면 디스크를 분리해서 다른 컴퓨터에 연결한다면 파티션 안의 정보는 그대로 사용할 수 있다.

가장 심각한 문제는 파티션 테이블이 망가지는건데 이 경우는 쉽게 해결할 방법은 없고 하드 복구 전문업체에 의뢰하거나 전용 소프트웨어를 사용해서 복구를 시도해야 한다.

마지막 2 바이트 값이 0x55AA가 아니라 다른 값이면 부팅할 때 "Operating System not found" 같은 에러가 발생하게 된다.

망가진 MBR을 복구(파티션 테이블은 살아있는 경우에만 가능)하는 방법으로는 먼저 fdisk를 사용할수가 있다.

A:\> fdisk /mbr

다음으로는 윈도우 NT/W2K/XP인 경우 디스크나 CD로 부팅한 다음 repair 옵션을 선택해서 recovery console을 실행한다. 콘솔에서 fixmbr 명령어를 실행시키면 망가진 MBR을 복구할 수 있다.


Posted by nautes

이전버튼 1 이전버튼