【自制操作系统】(一)环境搭建

虚拟机

选用bochs是因为其提供了方便的类似gdb的调试功能。

bochs的debug功能介绍:http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html

安装

如果是自己编译,记得配置开启调试功能:
./configure --enable-debugger --enable-disasm

MAC OSX可以使用brew 来安装bochs
brew install bochs
默认好像是开启debug功能的,或者可以配置,我有点记不清了,可自行Google

配置

配置的目的是让bochs知道以哪个设备(或虚拟文件)作为启动设备

如果需要的话,还需要对bochs所模拟的CPU和内存等进行配置

制作启动盘(文件)

osdev.org推荐使用cdrom作为启动光盘,但是笔者在实践的时候采用的是创建1.44‘软盘镜像的方式来进行试验,如果创建一个floppy image可参考下述步骤:

  1. 创建软盘镜像
    可使用bximage工具

  2. (视具体情况而定)为镜像创建合适的文件系统

    • 如果自己从无到有实现一个bootloader,完全可以不使用任何文件系统,或者使用任何文件系统
    • 如果使用grub等现有bootloader,则需要考虑的是开发环境所支持的文件系统(主要是方便开发),以及最重要的bootloader所支持的文件系统
  3. 实现bootloader

    参考《bootloader》一文的介绍

编译环境

为什么要使用交叉编译环境?

具体可参考:http://wiki.osdev.org/GCC_Cross-Compiler

简而言之,编译的目的是为了生成目标平台的可执行代码。然而我们操作系统自带的编译器一般是生成此平台下的可执行代码,这种代码不一定能在我们虚拟机所模拟的平台上运行,如我的MacBook Pro为例,我的GCC的目标平台为:

Target: x86_64-apple-darwin15.4.0

而我的玩具操作系统需要运行的平台是:

cpu: model=p3_katmai

所以,编译的GCC版本选择为:

--target=i686-elf

i686指的是Pentium Pro以及此后的Intel IA32 CPU,也就是平常我们所说的P6系列处理器

你可能感兴趣的:(【自制操作系统】(一)环境搭建)