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,通过这三个工具,我们就可以进行操作系统的编写了🎉🎉🎉