操作系统攻略:自己动手从零开始写操作系统——1.开发环境配置

操作系统攻略这个专栏是为了深入理解操作系统的运行机制所开设,目前计划分为两部分,第一部分是自己动手从零开始写操作系统,这一部分围绕着《操作系统真象还原》一书从零开始打造一个操作系统,第二部分将攻略CS162的Project——pintos。与一般的教程不同的是,本教程将详细刨析过程中的bug,并根据作者自身的经验做额外的补充。
在开始前你应该准备好一台已经安装好Linux操作系统的虚拟机,或者直接在Linux环境下开发。注:作者使用wsl+debian在windows下开发。

前置准备

首先安装build-essential包。

sudo apt install build-essential

build-essentials 包是编译软件所必需的元包。它们包括 GNU 调试器、g++/GNU 编译器集合以及编译程序所需的其他一些工具和库。例如,如果您需要使用 C/C++ 编译器,则需要在开始安装 C 编译器之前在系统上安装必要的元包。安装 build-essential 软件包时,系统上还会安装一些其他软件包,例如 g++、dpkg-dev、gCC 和 make 等。

扩展:GCC、gcc、g++三者之间的关系
gcc(GUN C Compiler)是GCC中的c编译器,而g++(GUN C++ Compiler)是GCC中的c++编译器。
gcc和g++两者都可以编译c和cpp文件,但存在差异。gcc在编译cpp时语法按照c来编译但默认不能链接到c++的库(gcc默认链接c库,g++默认链接c++库)。g++编译.c和.cpp文件都统一按cpp的语法规则来编译。所以一般编译c用gcc,编译c++用g++。

bochs介绍

由于我们写的操作系统需要运行在一台x86计算机上,因此我们需要下载一个能模拟x86计算机硬件环境的模拟器(虚拟机)——Bochs。
Bochs是一个用C++编写的开源模拟器,仅可模拟x86计算机硬件环境,包括CPU、内存、硬盘、显示器、网卡等。能够运行各种不同的操作系统,如DOS、Windows、Linux、BSD等。还支持许多外部设备,如键盘、鼠标、串口、并口等。此外,Bochs还支持多种调试方式,如断点、单步执行、内存监视等。
与之相对还有QEMU。QEMU是一个快速的开源模拟器和虚拟机管理器,能够模拟x86、ARM、PowerPC、SPARC等多种CPU架构。相比bochs,其特点在于它的快速性,能够运行本机代码,实现在模拟器中运行的虚拟机与物理机的速度相当。QEMU还支持各种外部设备,如USB设备、串口、网卡等。此外,QEMU还能够通过GDB、VNC等多种调试方式进行调试。
原书作者使用了Bochs(因为他只会Bochs),所以在这里我们也使用Bochs,而在后面我们攻克pintos时这两种模拟器可以自由选择。

bochs安装

bochs的安装地址:link,也可以选择其他版本
我们选择下载tar.gz包自己编译。(下载需要一点魔法,不然会很慢,甚至下载不了)

//首先在随便哪里新建个文件夹用于存放bochs
mkdir os
//然后将下载的包解压
tar xvf bochs-xxx
//然后进入bochs的解压文件目录
cd bochs-xxx
//最后开始编译
./configure \
--prefix=/home/cooiboi/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11 //注意这里是x+数字11而不是ll,如果填写了某些无法识别的配置的话会报configure: WARNING: unrecognized options:xxx的错误

这里我们附上原书的解释:
在这里插入图片描述此时我们的文件夹里就有Makefile文件了。
在这里插入图片描述开始编译:

make install

如果失败的话可能有多种原因,例如bochs版本等问题,这里作者很顺畅,所以如果遇到问题需要自己去解决了。

配置bochs

此时我们的安装目录下应该有两个文件:
在这里插入图片描述
配置bochs实际上就类似于配置Bios。

引用:我们在开机时按下的 del、csc,或者F2键,各个机型进入BIOS方式有所不同,但差不多就那几种方式。BIOS中会显示各种硬件
的信息,还有启动顺序等。Bochs 既然是模拟硬件的,它就得知道,您需要它模拟的计算机是什么样的,换句话说,在这个虚拟机中有
哪些硬件,启动顺序是什么,是从软盘开始,还是从硬盘开始?人家也得像模像样地跟BIOS 差不多才行。给 bochs配置硬件的方法,是
写一个配置文件给它,boche 启动时会找到此文件,根据文件内容创建自己,这样咱们的虚拟机就健全了。

下面是完整的配置文件,注意路径类的配置需要使用绝对路径。在安装目录下的share/doc/bochs/bochsrc-sample. txt是样本文件,说明了如何配置,但是文件内容很长,关于启动顺序的说明在531行到543行。
在这里插入图片描述
将此配置文件放在bochs的安装目录下任意位置均可,名字没有要求。

运行bochs

此时我们输入bin/bochs即可运行:
在这里插入图片描述
这里作者直接使用的wsl终端,如果使用别的终端远程连到wsl里面的话会报Message: bochs: cannot connect to X server 127.0.0.1:0.0的错误,因为X server是Linux系统上提供图形用户界面的服务程序。当客户端主机Client访问服务器Server上的图形程序时,需要Server对该Client赋能访问图形程序的权限。
还有可能会报其他错误,这在原书中有所记录。

总结

至此第一步配置结束,下一部分将是去编写MBR 主引导记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值