
The Bash uz Ubuntu operētājsistēmā Windows ļauj vietējiem Linux ELF64 bināriem darboties sistēmā Windows, izmantojot Windows apakšsistēmu Linux (WSL). Lai arī daudzus cilvēkus šokēja Bash on Ubuntu paziņojums, ir vērts pieminēt, ka tas paver jaunas iespējas dažādu operētājsistēmu savietojamībai. Microsoft sper vēl vienu soli uz priekšu un atklāj, kā darbojas tā WSL, lai mēs varētu labāk saprast, kā abas sistēmas savstarpēji sazinās.
WSL izveidoja Microsoft Windows kodola komanda, un tā satur gan lietotāja, gan kodola režīma komponentus. Konkrētāk, sistēmu veido:
- lietotāja režīma sesiju pārvaldnieka pakalpojums, kas apstrādā Linux instances dzīves ciklu
- Pico nodrošinātāju draiveri (lxss.sys, lxcore.sys), kuru uzdevums ir atdarināt Linux kodolu, tulkot Linux sistēmas izsaukumus
- Pico procesi, kas mitina nemodificēto lietotāja režīmu Linux (piemēram, / bin / bash).
Savienojums starp trim komponentiem ir aprakstīts šādi:
Burvība notiek telpā starp lietotāja režīmā esošajiem Linux bināriem un Windows kodola komponentiem. Ievietojot nemodificētus Linux bināros failus Pico procesos, mēs ļaujam Linux sistēmas zvanus novirzīt uz Windows kodolu. Draiveri lxss.sys un lxcore.sys tulko Linux sistēmas izsaukumus NT API un līdzinās Linux kodolam.
Galvenais procesa izaicinājums ir panākt, lai abas sistēmas darbotos kopā:
WSL izpilda nemodificētus Linux ELF64 bināros failus, virtualizējot Linux kodola saskarni virs Windows NT kodola. Viena no kodola saskarnēm, ko tā atklāj, ir sistēmas izsaukumi (syscalls). Syscall ir kodola sniegts pakalpojums, ko var izsaukt no lietotāja režīma. Gan Linux kodols, gan Windows NT kodols pakļauj vairākus simtus sistēmas zvanu lietotāja režīmam, taču tiem ir atšķirīga semantika un parasti tie nav tieši savietojami. Piemēram, Linux kodols ietver tādas lietas kā dakša, atvēršana un nogalināšana, savukārt Windows NT kodolā ir salīdzināmas NtCreateProcess, NtOpenFile un NtTerminateProcess.
Windows apakšsistēma operētājsistēmai Linux ietver kodola režīma draiverus (lxss.sys un lxcore.sys), kas ir atbildīgi par Linux sistēmas zvanu pieprasījumu apstrādi, sadarbojoties ar Windows NT kodolu. Draiveri nesatur kodu no Linux kodola, bet tā vietā ir tīras telpas ieviešana ar Linux saderīgām kodola saskarnēm. Vietējā Linux operētājsistēmā, kad sistēmas zvans tiek veikts no lietotāja režīma izpildāmā faila, to apstrādā Linux kodols. Ja WSL sistēmā tiek veikts syscall no tā paša izpildāmā faila, Windows NT kodols pārsūta pieprasījumu uz lxcore.sys. Kur iespējams, lxcore.sys tulko Linux syscall līdzvērtīgā Windows NT izsaukumā, kas savukārt veic smagu celšanu.
Ņemot vērā Microsoft interesi par atvērtā koda platformām, daudzi cilvēki domāja, vai tehnoloģiju gigantam vajadzētu iegādāties lielākos uz Linux vērstus uzņēmumus, piemēram, Canonical, uzņēmums, kas aizstāv Ubuntu operētājsistēmu. Lai gan Microsoft un Canonical sadarbojās atvērtā pirmkoda programmatūras jomā, neviens no šiem komentāriem par šo iespēju netika sniegts.
Ja jūs interesē tas, kā attīstās Linux un Windows mijiedarbība, dodieties uz Microsoft emuāru. Komanda solīja, ka sekos vēl emuāra ziņas par šo tēmu.
SAISTĪTIE STĀSTI, KAS JUMS PĀRBAUDA:
- Linux lietotāji ziņo par problēmām, kas saistītas ar austiņu darbības pārtraukšanu operētājsistēmā Windows 8.1
- Microsoft un Canonical ievieš Bash operētājsistēmā Windows 10 vietnē Build 2016
- Minhene sāk bezmaksas Ubuntu kompaktdisku izplatīšanu Windows XP lietotājiem