Microsoft เปิดเผยว่าระบบย่อย Windows 10 Linux ทำงานอย่างไร

 Bash บน Ubuntu บน Windows เปิดใช้งานไบนารี Linux ELF64 ดั้งเดิมเพื่อทำงานบน Windows ผ่านระบบย่อย Windows สำหรับ Linux (WSL) แม้ว่าหลายคนจะตกใจกับการประกาศของ Bash บน Ubuntu แต่ก็ควรค่าแก่การกล่าวถึงว่ามันเป็นการเปิดประตูใหม่สำหรับความเข้ากันได้ระหว่างระบบปฏิบัติการต่างๆ Microsoft ก้าวไปอีกขั้นและเผยให้เห็นว่า WSL ทำงานอย่างไร เพื่อให้เราเข้าใจได้ดีขึ้นว่าทั้งสองระบบสื่อสารกันอย่างไร

WSL ถูกสร้างขึ้นโดยทีม Microsoft Windows Kernel และมีทั้งโหมดผู้ใช้และส่วนประกอบโหมดเคอร์เนล โดยเฉพาะอย่างยิ่ง ระบบประกอบด้วย:

  • บริการตัวจัดการเซสชันโหมดผู้ใช้ที่จัดการวงจรชีวิตของอินสแตนซ์ Linux
  • ไดรเวอร์ผู้ให้บริการ Pico (lxss.sys, lxcore.sys) ซึ่งมีบทบาทในการเลียนแบบเคอร์เนล Linux โดยการแปล Linux syscalls
  • Pico ดำเนินการโฮสต์โหมดผู้ใช้ที่ไม่ได้แก้ไข Linux (เช่น /bin/bash)

การเชื่อมต่อระหว่างองค์ประกอบทั้งสามมีคำอธิบายดังนี้:

เป็นช่องว่างระหว่างไบนารีของโหมดผู้ใช้ Linux และคอมโพเนนต์เคอร์เนลของ Windows ที่เกิดเวทมนตร์ ด้วยการวางไบนารี Linux ที่ไม่ได้แก้ไขในกระบวนการ Pico เราเปิดใช้งานการเรียกระบบ Linux ที่จะนำไปยังเคอร์เนลของ Windows ไดรเวอร์ lxss.sys และ lxcore.sys แปลการเรียกระบบ Linux เป็น NT API และจำลองเคอร์เนล Linux

ความท้าทายหลักในกระบวนการนี้คือการทำให้ทั้งสองระบบทำงานร่วมกัน:

WSL รันไบนารี Linux ELF64 ที่ไม่ได้แก้ไขโดยการจำลองเสมือนอินเทอร์เฟซเคอร์เนล Linux ที่ด้านบนของเคอร์เนล Windows NT หนึ่งในเคอร์เนลอินเตอร์เฟสที่เปิดเผยคือการเรียกระบบ (syscalls) syscall เป็นบริการที่จัดเตรียมโดยเคอร์เนลที่สามารถเรียกได้จากโหมดผู้ใช้ ทั้งเคอร์เนล Linux และเคอร์เนล Windows NT เปิดเผย syscall หลายร้อยรายการต่อโหมดผู้ใช้ แต่มีความหมายต่างกันและโดยทั่วไปจะไม่เข้ากันได้โดยตรง ตัวอย่างเช่น เคอร์เนล Linux ประกอบด้วยสิ่งต่าง ๆ เช่น fork, open และ kill ในขณะที่เคอร์เนล Windows NT มี NtCreateProcess, NtOpenFile และ NtTerminateProcess ที่เปรียบเทียบได้

ระบบย่อย Windows สำหรับ Linux ประกอบด้วยไดรเวอร์โหมดเคอร์เนล (lxss.sys และ lxcore.sys) ที่รับผิดชอบในการจัดการคำขอเรียกระบบ Linux โดยประสานงานกับเคอร์เนล Windows NT ไดรเวอร์ไม่มีโค้ดจากเคอร์เนล Linux แต่เป็นการใช้งานคลีนรูมของอินเทอร์เฟซเคอร์เนลที่เข้ากันได้กับ Linux บน Linux ดั้งเดิม เมื่อสร้าง syscall จากโหมดผู้ใช้ที่ปฏิบัติการได้ เคอร์เนล Linux จะจัดการ บน WSL เมื่อสร้าง syscall จากไฟล์เรียกทำงานเดียวกัน เคอร์เนล Windows NT จะส่งต่อคำขอไปยัง lxcore.sys หากเป็นไปได้ lxcore.sys จะแปล syscall ของ Linux เป็นการเรียก Windows NT ที่เทียบเท่ากัน ซึ่งในทางกลับกันก็ทำให้งานหนักขึ้น

เมื่อพิจารณาถึงความสนใจของ Microsoft ในแพลตฟอร์มโอเพ่นซอร์ส หลายคนสงสัยว่า ยักษ์ใหญ่ด้านเทคโนโลยีควรซื้อบริษัทที่เน้น Linux เป็นหลัก เช่น Canonicalบริษัทที่อยู่เบื้องหลังระบบปฏิบัติการอูบุนตู แม้ว่า Microsoft และ Canonical จะร่วมมือกันในซอฟต์แวร์โอเพนซอร์ซ แต่ก็ไม่ได้แสดงความคิดเห็นใดๆ เกี่ยวกับความเป็นไปได้นี้

หากคุณสนใจว่าการโต้ตอบของ Linux – Windows พัฒนาขึ้นอย่างไร ไปที่บล็อกของ Microsoft. ทีมงานสัญญาว่าจะมีการโพสต์บล็อกในหัวข้อนี้มากขึ้น

เรื่องราวที่เกี่ยวข้องที่คุณต้องตรวจสอบ:

  • ผู้ใช้ Linux รายงานปัญหา "หูฟังหยุดทำงานใน Windows 8.1"
  • Microsoft และ Canonical นำ Bash มาสู่ Windows 10 ที่ Build 2016
  • มิวนิคเริ่มแจกจ่ายซีดี Ubuntu ฟรีให้กับผู้ใช้ Windows XP
คุณสามารถค้นหา Linux Oracle ได้จาก Microsoft Store

คุณสามารถค้นหา Linux Oracle ได้จาก Microsoft Storeลินุกซ์Oracleระบบย่อย Windows Linux

คุณสนใจที่จะดาวน์โหลดเวอร์ชันล่าสุดของ Oracle Linux หรือไม่?ไม่ต้องมองหาที่อื่นนอกจาก Microsoft Store เพราะคุณจะพบมันแอพจะดาวน์โหลดและติดตั้ง Oracle Linux 8 Update 5 สำหรับ WSLเมื่อติดตั้งแล้ว คุณส...

อ่านเพิ่มเติม
วิธีเมานต์ อ่าน หรือฟอร์แมต EXT4 บน Windows 11

วิธีเมานต์ อ่าน หรือฟอร์แมต EXT4 บน Windows 11ลินุกซ์ระบบย่อย Windows Linux

ขั้นแรก ตรวจสอบให้แน่ใจว่าได้ติดตั้งและอัพเดต WSL2 แล้วWSL2 ช่วยให้คุณสามารถเมานต์และอ่าน EXT4 บน Windows 11 ได้โดยใช้บรรทัดคำสั่งเพียงไม่กี่บรรทัดใน PowerShellก่อนที่จะเริ่มสิ่งใดๆ ตรวจสอบให้แน่ใจ...

อ่านเพิ่มเติม
วิธีเมานต์ อ่าน หรือฟอร์แมต EXT4 บน Windows 11

วิธีเมานต์ อ่าน หรือฟอร์แมต EXT4 บน Windows 11ลินุกซ์ระบบย่อย Windows Linux

ขั้นแรก ตรวจสอบให้แน่ใจว่าได้ติดตั้งและอัพเดต WSL2 แล้วWSL2 ช่วยให้คุณสามารถเมานต์และอ่าน EXT4 บน Windows 11 ได้โดยใช้บรรทัดคำสั่งเพียงไม่กี่บรรทัดใน PowerShellก่อนที่จะเริ่มสิ่งใดๆ ตรวจสอบให้แน่ใจ...

อ่านเพิ่มเติม