ال Bash على Ubuntu على Windows يتيح تشغيل ثنائيات Linux ELF64 الأصلية على Windows عبر نظام Windows الفرعي لنظام Linux (WSL). على الرغم من أن الكثير من الناس صدموا من إعلان Bash على Ubuntu ، إلا أنه من الجدير بالذكر أنه يفتح أبواباً جديدة للتوافق بين أنظمة التشغيل المختلفة. تتخذ Microsoft خطوة أخرى إلى الأمام وتكشف عن كيفية عمل WSL الخاص بها حتى نتمكن من فهم كيفية تواصل النظامين مع بعضهما البعض بشكل أفضل.
تم إنشاء WSL بواسطة فريق Microsoft Windows Kernel ويحتوي على مكونات وضع المستخدم ووضع kernel. وبشكل أكثر تحديدًا ، يتكون النظام من:
- خدمة مدير جلسة وضع المستخدم تتعامل مع دورة حياة مثيل Linux
- برامج تشغيل موفر Pico (lxss.sys ، lxcore.sys) التي يتمثل دورها في محاكاة نواة Linux من خلال ترجمة Linux syscalls
- عمليات Pico تستضيف وضع المستخدم غير المعدل Linux (على سبيل المثال / bin / bash).
يتم وصف العلاقة بين المكونات الثلاثة على النحو التالي:
إنها المسافة بين ثنائيات Linux الخاصة بوضع المستخدم ومكونات Windows kernel حيث يحدث السحر. من خلال وضع ثنائيات Linux غير المعدلة في عمليات Pico ، نقوم بتمكين مكالمات نظام Linux ليتم توجيهها إلى Windows kernel. تقوم برامج التشغيل lxss.sys و lxcore.sys بترجمة استدعاءات نظام Linux إلى واجهات برمجة تطبيقات NT ومحاكاة Linux kernel.
يتمثل التحدي الرئيسي في العملية في جعل النظامين يعملان معًا:
ينفذ WSL ثنائيات Linux ELF64 غير المعدلة عن طريق محاكاة واجهة Linux kernel أعلى نواة Windows NT. واحدة من واجهات kernel التي تعرضها هي استدعاءات النظام (syscalls). syscall هي خدمة مقدمة من kernel يمكن استدعاؤها من وضع المستخدم. يعرض كل من Linux kernel و Windows NT kernel عدة مئات من syscalls إلى وضع المستخدم ، لكن لهما دلالات مختلفة وغير متوافقين بشكل عام. على سبيل المثال ، تتضمن Linux kernel أشياء مثل fork و open و kill بينما تحتوي Windows NT kernel على NtCreateProcess و NtOpenFile و NtTerminateProcess.
يتضمن نظام Windows الفرعي لنظام Linux برامج تشغيل وضع kernel (lxss.sys و lxcore.sys) المسؤولة عن معالجة طلبات استدعاء نظام Linux بالتنسيق مع Windows NT kernel. لا تحتوي برامج التشغيل على تعليمات برمجية من نواة Linux ولكنها بدلاً من ذلك تطبيق غرفة نظيفة لواجهات kernel المتوافقة مع Linux. في نظام Linux الأصلي ، عندما يتم إجراء مكالمة syscall من وضع مستخدم قابل للتنفيذ ، يتم التعامل معه بواسطة Linux kernel. على WSL ، عندما يتم إجراء مكالمة syscall من نفس الملف القابل للتنفيذ ، يقوم Windows NT kernel بإعادة توجيه الطلب إلى lxcore.sys. حيثما أمكن ، يترجم lxcore.sys syscall Linux إلى استدعاء Windows NT المكافئ والذي يقوم بدوره بالرفع الثقيل.
مع الأخذ في الاعتبار اهتمام Microsoft بالمنصات مفتوحة المصدر ، تساءل الكثير من الناس عما إذا كان يجب أن تستحوذ شركة التكنولوجيا العملاقة على الشركات الكبرى التي تركز على Linux مثل Canonical، الشركة التي تقف وراء نظام التشغيل Ubuntu. على الرغم من تعاون Microsoft و Canonical في البرامج مفتوحة المصدر ، إلا أنهما لم يصدرا أي تعليقات على هذا الاحتمال.
إذا كنت مهتمًا بكيفية تطور تفاعل Linux - Windows ، انتقل إلى مدونة Microsoft. وعد الفريق بأن المزيد من منشورات المدونة حول هذا الموضوع ستتبع.
القصص ذات الصلة التي تحتاج إلى التحقق منها:
- أبلغ مستخدمو Linux عن مشكلات "سماعات الرأس توقفت عن العمل في نظام التشغيل Windows 8.1"
- قامت Microsoft و Canonical بإحضار Bash إلى Windows 10 في Build 2016
- بدأت ميونيخ في توزيع أقراص Ubuntu المضغوطة المجانية على مستخدمي Windows XP