IT资讯 受 WSL 启发,开发者创建了一个 DOS Subsystem for Linux

sidney · 2020-10-01 11:00:06 · 热度: 8

在大流行导致的封锁期间,一位来自墨尔本的开发者 Charlie Somerville 创建了一个 DOS Subsystem for Linux(DSL)。这是一个 DOS 用户迄今为止从未拥有过的工具,类似于 Windows 10 用户通过 Windows Subsystem for Linux(WSL)所享受的集成 Linux 环境。

Somerville ,他是受到了微软 WSL 的启发,写 DSL 纯粹是为了好玩。一开始,他只是想看看能不能让 Linux 从 DOS 命令行启动。成功之后,他就想更进一步的看看 Linux 运行后能否继续执行 DOS。让他没想到的是,整件事情进展得出乎意料的顺利。

对于喜欢在 MS-DOS 环境下工作的用户来说,DSL 就像一个 WSL 的替代品。DSL 将真实的 Linux 环境集成到 MS-DOS 系统中,使得用户可以在 DOS 命令提示符下运行 DOS 和 Linux 应用程序。

受 WSL 启发,开发者创建了一个 DOS Subsystem for Linux

Somerville 在 Hacker News 的一个帖子中进一步揭示了 DSL 的工作原理。他指出,当 DSL 第一次在命令行被调用时,它将启动 Linux 内核,从 DOS 中接管计算机的控制权。

诀窍在于:DSL 使用了一种名为 VM8086 的处理器功能,它允许 32 位操作系统大部分原生运行传统的 16 位代码。这种在 VM8086 下运行 DOS 的方法其实就是早期 Windows、DOS 扩展器等的工作方式。此外,Linux 内核也支持 VM86,只不过并没有广泛使用。Somerville 认为,dosemu 是 Linux 上 VM86 的唯一主要用户。

然后,DSL 返回到 DOS,此时的 DOS 已经在 VM8086 任务中运行。值得庆幸的是,Linux 并没有出现抢占 DOS 内存的现象。Somerville 称,Linux 似乎在其自身的引导过程中保留了第一兆字节的内存(DOS 所在的地方),因此,只需跳回到正确的位置以继续执行 DOS 即可。

DSL 勉强能模拟键盘等硬件来实现工作,从而让 DOS 原始硬件能够访问其他所有内容 。值得注意的是,在同一硬件上同时运行两个操作系统,其实是非常不安全的一种行为。但尽管如此,Somerville 称,“它似乎工作得异常好。”

要运行 DSL,你必须:

  • 在 PATH 上有一个针对 i386-linux-musl 的交叉 工具 链。
  • 通过运行 J=xxx script/build-prereq 来构建先决条件(Linux 和 Busybox),将 xxx 替换为所需的 build parallelism。
  • 获取硬盘镜像 hdd.base.img,并在第一个分区上安装 MS-DOS 的副本。
  • 运行 make(这将创建一个新的硬盘镜像 hdd.img,并安装 DOS Subsystem for Linux)
  • 调用 C:\doslinux\dsl <command> 来运行 Linux 命令(也可以将 C:\doslinux 放在你的 DOS PATH上,这样会更方便)

目前,DSL 已经在 MS-DOS 6.22 和 FreeDOS 中进行了尝试。

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册