
A Bash az Ubuntun a Windows rendszeren lehetővé teszi a natív Linux ELF64 bináris fájlok futtatását Windows rendszeren a Windows alrendszer Linux alatt (WSL) keresztül. Bár sok embert sokkolt a Bash on Ubuntu bejelentése, érdemes megemlíteni, hogy új ajtókat nyit meg a különböző operációs rendszerek közötti kompatibilitás előtt. A Microsoft még egy lépést tesz előre és feltárja a WSL működését, hogy jobban megértsük, hogyan kommunikál a két rendszer egymással.
A WSL-t a Microsoft Windows Kernel csapata hozta létre, és mind a felhasználói, mind a kernel mód összetevőit tartalmazza. Pontosabban, a rendszer a következőkből áll:
- felhasználói módú munkamenet-kezelő szolgáltatás, amely kezeli a Linux példány életciklusát
- Pico szolgáltató illesztőprogramok (lxss.sys, lxcore.sys), akiknek szerepük a Linux kernel utánzása a Linux rendszerhívások fordításával
- A Pico a nem módosított Linux módú (például / bin / bash) tárhelyet dolgozza fel.
A három alkatrész közötti kapcsolatot a következőképpen írják le:
Ez a varázslat a felhasználói módú Linux bináris fájlok és a Windows rendszermag-összetevők közötti térben történik. Azáltal, hogy nem módosított Linux binárisokat helyezünk el a Pico folyamatokban, lehetővé tesszük a Linux rendszerhívások átirányítását a Windows kerneljébe. Az lxss.sys és az lxcore.sys illesztőprogramok lefordítják a Linux rendszer hívásait NT API-kká, és utánozzák a Linux kernelt.
A folyamat fő kihívása a két rendszer együttes működtetése:
A WSL végrehajtja a módosítatlan Linux ELF64 bináris fájlokat egy Linux kernel felület virtualizálásával a Windows NT kernel tetején. Az egyik kernelfelület, amelyet kitesz, a rendszerhívások (syscalls). A syscall a kernel által nyújtott szolgáltatás, amelyet felhasználói módból lehet meghívni. Mind a Linux, mind a Windows NT kernel több száz rendszerhívást tesz ki felhasználói módnak, de ezek szemantikája eltérő, és általában nem közvetlenül kompatibilisek. Például a Linux kernel tartalmaz olyan dolgokat, mint fork, open és kill, míg a Windows NT kernel rendelkezik az összehasonlítható NtCreateProcess, NtOpenFile és NtTerminateProcess.
A Windows alrendszer Linux rendszerhez tartalmaz kernel módú illesztőprogramokat (lxss.sys és lxcore.sys), amelyek felelősek a Linux rendszer híváskéréseinek a Windows NT kernellel összehangolt kezeléséért. Az illesztőprogramok nem tartalmazzák a Linux kernel kódját, ehelyett a Linux kompatibilis kernel interfészek tiszta szobájának megvalósítását jelentik. A natív Linux rendszeren, amikor a syscall egy felhasználói módú futtatható fájlból készül, a Linux kernel kezeli. WSL-en, amikor egy syscall készül ugyanarról a futtatható fájlról, a Windows NT kernel továbbítja a kérést az lxcore.sys címre. Ahol lehetséges, az lxcore.sys lefordítja a Linux rendszerhívást az ezzel egyenértékű Windows NT hívássá, ami viszont nagy nehézségekkel jár.
Figyelembe véve a Microsoft érdeklődését a nyílt forráskódú platformok iránt, sokan elgondolkodtak azon, hogy vajon a technológiai óriásnak olyan nagy Linux-központú vállalatokat kell megszereznie, mint a Canonical, az Ubuntu operációs rendszer mögött álló vállalat. Bár a Microsoft és a Canonical együttműködött a nyílt forráskódú szoftverek terén, egyikük sem adott észrevételt erről a lehetőségről.
Ha érdekel, hogyan alakul a Linux - Windows interakció, keresse fel a Microsoft blogját. A csapat megígérte, hogy további blogbejegyzések fognak következni ebben a témában.
KAPCSOLÓDÓ TÖRTÉNETEK, AMELYEKET ELLENŐRZNI KELL:
- A Linux-felhasználók „A fejhallgató leállt a Windows 8.1 alatt” problémákról számoltak be
- A Microsoft és a Canonical beviszi a Bash-t a Windows 10-be a Build 2016-ban
- München megkezdi az ingyenes Ubuntu CD-k terjesztését a Windows XP felhasználók számára