Rust DOS:使用 Rust 语言创建 DOS 可执行文件

0 评论
/
10 阅读
/
1798 字
20 2025-05

Rust 编译 DOS 可执行文件(使用 Rust 创建 DOS 可执行文件或第一阶引导加载器) 可以使用 Rust 创建 DOS 可执行文件或第一阶引导加载器。 以下是一个快速演示,展示如何为 DOS 创建 COM 可执行文件。

源码

https://github.com/o8vm/rust_dos

构建步骤

你需要 binutils 和 llvm-tools-preview。

cargo install cargo-binutils

rustup component add llvm-tools-preview

然后您可以通过执行以下命令来构建项目:

cargo build --release

要为 DOS 创建一个 COM 可执行文件,请运行:

cargo objcopy --release -- -O binary --binary-architecture=i386:x86 rust_dos.com

运行

QEMU

您可以将 rust_dos.com 复制到您的DOS镜像中。

Linux上的示例

$ sudo partx -av freedos.img
partition: none, disk: freedos.img, lower: 0, upper: 0
Trying to use '/dev/loop1' for the loop device
/dev/loop1: partition table type 'dos' detected
range recount: max partno=1, lower=0, upper=0
/dev/loop1: partition #1 added
$ sudo mount /dev/loop1p1 /mnt
$ sudo cp rust_dos.com /mnt/
$ sudo umount /mnt
$ sudo partx -dv /dev/loop1

然后,您可以使用 QEMU 进行测试:

qemu-system-i386 freedos.img -boot c

您可以使用 println! 宏。 以下是 HelloWorld 的一个示例:

DOSBox

首先安装 DOSBox。如果您喜欢使用包管理器,这里有一些示例:

Debian / Ubuntu

sudo apt install dosbox

苹果操作系统 (Homebrew)

brew install dosbox

Windows(巧克力)包管理器

choco install dosbox

一旦安装完成,您可以启动 DOSBox 并为其提供可执行文件的路径。例如,您可以仅提供当前工作目录,如下所示:

这将启动 DOSBox 并将 “C:” 驱动器设置为当前工作目录。通常,从另一个控制台执行此操作是个好主意,这样每次需要重新编译应用程序时,您就不必关闭 DOSBox。

其他

dpkey 模块从 DOS 中接管键盘输入处理,并将扫描码转换为 ASCII 码。 关于扫描码:请参见 PS/2 键盘 - OSDev Wiki。

    暂无数据