安装虚拟机、bochs、NASM
前言
去年就开始学习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
总结
这一小节,主要是安装后续代码编写环境和调试环境,下一小节讲述如何从实模式跳到保护模式。