美文网首页操作系统程序员
【自制操作系统】(一)环境搭建

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

作者: VicX | 来源:发表于2016-04-17 15:45 被阅读450次

    虚拟机

    选用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系列处理器

    相关文章

      网友评论

      • VicX:由于我是几天前开始动手这个项目,之前以为这笔记只会自己看,所以就写得很简略,希望不小心点进来的朋友多多包涵。在之后的练习中,我回尽量较为详细地记录探索过程和所遇到的问题及解决方式。
        懒的去吃饭:我也刚好在学习Bare Bones的教程。没想到简书居然有同志!

      本文标题:【自制操作系统】(一)环境搭建

      本文链接:https://www.haomeiwen.com/subject/jomolttx.html