Na contramão da atual adoção do Linux pela Microsoft via WSL, um desenvolvedor criou um DOS Subsystem For Linux (DSL), que surpreendentemente, funciona muito bem.
Essa é uma história um pouco parecida com a do surgimento do Linux, quando Linus Torvalds aproveitou suas férias e criou a base do kernel que viria a se tornar o Linux.
Coincidentemente, um desenvolvedor de Melbourne ficou entediado durante o bloqueio do coronavírus, então acabou criando um DOS Subsystem For Linux (DSL, ou subsistema DOS para Linux).
Desenvolvedor criou um DOS Subsystem For Linux (DSL)
O desenvolvedor por trás desse DSL é Charlie Somerville, um engenheiro de software que gosta de programação de sistemas e está interessado em computação retro, especialmente quando se trata do Microsoft DOS e Windows dos anos 90.
Somerville disse ao Itnews que se inspirou no Subsistema Windows da Microsoft para Linux (WSL), então escreveu DSL para se divertir.
A princípio, ele só queria ver se conseguia fazer o Linux inicializar a partir da linha de comando do DOS. Depois que isso aconteceu, ele pensou em aumentar ainda mais o nível para ver se conseguia continuar executando o DOS depois que o Linux estivesse em execução.
“Estou surpreso com a facilidade com que tudo funciona, considerando o quão * duvidoso * é tudo haha.”, diz Somerville.
Como funciona o subsistema DOS para Linux?
O DSL é uma ferramenta que os usuários do DOS nunca tiveram até agora: um ambiente Linux integrado semelhante ao que os usuários do Windows 10 desfrutam através do Windows Subsystem for Linux (WSL).
O subsistema DOS para Linux é como uma alternativa WSL para usuários que preferem trabalhar em um ambiente MS-DOS. DSL integra um ambiente Linux real em sistemas MS-DOS, que permite aos usuários executar aplicativos DOS e Linux a partir do prompt de comando DOS.
Para esclarecer como funciona o DSL, Somerville explicou em um tópico do Hacker News:
“Quando o DSL é chamado pela primeira vez na linha de comando, ele inicializa o kernel do Linux, que assume o controle do computador a partir do DOS.”
Agora, aqui está o truque: DSL usa um recurso de processador chamado VM8086, que permite que um sistema operacional de 32 bits execute código legado de 16 bits principalmente de forma nativa.
Esta abordagem de rodar o DOS no VM8086 é, na verdade, como funcionavam os primeiros Windows, extensores DOS, etc. O kernel do Linux também suporta VM86, embora seja em grande parte não documentado e não seja realmente usado atualmente.
O DSL então retorna ao DOS, que essencialmente foi invertido e agora está sendo executado sem saber em uma tarefa VM8086. Felizmente, o Linux não parece destruir a memória do DOS durante seu próprio processo de inicialização.
Vale ressaltar que o DSL mal consegue emular hardware como o teclado para fazer as coisas funcionarem e, assim, permitir acesso ao hardware do DOS para todo o resto.
Mas deve-se notar que rodar dois sistemas operacionais simultaneamente no mesmo hardware é extremamente frágil e inseguro, é claro. No entanto, parece funcionar surpreendentemente bem.
Esse recurso parece estar funcionando no MS-DOS 6.22 e no FreeDOS. Você pode obter mais informações sobre o DSL na página do projeto no Github.