如果你想自己动手写一个简单的操作系统,需要做哪些工作呢?首先你要对操作系统有一个感性的认识:什么是操作系统?简单来说,操作系统是运行在硬件的基础之上,融合了进程控制,内存资源分配,文件系统,外部设备交互等等模块的一个庞然大物,在这些内容的基础上才有我们经常使用的应用程序。那么如果需要自己实现一个操作系统的话,最基础的肯定就是需要从最基础的硬件模块入手,如何在什么都没有的硬件之上开始我们的操作系统开发呢?

本章就介绍开发操作系统过程中的基本环境搭建,我们通过bochs工具来模拟计算机硬件基础,使用这个模拟环境能够让我们的测试更加容易,要不然一直开机关机开机关机你的电脑迟早要嗝屁的。话不多说,首先来搭建基础的环境。

1.安装virtualbox

官网下载即可

2.在virtualbox里安装Ubuntu18.04

Linux系统即可,对于是哪个版本的Linux没有要求,只是因为我一直用Ubuntu所以安装这个。

3.在Ubuntu18.04里安装bochs 2.6.8

3.1 下载地址:https://sourceforge.net/projects/bochs/files/bochs/

解压之后进入到解压好的文件夹,首先configure一下,configure的参数如下所示:

3.2 简要的说明一下各个参数的作用:

--prrefix=/your_path/bochs 是用来指定bochs的安装目录,your_path根据个人情况设定即可。

--enable-debugger 打开bochs自己的调试器

--enable-disasm 使bochs支持反汇编

--enable-iodebug 启用io接口调试器

--enable-x86-debugger 支持x86调试器

--with-x 使用x windows

--with-x11 使用x11图形用户接口

3.3 在configure过程中报错解决对策:

这是由于源没有更新造成的,解决方法:sudo apt update

再安装gcc编译器: sudo apt install gcc

同时把g++编译器一起安装了:sudo apt install g++

解决方法:sudo apt-get install libx11-dev

解决方法:sudo apt-get install pkg-config

3.4 configure完成,开始编译

输入:sudo make

3.5 编译过程出错解决

错误:fatal error: X11/extensions/Xrandr.h: No such file or directory
解决方案:sudo apt-get install xorg-dev

 3.6 编译完成,安装!

输入:sudo make install 

安装成功!

 现在赶紧跑到我们之前设置的bochs的安装文件夹下输入:bin/bochs

它看起来像是这个样子的。

 4.配置bochs

在安装的根目录下有配置bochs的样本文件:share/doc/bochs/bochsrc-sample.txt。将这个文件复制一份到安装bochs的根目录下,重命名为bochsrc.disk,复制如下配置文件到bochsrc.disk中。

#################################################################
# Bochs的配置文件
# Configuration file for Bochs
#################################################################

# how much memory the emulated machine will have
megs: 32

# filenameof ROM images
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

# which disk image will be used 这个是启动软盘,我们虚拟出来的那个a.img
floppya:1_44=a.img, status=inserted

# choose the boot disk 确定启动方式
boot: floppy

# where do we send log messages?
log: bochsout.txt

# disable the mouse
mouse: enabled=0

# enable key mapping ,using US layout as default
keyboard: keymap=$BXSHARE/keymaps/x11-pc-us.map

说明如下:

1. 【megs】设置bochs在运行过程中能够使用的内存,本例为32MB。

megs: 32

2. 【romimage】【vgaromimage】设置对应真实机器的BIOS和VGA BIOS。

romimage: file=/实际路径/bochs/share/bochs/BIOS-bochs-latest

vgaromimage: file=/实际路径/bochs/share/bochs/VGABIOS-lgpl-latest

3.【floppya】设置Bochs所使用的磁盘,软盘的关键字为floppy。

floppya: 1_44=a.img, status=inserted

4.【boot】选择启动盘符

boot: floppy 

5.【log】设置日志文件的输出

log: bochsout.txt

6.【mouse】【keyboard】关闭鼠标并打开键盘

mouse: enable=0

keyboard:  keymap=$BXSHARE/keymaps/x11-pc-us.map

8.【gdbstub】增加的bochs对gdb的支持,这样gdb便可以远程连接到此机器的1234端口调试了

gdbstub:enable=1, port=1234, text_base=0, data_base=0, bss_base=0.

5.运行bochs

到安装bochs的根目录下输入:bin/bochs

默认是选择[2]读取配置文件的,直接回车后输入bochsrc.disk。如果你的配置文件没啥问题的话,接下来应该是下面这个样子,默认是输入[6]开始模拟的,如果你的配置文件有错则不会出现这个界面而且给你报错,根据错误提示自己修改即可。同样的我们直接回车

 

如果一切顺利的话接下来应该会像下图这样弹出一个黑框框里面什么都没有。

出现一个黑框框是因为我们在调试模式,在命令行界面的<bochs:1>后面输入一个"c"后回车,就会出现下面的报错:

这里的PANIC提示说没有启动盘,当然没有启动盘!都还没开始写代码呢,哪来的启动盘?这就是下一节的内容了。

本节完/

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐