本文章中的所有实践均推荐在 Linux 环境下进行,原因在于 Linux 可以自动处理依赖关系,便捷的完成依赖工具的构建,由于博主主力电脑为 Mac,所以实践环境为 MacOS,但是大体与 Linux 没有区别,以下为默认使用的环境:

  • macOS Ventura 13.4.1 (c) - 英特尔芯片
  • qemu 8.0.4
  • nasm 2.16.01
  • GDB 13.2

Concepts you may want to Google beforehand: linux, mac, terminal, compiler, emulator, nasm, qemu

# QEMU

QEMU(Quick Emulator) 是一款免费且开源的模拟器,他通过动态二进制转换来模拟 CPU,并且提供了一组硬件和设备模型,使他能够运行多种原始操作系统;它还可以通过与 KVM 交互来以接近原生的速度运行虚拟机器。QEMU 同样可以模拟用户态进程,允许应用编译为另外一种架构的应用去运行(人话版本:qemu 就是一个硬件模拟器,用来模拟计算机硬件)。

许多从零开始写操作系统的教程均是采用 Bochs 来作为模拟器,qemu 与其相比来说,不仅更加快速,而且提供了更多的调试手段,更加灵活,所以我们选择 qemu 来做硬件模拟。

# 安装

linux 系统下可以方便的安装 qemu,而 mac 则需要通过 homebrew 进行安装

# mac
brew install qemu
# linux
apt install qemu

对于 linux 来说,qemu 是以一个整体存在的,也直接通过 qemu 命令运行 qemu ,而对于 mac 来说,qemu 会被拆分为多个部分,可以通过补全来看到所有部分:

当安装完成后,我们可以通过 qemu-system-i386 来运行一个 qemu 虚拟机,如果此时你看到了这样一个黑框,那么恭喜你,qemu 就安装完成了。

# NASM

NASM(Netwide Assembler ) 是一个汇编器和反汇编器,支持 x86 和 x64,被设计的非常便携和模块化。它支持多种文件类型,包括 Linux and *BSD a.out , ELF, Mach-O, 16-bit and 32-bit .obj (OMF) format, COFF (including its Win32 and Win64 variants.) ;还可以输出纯二进制文件,intel hex 和 Motorola S-Record 格式。他的语法被设计的极其简单且易于理解,有点类似于英特尔软件开发者手册中的语法但稍微复杂一点;他支持当前所有已知的 x86 架构。

# 安装

强烈建议通过 homebrew 完整安装,尽管 mac 中 Xcode 其实内置了 nasm,但功能有所阉割,可能会在后续过程导致未知错误。

nasm 的安装也非常简单,可以直接命令安装

# mac
brew install nasm
# linux
apt install nasm

当你使用 nasm -h 成功打印出帮助信息时,则代表安装完成了。

# GDB

现在的 Mac 不默认支持 gdb 了,想要安装 gdb 还需要折腾一番,不过这个折腾绝对是必要的,gdb 可以帮助我们调试操作系统内核甚至是我们马上就会讲到的 bios 代码,在写操作系统的过程中肯定会遇见一些奇奇怪怪的 bug,这种时候我们只有通过调试才能确定问题。

# 安装

安装与使用请参考 Mac 下使用 GDB GDB+QEMU 调试 mbr/loader


以上就是我们在后面会用到的所有工具了,qemu 主要负责模拟一个硬件环境给我们写的操作系统去运行,而 nasm 则是帮助我们去将我们写的代码转换成机器码去给硬件执行,gdb 则是帮助我们在出现问题的时候快速 debug,通过这三个工具,我们就可以进行操作系统的编写了🎉🎉🎉


更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Gality 微信支付

微信支付

Gality 支付宝

支付宝