Diit.cz - Novinky a informace o hardware, software a internetu

DOS Subsystem for Linux

Retrocomputingové hříčky začínají být poměrně sofistikované.

Windows Subsystem for Linux asi není zapotřebí obšírně představovat. Jedná se o technologii od Microsoftu, umožňující ve Windows 10 a Windows Server 2019 spouštět bez dalších úprav nativní linuxové programy.  V původní verzi, představené už před více než čtyřmi roky, se šlo o mezivrstvu, která překládala systémová volání určená pro linuxový kernel tak, aby je mohlo vykonávat NT jádro. Jelikož to mělo k úplné dokonalosti daleko a ne všechno šlo mezi tak odlišnými světy namapovat, zejména I/O operace byly pomalé a další úpravy na straně NT kernelu by mohly znamenat snížení zpětné kompatibility, vydali se vývojáři Microsoftu jinou cestou a vzniklo WSL2. Zde se pomocí velmi malého a takřka jednoúčelového virtualizéru virtualizuje přímo linuxové jádro a tudíž linuxový software vlastně doopravdy běží pod Linuxem. Funguje takto větší paleta programů a I/O operace se údajně zrychlily až dvacetkrát.

A pak je tu DOS Subsystem for Linux.

Nedělám si legraci, opravdu něco takového existuje, byť s Microsoftem to nemá prakticky nic společného. Jedná se aktuálně o one-man-show vývojáře jménem Charlie Somerville, který je postavený na dvou principech:

  1. Linux podporuje na procesorech kompatibilních s i386 spouštění procesů v režimu VM86. Tento režim přibyl právě s procesorem 80386 a umožňuje nastartovat nový proces tak, aby se pro něj vše jevilo, jako by běžel v reálném módu na reálném 8086/8088, tj. počítači třídy IBM PC / IBM PC XT a kompatibilních. Má k dispozici megabajt paměti segmentované tak, jak bylo zvykem, šestnáctibitovou instrukční sadu, šestnáctibitové registry atd. Přitom ale zvnějšku se jedná o procesy jako každý jiný -  mají ochranu paměti, lze jich spouštět více najednou a přepínat mezi nimi. V dobách prvních verzí Windows to byl hlavní mechanismus, jak multitáskovat DOSové programy, v Linuxu se to příliš nepoužívá.
  2. Linuxové jádro při svém startu nijak nesahá do prvního megabajtu RAM, nic tam nemění, nic nepřepisuje. Zůstává tam tak celý předtím nabootovaný DOS.

Možná již začínáte tušit. Autor napsal speciální zaváděč dsl.exe který nahraje do paměti linuxové jádro, v něm spustí task v režimu VM86 tomu tasku dá paměť původního DOSu se vším všudy a předá mu řízení. Vy v DOSu pouze spustíte dsl.exe, ten vám vypíše stoické „Starting DOS Subsystem for Linux, please wait . . . ok“ a za pár sekund už na vás zase bliká kurzor za C:\>, na pozadí se vám ale mezitím změnil operační systém, v němž běžíte - celý DOS je teď už jen procesem v běžícím linuxovém systému.

S tím můžete interagovat opět pomocí dsl.exe, všechny parametry jsou předávány jako linuxové příkazy a jejich výstup se děje zpět do DOSové obrazovky. Pokud byste snad chtěli  do Linuxu přejít úplně, stačí spustit dsl.exe sh a jste v normálním Bourne Again Shellu, čistě teoreticky pak stačí skončit příkazem exit a jste zpět v DOSu.

„Čistě teoreticky“ píšu záměrně, protože vše má svá úskalí. DSL je zatím více hračka v rané fázi vývoje než skutečně funkční program. Postupně jsem z regálu vytáhl desky ACorp 5VX-30S s Pentiem MMX, zcela noname desku s Pentiem II, Asus TUSI-M s Pentiem III a ani na jednom jsem se nedočkal korektního spuštění. V lepším případě počítač přestane reagovat, v horším jde ihned do resetu. Trochu lepší je to v QEMU. Ve verzi dostupné v ppc64le verzi Void Linuxu DSL správně nastartuje chvíli se s ním dá pracovat a pak umře na nějakém přerušení. V QEMU na MacBooku Air pod aktuální verzí macOS nenastartuje a ve VirtualBoxu tamtéž způsobí jeho pád.

Samozřejmě, že to těžko někdy bude víc než jen hračka, která ukazuje, co vše se dá udělat - na seriózní použití je dobrých pětadvacet let pozdě. Tou dobou by mě představa, že si na svém DOSovém písíčku můžu na pozadí pustit třeba hudbu a dál programovat v TurboPascalu, velmi lákala.

Martin "logout" Kukač

Většinu dne trávím tím, že přeměňuju kofein na kód. Když s tím skončím a ještě není čas jít spát, tak zbylý čas nerovnoměrně dělím mezi rodinu, sbírku počítačového harampádí, vysílání na volně přístupných pásmech a geocaching.

více článků, blogů a informací o autorovi

Diskuse ke článku DOS Subsystem for Linux

Pátek, 30 Říjen 2020 - 12:50 | Izak | Jsem presvedcen ze DOSbix je nasobne lepsi, uz...
Pátek, 30 Říjen 2020 - 12:44 | Izak | Ne cely novel byl jen dosovska aplikace a nic...
Úterý, 27 Říjen 2020 - 10:31 | WIFT | Nefungoval takhle kdysi náhodou Novell Netware?...
Pondělí, 26 Říjen 2020 - 09:55 | logout | Tak to se obávám, že jsem měl tak nějak...
Pondělí, 26 Říjen 2020 - 09:44 | logout | Dovolím si malou korekci - VM86 v i386 Linuxu je...
Neděle, 25 Říjen 2020 - 17:24 | Salašnický Pes | Pomocí ncdu si můžete najít, kde to bobtná (https...
Neděle, 25 Říjen 2020 - 04:14 | Tom | Na co multitask :) pokud mne pamet neklame, tak...
Sobota, 24 Říjen 2020 - 21:59 | logout | Základní problém s dobou před čtvrt stoletím je,...
Sobota, 24 Říjen 2020 - 17:01 | rathanuviel | Já mám dobré zkušenosti s "duplicity",...
Sobota, 24 Říjen 2020 - 11:59 | danieel | "Tou dobou by mě představa, že si na svém...

Zobrazit diskusi