The Bash na Ubuntuu na Windowsima omogućuje da se izvorne Linux ELF64 binarne datoteke izvode na sustavu Windows putem Windows podsustava za Linux (WSL). Iako je mnoge ljude šokirala najava Bash on Ubuntu, vrijedi spomenuti da ona otvara nova vrata za kompatibilnost između različitih operativnih sustava. Microsoft čini još jedan korak naprijed i otkriva kako funkcionira njegov WSL kako bismo mogli bolje razumjeti kako dva sustava međusobno komuniciraju.
WSL je stvorio tim Microsoft Windows kernela i sadrži i korisnički način rada i komponente načina jezgre. Točnije, sustav se sastoji od:
- usluga upravitelja sesija korisničkog načina koja rukuje životnim ciklusom instance Linuxa
- Upravljački programi pružatelja usluga Pico (lxss.sys, lxcore.sys) čija je uloga emulacija Linux jezgre prevođenjem Linux syscalls-a
- Pico procesira hosting neizmijenjenog korisničkog načina Linux (npr. / Bin / bash).
Veza između tri komponente opisana je na sljedeći način:
To je prostor između korisničkog načina Linux binarnih datoteka i komponenti jezgre Windows gdje se magija događa. Postavljanjem neizmijenjenih Linux binarnih datoteka u Pico procese omogućujemo usmjeravanje Linux sistemskih poziva u Windows jezgru. Upravljački programi lxss.sys i lxcore.sys prevode pozive Linux sustava u NT API-je i oponašaju Linux kernel.
Glavni izazov u procesu je postići da dva sustava rade zajedno:
WSL izvršava neizmijenjene Linux ELF64 binarne datoteke virtualizirajući sučelje Linux jezgre na vrhu Windows NT kernela. Jedno od sučelja jezgre koje izlaže su sistemski pozivi (syscalls). Syscall je usluga koju pruža jezgra i koja se može pozvati iz korisničkog načina. I Linux jezgra i Windows NT kernel izlažu nekoliko stotina syscalls-a u korisničkom načinu, ali imaju različitu semantiku i uglavnom nisu izravno kompatibilni. Na primjer, Linux kernel uključuje stvari poput fork, open i kill dok Windows NT kernel ima usporedive NtCreateProcess, NtOpenFile i NtTerminateProcess.
Podsistem Windows za Linux uključuje pokretačke programe načina jezgre (lxss.sys i lxcore.sys) koji su odgovorni za rukovanje zahtjevima sistemskog poziva za Linux u koordinaciji sa Windows NT jezgrom. Upravljački programi ne sadrže kôd iz Linux jezgre, već su umjesto toga implementacija čiste sobe sučelja jezgre kompatibilne s Linuxom. Na izvornom Linuxu, kada je syscall napravljen iz izvršne datoteke korisničkog načina, njime se bavi Linux kernel. Na WSL-u, kada je syscall napravljen od iste izvršne datoteke, Windows NT kernel prosljeđuje zahtjev na lxcore.sys. Gdje je to moguće, lxcore.sys prevodi Linux syscall u ekvivalentni Windows NT poziv koji zauzvrat čini teške stvari.
Uzimajući u obzir Microsoftov interes za platforme otvorenog koda, mnogi su se ljudi pitali da li tehnološki div trebao bi steći velike tvrtke usmjerene na Linux poput Canonical-a, tvrtka koja stoji iza operativnog sustava Ubuntu. Iako su Microsoft i Canonical surađivali na softveru otvorenog koda, niti jedan nije dao komentar na ovu mogućnost.
Ako vas zanima kako se razvija interakcija Linux - Windows, idite na Microsoftov blog. Tim je obećao da će uslijediti još postova na blogu na ovu temu.
POVEZANE PRIČE KOJE TREBAJTE PROVJERITI:
- Korisnici Linuxa prijavljuju probleme "Slušalice su prestale raditi u sustavu Windows 8.1"
- Microsoft i Canonical donose Bash na Windows 10 na Build 2016
- München započinje distribuciju besplatnih Ubuntu CD-a korisnicima Windows XP-a