# Cooperative Linux
coLinux olarak kısaltılan Cooperative Linux, Microsoft Windows ve Linux çekirdeğinin aynı makinede aynı anda paralel çalışmasına olanak sağlayan bir yazılımdır.
Cooperative Linux, Cooperative Virtual Machine (CVM) kavramını kullanır. Geleneksel sanal makinelerin aksine, CVM, ana bilgisayar işletim sisteminde zaten var olan kaynakları paylaşır. Geleneksel VM ana bilgisayarlarında, kaynaklar her (konuk) işletim sistemi için sanallaştırılır. CVM, her iki işletim sistemine de ana makine üzerinde tam kontrol sağlarken, geleneksel VM, her konuk işletim sistemini gerçek makineye erişmek için ayrıcalıksız bir duruma ayarlar.


## Genel bakış.
"Kooperatif" terimi, paralel olarak çalışan iki kuruluşu tanımlamak için kullanılır. Aslında Cooperative Linux, iki farklı işletim sistemi çekirdeğini iki büyük koroutine dönüştürür. Her çekirdeğin kendi eksiksiz CPU bağlamı ve adres alanı vardır ve her çekirdek, kontrolü ne zaman ortağına geri vereceğine karar verir.
Bununla birlikte, her iki çekirdek teorik olarak gerçek donanıma tam erişime sahipken, modern PC donanımı aynı anda iki farklı işletim sistemi tarafından kontrol edilecek şekilde tasarlanmamıştır. Bu nedenle, ana bilgisayar çekirdeği gerçek donanımın kontrolünde bırakılır ve konuk çekirdeği, ana bilgisayarla iletişim kuran ve konuk işletim sistemine çeşitli önemli aygıtlar sağlayan özel sürücüler içerir. Ana bilgisayar, Cooperative Linux taşınabilir sürücüsünün CPL0 modunda (ring 0) çalışmasına ve bellek ayırmasına izin veren temel temel öğeleri dışa aktaran herhangi bir işletim sistemi çekirdeği olabilir.


## Tarih.
Dan Aloni, Kooperatif Linux'un geliştirilmesine, User-mod Linux ile benzer çalışmalara dayanan bir araştırma projesi olarak başladı. Gelişmeyi 25 Ocak 2004'te duyurdu. Temmuz 2004'te Linux Sempozyumu'nda bir bildiri sundu. Kaynak, GNU Genel Kamu Lisansı altında yayımlandı. Diğer geliştiriciler o zamandan beri yazılıma çeşitli yamalar ve eklemeler yaptı.


## Karşılaştırma.
Cooperative Linux, genellikle konuk işletim sistemini ana bilgisayar çekirdeğinden daha az ayrıcalıklı bir modda çalıştırarak ve tüm kaynakların ana bilgisayar çekirdeği tarafından delege edilmesini sağlayarak çalışan tam x86 sanallaştırmadan önemli ölçüde farklıdır. Buna karşılık, Cooperative Linux, kaynakları NT çekirdeğiyle paylaşma sorumluluğunu üstlendiği ve yarış koşullarını başlatmadığı için "Cooperative" olan özel olarak değiştirilmiş bir Linux çekirdeği çalıştırır.


## Dağıtım.
Cooperative Linux yamasındaki değişikliklerin çoğu, bu yazının yazıldığı sırada Cooperative için desteklenen tek mimari olan i386 ağacındadır. Diğer değişiklikler çoğunlukla sanal sürücülerin eklenmesidir: cobd (blok cihazı), conet (ağ) ve cocon (konsol). i386 ağacındaki değişikliklerin çoğu, başlatma ve kurulum kodunu içerir. Kooperatif Linux çekirdeği tasarımının bir amacı, bağımsız i386 çekirdeğine mümkün olduğunca yakın kalmaktır, böylece tüm değişiklikler mümkün olduğunca yerelleştirilir ve en aza indirilir.
coLinux paketi, Linux çekirdeğinin bir bağlantı noktasını ve bir sanal ağ aygıtı kurar ve Windows 2000 veya Windows XP gibi Windows işletim sisteminin bir sürümü altında aynı anda çalışabilir. VMware gibi bir sanal makine kullanmaz.
Debian, Ubuntu, Fedora ve Gentoo özellikle coLinux kullanıcıları arasında popülerdir.
Sanal donanımın oldukça sıra dışı yapısından dolayı, Linux dağıtımlarını coLinux altında kurmak genellikle zordur. Bu nedenle, kullanıcılar çoğu durumda ya gerçek bir bölümdeki mevcut bir Linux kurulumunu ya da proje tarafından dağıtılan hazır bir dosya sistemi görüntüsünü kullanır. Dosya sistemi görüntüleri, normal bir Linux sisteminin görüntülerini almak, kurulumcuları garip donanımla çalıştırmanın yollarını bulmak, paket yöneticisini kullanarak kurulumları elle oluşturmak veya sadece yum ve apt gibi araçları kullanarak mevcut görüntüleri yükseltmek gibi çeşitli yöntemlerle yapılır. Güncel bir dosya sistemi görüntüsü elde etmenin daha kolay bir yolu, Linux'u kurmak için QEMU'yu kullanmak ve coLinux wiki'de açıklandığı gibi ilk 63 512 baytlık bloğu çıkararak görüntüyü "dönüştürmektir".
coLinux'un yerel grafik donanımına erişimi olmadığından, X Penceresi veya X Sunucuları doğrudan coLinux altında çalışmayacaktır, ancak biri yükleyebilir. Windows altında Cygwin/X veya Xming gibi bir X Sunucusu ve KDE veya GNOME ve hemen hemen tüm diğer Linux uygulamalarını ve dağıtımlarını kullanın. Bu sorunların tümü, Ubuntu tabanlı andLinux veya Slackware tabanlı TopologiLinux gibi coLinux tabanlı dağıtımlar kullanılarak giderilir.


## Emüle edilmiş donanım.
  - TAP, PCAP, NDIS ve SLiRP üzerinden Ethernet ağı.


## Sınırlamalar.
  - Henüz 64 bit Windows veya Linux'u desteklememektedir (veya 4 GB'den fazla bellek kullanmamaktadır), ancak topluluk tarafından bir bağlantı noktası geliştirme aşamasındadır. Bir sponsor limanı tamamlamaya istekliydi, ancak iş iptal edildi.
  - Çoklu işlemci (SMP) desteği yok. Linux uygulamaları ve temel alınan çekirdek yalnızca bir CPU kullanabilir.