Orange‘s:一个操作系统的实现学习笔记1


前言

去年就开始学习Orange’s:一个操作系统的实现,今年记录并总结一下学习中遇到的一些问题,由于我汇编基础几乎为0,对计算机也不是很了解,所以写的这些注释和总结难免会有错误和纰漏,敬请原谅。此篇笔记抄的书上的代码已经实际运行过了,有可能后期添加注释的时候出现bug,如果运行不起来,可以删除所有注释再运行。此篇笔记去年参考了很多文章,可能我现在找不全了,等后续有时间我再把参考文章写在对应位置。如果笔记有侵权的地方,请联系我我会删除。

一、安装虚拟机VMware和操作系统

如果使用的Windows系统,可以选择安装虚拟机VMware,然后在虚拟机中安装Ubuntu;如果是Ubuntu系统,可以直接使用Ubuntu,当然也可以使用其他的Linux系统,我主要是用Ubuntu习惯了(划掉,主要是偷懒)。
安装VMware有很多教程,百度一下就可以找到。一开始我预计会很难安装(Android Studio的阴影),结果却发现现在安装挺简单的。我参考了下列文章:https://blog.csdn.net/sss_369/article/details/122634363。激活码可以选择去百度,或者某宝淘一个。

安装Ubuntu

在虚拟机中安装Ubuntu需要下载一个镜像,镜像可以百度下载,也可以从我放在下方的百度网盘地址下载,链接中的Ubuntu是18.04版本,一开始我使用的是21.04版本,可能是我太菜了,然后我就遭遇了传说中的操作系统不要用最新版本的问题,之后我使用了我比较熟悉的18.04,当然也可以使用20.04。
Ubuntu18.04:
链接:https://pan.baidu.com/s/1GLzAUqH9vknzXewxqSs_VQ
提取码:1804
Ubuntu21.04:
链接:https://pan.baidu.com/s/15N6UEVRNEPRl_GKBOwmaKA
提取码:2104

安装VMTools

预警,这里很坑啊!!!!(第一天主要时间花费大部分在安装VMTools和卸载操作系统重新安装)
安装VMTools也可以百度(这样写会不会太水了)有很多种办法,我现在安装完成没有截图,只能凭印象写了,可能会有错误。(大概也错不到多离谱……)

1.提示直接安装

第一种,在安装虚拟机后,登录操作系统后下方会出现一个横条提示安装VMTools,点击后等一会会下载一个安装包,将那个安装包解压(可以直接右键,也可以用命令,当然我偷了懒用了右键提取)到指定位置后,在控制台进入这个文件夹目录下(现在很简单啦,不需要疯狂cd+文件夹了,Ubuntu可以直接在文件夹下右键选择在控制台打开,就可以直接进入了,当然要是不是Ubuntu,可能要用命令cd+“文件夹名”进入,这里需要根据自己提取文件到的位置输入cd+“文件名”),在控制台进入对应文件夹目录下后,输入下面一条指令:

sudo ./vmware-install.pl

举一个栗子:假设我提取的VMTTools文件到了名字为“VMwareTools-10.3.23-16594550”文件夹
在这里插入图片描述
在文件夹“VMwareTools-10.3.23-16594550”下还有一个文件夹“vmware-tools-distrib”
在这里插入图片描述

在文件夹vmware-tools-distrib中有一个文件vmware-install.pl(其实就是找到vmware-install.pl的路径)
在这里插入图片描述
直接在桌面打开终端:
在这里插入图片描述

按照路径输入下列指令:
在这里插入图片描述
等待一会就安装完成了
————————分界线—————————
这里会出现一个问题,有一些时候会在安装操作系统之后立即登录操作系统安装VMTools,这时候CD-ROM用的是之前的操作系统镜像,会提示一些奇怪的东西。此时关闭虚拟机,在虚拟机设置里面,点击CD-ROM,切换到虚拟机安装的文件夹下有一个“linux.iso”文件即可。
在这里插入图片描述
在这里插入图片描述

2.点击选项安装

在登陆操作系统后,点击VMware上方的选项虚拟机,里面有一个选项安装VMTools,点击下载安装包之后和第一个安装方法步骤一样。
————————分界线————————
这里还可能会有问题,那就是选项是灰色不可选中。解决办法我参考了下面的文章https://blog.csdn.net/qq_20307987/article/details/51302005?_t_t_t=0.033085680566728115&utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.queryctrv2&spm=1001.2101.3001.4242.1&utm_relevant_index=2

安装后记

我安装VMTools完成后,出现了一系列小问题(太菜了没解决,码在这以后解决了再更新):
一开始是可以windows文件到虚拟机的,但是关机重启后,开始出现无法上网的问题,之后我在终端ping了一下百度,出现了域名无法解析的问题,这时候我去逛了一圈csdn,修改文件,但是每次重启后就会域名无法解析,无奈只能卸载重装。
后来百度了一圈,发现说Ubuntu18.04后单纯修改文件就失效了,要配置网卡之类的。但是我安装vmtools就上不去网了,无法更新一个安装包,就无法使用ifconfig指令(血坑),无奈由卸载重装。后来新装系统后,我就没再安装VMTools了(赶时间就留了这个坑在这),查询一些资料后,大佬们说官方不推荐vmtools了,可以安装另一个open-vmtools(似乎是这个名字),我也没有去验证,先把这个解决方案摆在这就好了。
参考文章如下:
https://blog.csdn.net/tsq292978891/article/details/75039926
https://www.cnblogs.com/shao-shuai/p/10085212.html
https://www.cnblogs.com/kikyoqiang/p/15639251.html

二、安装bochs和NASM

1.安装bochs

去年我安装bochs比较麻烦,似乎是我从官网下载bochs安装包太慢了,今年我就直接用的去年下载的安装包,我把bochs-2.6.8安装包放在下面链接中,可是Orange那本书中应该用的不是bochs-2.6.8的版本,因为后续的文件中有些地方语句不一样,需要修改才能运行。
bochs-2.6.8:
链接:https://pan.baidu.com/s/1ZRc5xhNCs8riPkk-Am9SGQ
提取码:0268
下载完成后,将安装包里面的文件提取到文件夹中,如下图所示:
在这里插入图片描述
进入文件夹后,右键在终端打开:
首先安装依赖:

sudo apt-get install build-essential xorg-dev libgtk2.0-dev
sudo apt-get install bochs-x

编译:

./configure --enable-debugger --enable-disasm
sudo make

安装:

sudo make install

这里使用bochs自带的一个bximage制作一个虚拟软盘:
在命令行输入下列指令:

bximage

然后按照下图进行配置:
在这里插入图片描述

创建完成后,编写文件bochsrc,内容如下:

#Configuration file for Bochs

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

#filename of ROM images
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

#what disk images will be used
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=/usr/local/share/bochs/keymaps/x11-pc-us.map

上述代码有些地方需要改动,下列两行代码需要修改成自己安装bochs后的文件位置:

romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

然后在bochsrc所在的文件夹下打开终端(终端一定要进入bochsrc所在的文件夹,否则指令应该修改),运行bochsrc,输入下列指令:

bochs

在这里插入图片描述
输入bochs后,会弹出来下列代码,然后输入6回车进行模拟:
在这里插入图片描述
此时bochs已经开始运行了,但是还是黑屏,还需要在终端输入c,此时软盘里还没有东西,所以会提示一个选项,点击continue,才会开始启动模拟,如下图所示:
在这里插入图片描述
如果出现上图,则bochs安装成功。

2.安装NASM

安装NASM较为简单了,从官网https://www.nasm.us/下载安装包,这个下载比较快,提取文件到指定文件夹,然后在文件夹下打开终端,依次输入下列指令:

./configure
make
sudo make install

然后输入nasm -version来查看是否安装成功

安装后记

其实,安装bochs还有另一种方法,但是我没有试验过,留在这做一个记录,安装完依赖包之后,再输入下列指令:

sudo apt-get install bochs

上述安装bochs和NASM参考了下列文章:
https://www.cnblogs.com/chengmf/p/12526821.html
https://blog.csdn.net/cwcmcw/article/details/44775809
https://blog.csdn.net/strikedragon/article/details/103904515

总结

这一小节,主要是安装后续代码编写环境和调试环境,下一小节讲述如何从实模式跳到保护模式。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对x86架构的处理器,业界一向是褒贬不一。但是毫无疑问的是,x86架构的处理器是迄今为止在市场上最成功的处理器。它既催生了Intel、微软这样的业界巨头,也改变了普通人们的生活。到今天,虽然有arm的异军突起,但是大部分程序员所编写的程序依然在运行在x86架构上。 虽然很多上层的程序员绕过了对CPU架构本身的理解,而直接使用高级语言进行编程,但是对CPU本身的熟悉,其实依然是所有想被称为优秀的程序员所难以绕过的一道坎。对CPU的不熟悉,实际上限制了程序员的思维方式、对程序的理解和实际解决问题的能力。 对于普通的芯片,阅读几页的说明书就可以大致理解如何让它工作。CPU是比较复杂的一种,对于比较简单的CPU架构,阅读几十页的文档也能大致熟悉。然而 x86架构的CPU的说明可不是这么简单,其手册估计有一共有四、五千页之巨。不要说理解透彻,就是从头到尾翻一遍也不是一件简单的事情。并非Intel 有意将它做得复杂,这里有历史的原因。因为这个架构的应用实在太广了,全世界有无数的软件都在它的基础之上工作。为此它自身的升级也就变得举步维艰。每次升级都不得不要兼容之前的特性。这也就导致了新旧指令层层堆积,种种特性互相兼顾,最终变成如今的一团乱麻了。 对于入门级的选手,读完那些手册可不是一件容易的事情。但是于渊的这本《orange's:一个操作系统实现》却是一条难得的终南捷径。因为要理解如何让一个芯片正常工作,最简单的办法就是从头开始去写程序让它运行起来,然后操作它做自己想做的事情。如果是平时的编程,这些下层的工作都已经有操作系统帮你做了,对理解x86架构的帮助就大为有限。如果去读那几千页的文档,不但读起来很痛苦,中间又没有多少可以实际操作的工作来帮助你温故而知新,这其中的枯燥乏味,绝对不是一般人可以忍受的了。而且更重要的手册中虽然包含了x86所有的特性,然而其中有些特性是现代操作系统根本就没有用到的。努力的去理解的话,又是吃力不讨好了。如果每个读者都可以随着这本书的介绍,去逐步的实现一个操作系统,不但这中间其乐无穷,而且实现到最后,对x86架构的理解也就不在话下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值