Hlavní navigace

Odpověď na názor

Odpovídáte na názor ke zprávičce Microsoft Windows Subsystem for Linux 2 přechází na jádro Linux 6.6 LTS.

  • 4. 7. 2024 11:42

    Lael Ophir

    Mě celkem baví ta dlouhá léta úvah uživatelů Linuxu na téma "Windows určitě přejdou na linuxový kernel". Kernel Windows je v principu dost odlišný od jakéhokoliv unixového, a upřímně o dost lepší. Hlavně se ale liší tím, že se podobné věci dělají jinak. Stačí si projít dokumentaci API (v případě Linuxu asi zdrojáky), a hned uvidíte spoustu rozdílů. Jako příklad si vezměte funkce NtCreateFile() a open() níže. Rozdíly jsou i v práci s pamětí, dramaticky odlišně se liší správa zařízení, grafika atd.
    https://learn.microsoft.com/en-us/windows/win32/api/winternl/nf-winternl-ntcreatefile
    https://manpages.debian.org/unstable/manpages-dev/open.2.en.html

    Je fajn, že existují compatibility layers typu Wine. Jenže ty ve skutečnosti značnou část Win32 API ignorují, aplikaci hlásí že byla akce úspěšně provedena, a spoléhají na to, že to nepovede k nefunkčnosti aplikace. Na straně Windows jste mohl vidět WSL verze 1, kde se implementovaly linuxové syscalls, a výsledek byl výkonem i absencí podpory některých syscalls dost nepřesvědčivý. WSL verze 2 už jedou Linux kernel ve VM, do kterého se zavádějí moduly virtuálních zařízení komunikujících přes VM bus, a přístup k FS se řeší přes network redirector. Na obou stranách jsou tedy vidět omezení compatibility layeru. Když chcete běžet Win32 aplikaci na Linuxu, raději si pusťte Windows ve VM. Když chcete běžet Linuxovou aplikaci na Windows, pusťte si přes WSL Linux (de-facto) ve VM.