Někdo přišel na to, jak spustit Windows 9x uvnitř Linuxu, a je to překvapivě užitečné
Windows a Linux se na první pohled mohou zdát jako olej a voda a jejich spojení se může jevit jako nešlechetná kombinace. V jistém smyslu to stále platí — alespoň pokud jde o filozofii za těmito dvěma nesmírně populárními operačními systémy.
To znamená, že vždy existovaly pokusy (některé z nich, jako Wine, byly neuvěřitelně úspěšné) překlenout tuto propast. Máme projekty jako Wine pro Linux a samozřejmě Windows Subsystem for Linux (WSL). Oba projekty se snaží spouštět programy z jiného operačního systému v samostatném prostředí s nainstalovanými vrstvami kompatibility.
S ohledem na ty bláznivější projekty vývojářka Hailey vytvořila WSL9x, projekt, který přináší podoba subsystému Linuxu podobného WSL do Windows 9x.
Dostat to do provozu
Vůbec ne snadné
Podle oficiálního repozitáře na Codebergu je to trochu komplikované. WSL9x se skládá ze tří samostatných částí:
- Ovladač VxD, který pomáhá inicializovat WSL9x
- Opravené jádro Linuxu
- Soubor wsl.com pro klienta
Aby to fungovalo dohromady, bylo potřeba spousta závislostí, včetně obvyklých nástrojů pro vývoj jádra a linux-headers. Pro začátek naklonujte repozitář do lokálního adresáře.
Než přejdete do adresáře, naklonujte a nainstalujte i386-linux-musl z repozitáře musl-cross-make na GitHubu. Po jeho sestavení budete chtít exportovat PATH na stejné místo. Tento krok je povinný; bez něj se to nepřeloží. Také budete potřebovat Open Watcom V2.
Projekt to možná nezdůraznil, ale opravdu potřebujete binární soubor Busybox 1.36.1 ve složce bin. Zkopírujte zdrojový kód, sestavte program a překopírujte ho do /wsl9x/bin/. Bez těchto binárních souborů by program nefungoval. Fastfetch je také uveden jako závislost, ale vždy ho můžete zakomentovat ve souboru win9x_cpio_list v /wsl9x/linux/, aby se program dokázal zkompilovat. Ujistěte se, že provedete jakékoliv relevantní změny ve stejném souboru, když upravujete tyto závislosti.
Dále jsem musel sestavit opravené jádro Linuxu. Nastavil jsem proměnnou prostředí WATCOM a spustil druhý příkaz uvedený v repozitáři.
Neměl jsem štěstí při klonování Linux repositáře. Pokud byste narazili na stejný problém, zvažte jeho stažení jako .zip souboru z GitHubu a jeho rozbalení. Zkopírujte obsah složky do složky Linux a odtud byste měli být připraveni pokračovat.
Možná budete muset nejprve vygenerovat konfiguraci, než budete moci skutečně kompilovat. Tento krok chvíli trvá, takže buďte trpěliví.
Jakmile je hotovo, budete chtít importovat soubor img Windows 9x (v tomto případě jsem použil Windows 98), přesně nazvaný hdd.base.img. Jinými slovy, vezměte ISO Windows 9x a proveďte kompletní instalaci na virtuální pevný disk. Po dokončení VM úplně vypněte.
Zkopírujte to do adresáře WSL9x a spusťte make s nastavenými příslušnými proměnnými prostředí. Za předpokladu, že bylo všechno správně nastaveno, byste měli během chvíle vidět soubor hdd.img s připraveným WSL9x.
S dokončením obrazu bylo nyní možné spustit Windows 9x například pomocí Bochs. Po přihlášení jsem musel spustit příkazový řádek MS-DOS v nabídce Programy v nabídce Start.
Při psaní ve WSL jsem stiskl klávesu Enter a voilà! Měl jsem Windows Subsystem for Linux spuštěný a fungující ve Windows 98, uvnitř virtuálního stroje v Linuxu. Instalaci můžete zkontrolovat zadáním uname -a, což by mělo vypíchnout verzi jádra Linuxu.
Také můžete použít QEMU, ale proces je mnohem složitější. QEMU má tu výhodu, že nabízí akceleraci, což činí instalaci použitelnější.
Takže, co funguje?
Spíše jako důkaz konceptu
Není překvapivé, že toho moc nefunguje. Skutečnost, že to vůbec funguje, je sama o sobě obrovský výkon. Zatím se zdá, že jádro Linuxu funguje v rámci Windows 9x většinou bez problémů.
Stejně jako moderní WSL, WSL9x si klade za cíl umožnit soužití aplikací Windows 9x a Linuxu bez restartu. Je to ještě působivější, když vezmete v úvahu, že celý projekt byl napsán bez použití nástrojů umělé inteligence.
Mohl jsem spustit několik základních příkazů jako ls, /dev a další, ale žádný správce balíčků nebyl nainstalován. Jinými slovy, není možné přímo nainstalovat balíček Linuxu na WSL9x.
Ačkoli oficiální repozitář Codeberg skutečně ukazuje fastfetch, nikdy se mi ho nepodařilo rozjet na mé instalaci — je to přece jen hrozně složitá instalace. Aktuálně je projekt ve stavu důkazu konceptu a Hailey ho označila za jeden ze svých největších hacků vůbec, a já se cítím být nakloněn s tím souhlasit (i když nazývat to hackem se zdá být neupřímné).
Budoucí důsledky
Zábavný projekt, ale mohl by být opravdu užitečný
Upřímně řečeno, není toho tolik, k čemu by se to dalo použít. Na což byste se možná zeptali, proč tedy? Na což já odpovídám, proč ne? Část radosti při tvorbě takto nemožných projektů spočívá v samotné zábavě, a vrtání a experimentování může být docela návykové hobby.
Také s ohledem na to, že podpora 486 se plánuje brzy přestat z Linuxu, by se tento projekt mohl ukázat jako dokonalá odpověď pro spuštění některých starých programů. S WSL9x byste teoreticky mohli nativně kompilovat moderní programy a nechat je fungovat ve Windows 9x bez problémů.
Vzhledem k tomu, že je projekt opravdu nový, může to trvat nějakou dobu, než uvidíme jakékoli smysluplné výsledky.
Ohromující
WSL9x je trochu ukázka programátorských schopností. I když jsou jeho praktické využití v tuto chvíli téměř výhradně teoretické, nemění to nic na tom, že se jedná o velmi působivý projekt sám o sobě, zejména protože používá skutečné (a moderní!) jádro Linuxu.








