Cooperative Linux

Cooperative Linux는 coLinux로 줄여 부르며, 마이크로소프트 윈도우와 리눅스 커널이 동일한 기계에서 동시에 병렬로 실행될 수 있도록 하는 소프트웨어이다.

Cooperative Linux는 협력 가상 머신(CVM)의 개념을 활용한다. 기존의 가상 머신과 달리 CVM은 호스트 OS에 이미 존재하는 자원을 공유한다. 기존 VM 호스트에서는 모든 (게스트) OS에 대해 자원이 가상화된다. CVM은 두 OS 모두에게 호스트 머신에 대한 완전한 제어권을 부여하는 반면, 기존 VM은 모든 게스트 OS를 실제 머신에 접근할 수 없는 비특권 상태로 설정한다.

 개요 
섬네일|left|윈도우에서 실행 중인 시냅틱 및 노틸러스
"협력적"이라는 용어는 병렬로 작동하는 두 엔티티를 설명하는 데 사용된다. 실제로 Cooperative Linux는 두 개의 다른 운영 체제 커널을 두 개의 큰 코루틴으로 변환한다. 각 커널은 자체적인 완전한 CPU 컨텍스트와 주소 공간을 가지며, 각 커널은 파트너에게 언제 제어권을 돌려줄지 결정한다.

그러나 두 커널이 이론적으로 실제 하드웨어에 대한 완전한 접근 권한을 가지고 있지만, 최신 PC 하드웨어는 두 개의 다른 운영 체제에 의해 동시에 제어되도록 설계되지 않았다. 따라서 호스트 커널은 실제 하드웨어 제어권을 유지하고 게스트 커널은 호스트와 통신하고 게스트 OS에 다양한 중요한 장치를 제공하는 특수 드라이버를 포함한다. 호스트는 Cooperative Linux 이식 가능한 드라이버가 CPL0 모드 (링 0)에서 실행되고 메모리를 할당할 수 있도록 기본 프리미티브를 내보내는 모든 OS 커널이 될 수 있다.

 역사 
댄 알로니는 사용자 모드 리눅스와의 유사한 작업을 기반으로 한 연구 프로젝트로 Cooperative Linux 개발을 시작했다. 그는 2004년 1월 25일에 개발을 발표했다. 2004년 7월에 그는 리눅스 심포지엄에서 논문을 발표했다. 소스는 GNU 일반 공중 사용 허가서로 출시되었다. 그 이후로 다른 개발자들이 소프트웨어에 다양한 패치와 추가 기능을 기여했다.

 비교 
Cooperative Linux는 일반적으로 게스트 OS를 호스트 커널보다 낮은 권한 모드로 실행하고, 모든 자원을 호스트 커널에 위임하는 완전한 X86 가상화와는 상당히 다르다. 이와 대조적으로 Cooperative Linux는 특별히 수정된 리눅스 커널을 실행하는데, 이 커널은 NT 커널과 자원을 공유하고 경쟁 상태를 유발하지 않는다는 점에서 협력적이다.

 배포 

섬네일|right|coLinux로 실행되는 우분투
섬네일|right|200px|coLinux로 실행되는 speedLinux

Cooperative Linux 패치의 대부분의 변경 사항은 i386 트리에 있다. 이는 이 글을 쓰는 시점에서 Cooperative가 지원하는 유일한 아키텍처이다. 다른 변경 사항은 주로 가상 드라이버의 추가이다: cobd(블록 장치), conet(네트워크), cocon(콘솔). i386 트리의 대부분 변경 사항은 초기화 및 설정 코드와 관련이 있다. Cooperative Linux 커널 설계의 목표는 독립형 i386 커널에 최대한 가깝게 유지하는 것이므로, 모든 변경 사항은 가능한 한 지역화되고 최소화된다.

coLinux 패키지는 리눅스 커널의 포트와 가상 네트워크 장치를 설치하며, 윈도우 2000 또는 윈도우 XP와 같은 윈도우 운영 체제 버전에서 동시에 실행될 수 있다. VM웨어와 같은 가상 머신을 사용하지 않는다.

데비안, 우분투, 페도라, 젠투는 coLinux 사용자들에게 특히 인기가 많다.

가상 하드웨어의 다소 특이한 구조 때문에 coLinux에서 리눅스 배포판을 설치하는 것은 일반적으로 어렵다. 따라서 대부분의 경우 사용자는 실제 파티션에 있는 기존 리눅스 설치를 사용하거나, 프로젝트에서 배포하는 미리 만들어진 파일 시스템 이미지를 사용한다. 파일 시스템 이미지는 일반 리눅스 시스템의 이미지를 찍거나, 이상한 하드웨어에서 설치 프로그램을 실행할 방법을 찾거나, 패키지 관리자를 사용하여 수동으로 설치를 구축하거나, 단순히 yum 및 apt와 같은 도구를 사용하여 기존 이미지를 업그레이드하는 등 다양한 방법으로 만들어진다. 최신 파일 시스템 이미지를 얻는 더 쉬운 방법은 QEMU를 사용하여 리눅스를 설치하고 coLinux 위키에 설명된 대로 처음 63개의 512바이트 블록을 제거하여 이미지를 "변환"하는 것이다.

coLinux는 기본 그래픽 하드웨어에 접근할 수 없으므로 X 윈도 또는 X 서버는 coLinux에서 직접 실행되지 않지만, 시그윈/X 또는 Xming과 같은 X 서버를 윈도우에 설치하여 KDE 또는 그놈과 거의 모든 다른 리눅스 응용 프로그램 및 배포판을 사용할 수 있다. 이 모든 문제는 우분투 기반의 andLinux 또는 슬랙웨어 기반의 TopologiLinux와 같은 coLinux 기반 배포판을 사용함으로써 해결된다.

 전용 배포판 
몇몇 배포판은 coLinux와 함께 작동하도록 특별히 제작되었다.

 AndLinux
 speedLinux
 TopologiLinux

 에뮬레이트된 하드웨어 
 TAP, Pcap, NDIS 및 Slirp를 통한 이더넷 네트워크.

 제약 사항 
 아직 64비트 윈도우 또는 리눅스를 지원하지 않으며(4GB 이상의 메모리도 활용하지 못함), 커뮤니티에서 포트가 개발 중이다.
 다중 프로세서(SMP)를 지원하지 않는다. 리눅스 응용 프로그램과 기본 커널은 하나의 CPU만 사용할 수 있다.

 같이 보기 

 Win32-loader
 플랫폼 가상화
 플랫폼 가상화 소프트웨어 비교
 시그윈
 MSYS
 Longene
 Chroot
 리눅스용 윈도우 하위 시스템

 각주 

 외부 링크 


 GitHub의 coLinux




분류:가상화 소프트웨어
분류:자유 가상화 소프트웨어
분류:윈도우 전용 자유 소프트웨어