Введение

Программное обеспечение для запуска Windows и Linux.

Cooperative Linux использует концепцию кооперативной виртуальной машины (CVM). В отличие от традиционных виртуальных машин, CVM использует ресурсы, которые уже имеются в основной операционной системе. В традиционных хост-системах виртуальных машин ресурсы виртуализируются для каждой гостевой ОС. CVM предоставляет обеим операционным системам полный контроль над аппаратным обеспечением, в то время как традиционная виртуальная машина помещает каждую гостевую ОС в непривилегированное состояние для доступа к реальному оборудованию.

Обзор

Термин "кооператив" используется для описания двух сущностей, работающих параллельно. По сути, Cooperative Linux превращает два различных ядра операционных систем в две большие сопрограммы. Каждое ядро имеет свой собственный полный контекст процессора и адресное пространство, и каждое ядро само решает, когда передать управление своему партнеру. Однако, хотя оба ядра теоретически имеют полный доступ к реальному оборудованию, современное ПК-оборудование не рассчитано на одновременное управление двумя разными операционными системами. Поэтому управление реальным оборудованием остаётся за хост-ядром, а гостевое ядро содержит специальные драйверы, которые взаимодействуют с хостом и предоставляют различные важные устройства гостевой ОС. Хостом может быть любое ядро ОС, которое экспортирует базовые примитивы, позволяющие переносимому драйверу Cooperative Linux работать в режиме CPL0 (кольцо 0) и выделять память.

История

Дэн Алони изначально начал разработку Cooperative Linux как исследовательский проект, основанный на аналогичных работах с User Mode Linux. Он объявил о начале разработки 25 января 2004 года. В июле 2004 года он представил доклад на конференции Linux Symposium. Исходный код был выпущен под лицензией GNU General Public License. С тех пор другие разработчики внесли в программное обеспечение различные исправления и дополнения.

Сравнения

Кооперативный Linux значительно отличается от полной виртуализации x86, которая обычно работает, запуская гостевую ОС в режиме с меньшими привилегиями, чем у ядра хост-системы, при этом все ресурсы предоставляются ядром хост-системы. В отличие от этого, Cooperative Linux запускает специально модифицированное ядро Linux, которое является кооперативным в том смысле, что берёт на себя ответственность за совместное использование ресурсов с ядром NT и предотвращение возникновения гонок данных.

Распространение

Большинство изменений в патче Cooperative Linux сосредоточено в дереве i386 — единственной поддерживаемой архитектуре для Cooperative на момент написания. Остальные изменения в основном представляют собой добавление виртуальных драйверов: cobd (блочное устройство), conet (сеть) и cocon (консоль). Большинство изменений в дереве i386 касаются кода инициализации и настройки. Дизайн ядра Cooperative Linux ставит целью максимальное приближение к автономному ядру i386, поэтому все изменения локализуются и минимизируются насколько это возможно. Пакет coLinux устанавливает порт ядра Linux и виртуальное сетевое устройство и может работать одновременно с версией операционной системы Windows, такой как Windows 2000 или Windows XP. Он не использует виртуальную машину, например VMware. Debian, Ubuntu, Fedora и Gentoo особенно популярны среди пользователей coLinux. Из-за довольно необычной структуры виртуального оборудования установка дистрибутивов Linux под coLinux обычно сложна. Поэтому пользователи в большинстве случаев используют либо существующую установку Linux на реальном разделе, либо готовый образ файловой системы, распространяемый проектом. Образы файловой системы создаются различными способами, включая создание образов обычной системы Linux, поиск способов запуска установщиков с этим необычным оборудованием, ручную установку с помощью менеджера пакетов или просто обновление существующих образов с помощью таких инструментов, как yum и apt. Более простой способ получить актуальный образ файловой системы — использовать QEMU для установки Linux и «конвертировать» образ, удалив первые 63 блока по 512 байт, как описано в вики coLinux. Поскольку coLinux не имеет доступа к нативному графическому оборудованию, X Window или X-серверы не будут работать под coLinux напрямую, но можно установить X-сервер под Windows, например Cygwin/X или Xming, и использовать KDE или GNOME и практически любое другое приложение и дистрибутив Linux. Все эти проблемы решаются использованием дистрибутивов на основе coLinux, таких как andLinux, основанный на Ubuntu, или TopologiLinux, основанный на Slackware.

Эмулированная аппаратная часть

Сеть Ethernet через TAP, PCAP, NDIS и SLiRP.

Ограничения

Пока не поддерживает 64-разрядные Windows или Linux (и не использует более 4 ГБ памяти), но сообществом разрабатывается соответствующий порт. Поддержка многопроцессорных систем (SMP) отсутствует. Приложения Linux и ядро системы могут использовать только один процессор.