The Bash Windowsi Ubuntus võimaldab kohalikel Linuxi ELF64 binaarfailidel Windowsis Windowsi alamsüsteemi (WSL) kaudu töötada. Kuigi paljud inimesed olid Bash on Ubuntu teatest šokeeritud, tasub mainida, et see avab erinevad uksed erinevate operatsioonisüsteemide ühilduvuseks. Microsoft astub veel ühe sammu edasi ja paljastab, kuidas töötab tema WSL, et saaksime paremini mõista, kuidas kaks süsteemi omavahel suhtlevad.
WSL-i lõi Microsofti Windowsi tuuma meeskond ja see sisaldab nii kasutajarežiimi kui ka tuumarežiimi komponente. Täpsemalt koosneb süsteem järgmistest osadest:
- kasutajarežiimi seansihalduri teenus, mis haldab Linuxi eksemplari elutsüklit
- Pico pakkuja draiverid (lxss.sys, lxcore.sys), kelle ülesanne on jäljendada Linuxi tuuma, tõlkides Linuxi süsteemikõnesid
- Pico töötleb modifitseerimata kasutajarežiimi Linuxi (nt / bin / bash) hostimist.
Kolme komponendi vahelist seost kirjeldatakse järgmiselt:
Maagia leiab aset kasutajarežiimi Linuxi binaarkaarte ja Windowsi tuuma komponentide vahel. Paigutades modifitseerimata Linuxi binaarkaardid Pico protsessidesse, võimaldame Linuxi süsteemikõned suunata Windowsi tuuma. Draiverid lxss.sys ja lxcore.sys tõlgivad Linuxi süsteemi kõned NT API-deks ja jäljendavad Linuxi kernelit.
Protsessi peamine väljakutse on panna kaks süsteemi koos töötama:
WSL käivitab modifitseerimata Linuxi ELF64 kahendfailid, virtualiseerides Linuxi kerneli liidese Windows NT kerneli peal. Üks tuuma liidestest, mille ta paljastab, on süsteemikõned (syscalls). Syscall on tuuma pakutav teenus, millele saab helistada kasutajarežiimist. Nii Linuxi kui ka Windows NT kernel paljastab kasutajarežiimile mitusada süsteemikõnesid, kuid neil on erinev semantika ja need ei ole üldiselt otseselt ühilduvad. Näiteks sisaldab Linuxi kernel selliseid asju nagu fork, open ja kill, samas kui Windows NT kernelil on võrreldavad NtCreateProcess, NtOpenFile ja NtTerminateProcess.
Windowsi alamsüsteem Linuxile sisaldab tuumarežiimi draivereid (lxss.sys ja lxcore.sys), mis vastutavad Linuxi süsteemi kõnetaotluste kooskõlastamise eest Windows NT kerneliga. Draiverid ei sisalda Linuxi tuuma koodi, vaid on selle asemel Linux-ühilduvate kerneli liideste puhta ruumi rakendused. Native Linuxis, kui syscall tehakse kasutajarežiimi käivitatavast failist, haldab seda Linuxi kernel. Kui samast käivitatavast failist tehakse syscall, edastab Windows NT kernel WSL-is päringu lxcore.sys. Võimaluse korral tõlgib lxcore.sys Linuxi syscalli samaväärseks Windows NT kõneks, mis omakorda teeb tugeva tõste.
Võttes arvesse Microsofti huvi avatud lähtekoodiga platvormide vastu, mõtlesid paljud, kas tehnikahiiglane peaks omandama suured Linuxile keskendunud ettevõtted nagu Canonical, ettevõte Ubuntu operatsioonisüsteemi taga. Kuigi Microsoft ja Canonical tegid avatud lähtekoodiga tarkvara osas koostööd, ei esitanud kumbki selle võimaluse kohta kommentaare.
Kui olete huvitatud sellest, kuidas Linuxi ja Windowsi suhtlus areneb, minge Microsofti ajaveebi. Meeskond lubas, et järgneb veel selleteemalisi blogipostitusi.
SEOTUD LOOD, mida peate kontrollima:
- Linuxi kasutajad teatavad probleemidest „Kõrvaklapid ei tööta enam Windows 8.1-s”
- Microsoft ja Canonical toovad Bashi Windows 10-sse versioonis Build 2016
- München alustab tasuta XP Ubuntu CD-de levitamist Windows XP kasutajatele