لینوکس مشارکتی

لینوکس مشارکتی که به اختصار coLinux نامیده می‌شود، نرم‌افزاری است که به مایکروسافت ویندوز و هسته لینوکس اجازه می‌دهد تا به صورت موازی، روی یک دستگاه، هم‌زمان اجرا شوند.

لینوکس مشارکتی از مفهوم یک ماشین مجازی مشارکتی (CVM) استفاده می‌کند. در تضاد با ماشین‌های مجازی سنتی، CVM منابعی را که از قبل در سیستم عامل میزبان وجود دارد را به اشتراک می‌گذارد. در میزبان‌های VM سنتی، منابع برای هر سیستم عامل (میهمان) مجازی سازی می‌شوند. CVM به هر دو سیستم عامل، امکان کنترل کامل ماشین میزبان را می‌دهد در حالی که VM سنتی، سیستم عامل میهمان را در وضعیتی غیرممتاز، برای دسترسی به ماشین واقعی تنظیم می‌کند.

بررسی اجمالی 
اصطلاح «مشارکتی» برای توصیف دو نهاد که به شکل موازی کار می‌کنند، استفاده می‌شود. در واقع لینوکس مشارکتی، هسته دو سیستم عامل مختلف را به دو کوروتین بزرگ تبدیل می‌کند. هر هسته به‌طور کامل، زمینه و فضای آدرس CPU خود را دارد و خود تصمیم می‌گیرد که چه زمانی کنترل را به شریک خود بازگرداند.

با این حال، در حالی که هر دو هسته از نظر تئوری دسترسی کامل به سخت‌افزار واقعی را دارند، سخت‌افزار رایانه‌های شخصی مدرن برای کنترل همزمان توسط دو سیستم عامل مختلف طراحی نشده‌است؛ بنابراین، هسته میزبان در کنترل سخت‌افزار واقعی است و هسته میهمان شامل درایورهای خاصی است که با میزبان ارتباط برقرار می‌کند و دستگاه‌های مهم مختلفی را در اختیار سیستم عامل میهمان قرار می‌دهد. میزبان می‌تواند هسته هر سیستم‌عاملی باشد که ابتدایی‌های اولیه را صادر می‌کند که به درایور قابل حمل لینوکس مشارکتی اجازه می‌دهد در حالت CPL0 اجرا شود (حلقه ۰) و حافظه را تخصیص دهد.

تاریخ 
دان آلونی در ابتدا، توسعه لینوکس مشارکتی را به عنوان یک پروژه تحقیقاتی بر اساس کار مشابهی با لینوکس حالت کاربر آغاز کرد. او توسعه را در ۲۵ ژانویه ۲۰۰۴ اعلام کرد. در ژوئیه ۲۰۰۴ مقاله ای را در همایش لینوکس ارائه کرد. منبع تحت مجوز عمومی عمومی گنو منتشر شد. سایر توسعه دهندگان از آن زمان به بعد وصله‌ها و اضافات مختلفی را به نرم‌افزار ارائه کرده‌اند.

مقایسه‌ها 
لینوکس مشارکتی تفاوت قابل توجهی با مجازی سازی کامل x86 دارد که به‌طور کلی با اجرای سیستم عامل میهمان در یک حالتی با امتیاز کمتر نسبت به هسته میزبان، و با داشتن تمام منابع تفویض شده توسط هسته میزبان، کار می‌کند. در مقابل، لینوکس مشارکتی یک هسته لینوکس اصلاح شده را اجرا می‌کند که از این نظر مشارکت می‌کند که مسئولیت اشتراک‌گذاری منابع با هسته NT را بر عهده می‌گیرد و شرایط مسابقه را تحریک نمی‌کند.

توزیع 
بیشتر تغییرات در پچ لینوکس مشارکتی روی درخت i386 است - تنها معماری پشتیبانی شده برای مشارکت در زمان نگارش این مقاله. تغییرات دیگر بیشتر، اضافه شدن درایورهای مجازی است: cobd (دستگاه بلوک)، conet (شبکه) و cocon (کنسول). اکثر تغییرات در درخت i386 شامل کد اولیه و کد راه اندازی است. هدف از طراحی هسته لینوکس مشارکتی این است که تا حد امکان به هسته مستقل i386 نزدیک شود، بنابراین همه تغییرات، بومی سازی شده و تا حد امکان به حداقل می‌رسد.

بسته coLinux یک پورت از هسته لینوکس و یک دستگاه شبکه مجازی را نصب می‌کند و می‌تواند به‌طور همزمان تحت نسخه ای از سیستم عامل ویندوز مانند Windows 2000 یا Windows XP اجرا شود. از ماشین مجازی ای مانند VMware استفاده نمی‌کند.

دبیان، اوبونتو، فدورا و جنتو به شکل ویژه در میان کاربران coLinux محبوب هستند.

به دلیل ساختار نسبتاً غیرعادی سخت‌افزار مجازی، نصب توزیع‌های لینوکس تحت coLinux به‌طور کلی دشوار است؛ بنابراین، کاربران در بیشتر موارد، از نصب لینوکس موجود بر روی یک پارتیشن واقعی، یا یک تصویر سیستم فایل آماده توزیع شده توسط پروژه استفاده می‌کنند. تصاویر سیستم فایل با روش‌های مختلفی ساخته می‌شوند، از جمله، گرفتن تصاویر از یک سیستم لینوکس معمولی، یافتن راه‌هایی برای اجرای نصب‌کننده‌ها با سخت‌افزار عجیب، ساختن نصب‌ها به دست خود با استفاده از مدیر بسته یا به‌سادگی ارتقاء تصاویر موجود با استفاده از ابزارهایی مانند yum و apt. یک راه آسان‌تر برای دریافت یک تصویر سیستم فایل به‌روز، استفاده از QEMU برای نصب لینوکس و «تبدیل» تصویر با حذف ۶۳ بلوک ۵۱۲ بایتی اول، همان‌طور که در ویکی coLinux توضیح داده شده‌است.

از آنجایی که coLinux به سخت‌افزار گرافیکی بومی دسترسی ندارد، X Window یا X سرورها مستقیماً تحت coLinux اجرا نمی‌شوند، اما می‌توان یک سرور X، تحت ویندوز، مانند Cygwin/X یا Xming را با استفاده از KDE یا GNOME یا با تقریباً هر برنامه و توزیع لینوکس دیگری، نصب کرد. همه این مشکلات را می‌توان با استفاده از توزیع‌های مبتنی بر coLinux مانند andLinux، مبتنی بر اوبونتو، یا TopologiLinux، بر اساس Slackware، رفع کرد.

سخت‌افزار شبیه‌سازی شده 
 شبکه اترنت از طریق TUN/TAP, PCAP, NDIS و SLiRP.

محدودیت‌ها 
 هنوز از ویندوز ۶۴ بیتی یا لینوکس پشتیبانی نمی‌کند (و از حافظه بیش از ۴ گیگابایت استفاده نمی‌کند)، اما یک پورت توسط انجمن در حال توسعه است.
 بدون پشتیبانی از چند پردازنده (SMP). برنامه‌های لینوکس و هسته اصلی قادر به استفاده از فقط یک CPU هستند.

جستارهای وابسته 
 Win32-loader
 مجازی سازی پلتفرم
 مقایسه نرم‌افزار مجازی سازی پلت فرم
 سیگوین
 MinGW
 Wubi (نصب کننده)
 لانگن
 Chroot
 زیر سیستم ویندوز برای لینوکس

منابع 

نرم‌افزارهای مرتبط با مجازی‌سازی لینوکس