【OS学习笔记】五 VirtualBox的下载、安装和配置

上一篇文章学习了:计算机的启动过程(点击链接查看上一篇文章)

今天来接着上一篇文章,解决我们学习中的实验环境问题。

参考:X86汇编语言-从实模式到保护模式。作者李忠。纯学习笔记。如有侵权请联系我删除

1、下载Oracle VM VirtualBox

主流的虚拟机软件包括VMWare、Virtual PC和VirtualBox,但只有VirtualBox是开源和免费的。

要使用VirtualBox,首先必须从网上下载并安装它。这里是它的主页:

https://www.virtualbox.org/

通过这个主页,你可以找到最新的版本并下载它。为了方便,下面给出下载页面的链接:

https://www.virtualbox.org/wiki/Downloads

这个链接将带你到达类似于图2所示的这个页面。通常,我们应该在运行着Windows的主机上安装使用VirtualBox,所以应当选择“VirtualBox 4.1.6 for Windows hosts”。

在这里插入图片描述

2、安装Oracle VM VirtualBox

相对于前面安装的NASM,VirtualBox安装程序稍大些,4.1.6版本有90MB。安装过程也很简单,唯一需要说明的是软件特性的选择和安装路径,如图3所示。

在这里插入图片描述

在这里,“VirtualBox Application”是虚拟机的主体部分,当然是必选的。通用串行总线(Universal Serial Bus,USB)控制器也是必须安装的,我们可能要针对USB设备编写汇编语言程序,没有这个虚拟的“芯片”可不行。所以,应当选择完全安装“VirtualBox USB Support”(VirtualBox USB支持)。
“VirtualBox Networking”特性用于使虚拟机提供对网络的支持。如果仅仅是通过本书学习汇编语言,不干别的,这个特性可以不用安装。但如果你想在虚拟机里安装其他操作系统,探索虚拟机的功能,还想在虚拟机里上网,也可以选择安装。
除了手工操作之外,VirtualBox允许通过编程来完全控制虚拟机的行为。就像所有在Windows上运行的软件都可以调用操作系统提供的例程和服务一样,VirtualBox也提供这样的手段。但是,不像C++这样的编程语言,Python这样的脚本语言接口并没有内置于虚拟机中。所以,如果你想用Python脚本语言来访问虚拟机,那么,就应当选择安装“VirtualBox Python 2.x Support”。

3、创建一台虚拟PC

安装之后,第一次启动时的VirtualBox如图4所示。

在这里插入图片描述

你可能以为这个界面就是虚拟出来的计算机,其实不是。
这只是VirtualBox的控制台。要知道,VirtualBox可以虚拟出多台计算机,而不仅仅是一台。所以,现在的任务是不花一分钱,不用走出家门,来安装一台“全新的计算机”。
要创建一台新的虚拟计算机,应该单击控制台界面上的“新建”按钮,或者选择菜单“控制”→“新建”。这时,会出现“欢迎使用新建虚拟电脑向导”,此时可单击“下一步”按钮。

如图5所示,紧接着,向导程序将询问这台计算机的名称和将要采用的操作系统。
在这里插入图片描述

正如向导界面上的文字所描述的那样,计算机名称用来唯一地标识一台虚拟计算机。因为我们安装虚拟机的目的是学习汇编语言,那么,我们可以为这台计算机起个名字,叫“LEARN-ASM”。事实上,你可以取别的名字,只要你喜欢,这没有什么关系。
操作系统类型和版本的选择部分容易让人产生误解,以为VirtualBox会根据你的选择来安装一个现成的操作系统。实际上,这不可能。让你选择操作系统的唯一目的,是想根据你的选择,在后面的步骤中为你提供合理的硬件配置,比如内存容量和硬盘大小等。实际上,我们不准备安装任何操作系统,所以在“操作系统”一栏里选择“Other”(其他);在“版本”一栏里选择“Other/Unknown”(其他/未知)。
一旦做出这种选择之后,紧接着,在下一步里,向导程序会结合真实主机的内存容量,以及你所选择的操作系统,来给出一个建议的内存容量配置。

如图6所示,在我的计算机上,它给出的建议值是64MB内存,因为我的主机上只有1GB的物理内存容量(从图中就可以看出)。当然,它允许你拖动滑块来调整这个数值。
调整好虚拟机的内存容量后,继续下一步。

在这里插入图片描述

和真实的计算机一样,虚拟机也需要一个或几个辅助存储器(磁盘、光盘、U盘等)才能工作。不过,为它配备的并非真正的盘片,而是一个特殊的文件,故称为虚拟盘。这样,当一个软件程序在虚拟机里读写硬盘或者光盘时,虚拟机将把它转换成对文件的操作,而软件程序还以为自己真的是在读写物理盘片。这样的一块磁盘,在需要的时候随时创建,不需要时可以随时删除,这真是非常神奇的磁盘。

现在,当调整好虚拟机的内存容量后,下一步,将要为虚拟机配备虚拟盘。如图7所示,因为在正常情况下,所有的计算机都习惯从硬盘启动,故这个界面默认的是选择一个虚拟硬盘。

在这里插入图片描述

在这个界面上,你有两种选择,创建新的虚拟硬盘,或者使用现有的虚拟硬盘。基本上,你采用哪种方式都可以。注意,那个复选框“Start-up Disk”用于指定是否从该硬盘启动。如果选择了它,那么,ROM-BIOS程序将在开机自检后从这个硬盘里读取主引导扇区的内容。
如果你要创建新的虚拟硬盘,只需要单击“下一步”按钮。

向导程序将询问你想创建什么类型的虚拟硬盘,如图8所示。

在这里插入图片描述

正如前面所说的,市面上有好几种流行的虚拟机软件,而每种虚拟机软件都企图制定自己的虚拟硬盘标准。因为虚拟硬盘实际是一个文件,所以,所谓虚拟硬盘标准,实际上就是该文件的格式。正是因为这样,虚拟硬盘类型说白了就是你准备采用哪家的虚拟硬盘文件格式。
因为虚拟硬盘实际上是一个文件,所以,通常来说,它的格式体现在它的文件扩展名上。比如上面的LEECHUNG.VHD,采用的就是微软公司的VHD虚拟硬盘规范。VHD规范最早起源于Connectix公司的虚拟机软件Connectix Virtual PC,2003年,微软公司收购了它并改名为Microsoft Virtual PC。2006年,微软公司正式发布了VHD虚拟硬盘格式规范。在本书配套的源代码和工具包里,有该规范的文档。
VDI是VirtualBox自己的虚拟硬盘规范,VMDK是VMWare的虚拟硬盘规范。采用哪个公司、哪个虚拟机软件的虚拟硬盘格式,对于普通的应用来说,这没什么关系,它们都能很好地工作。但是,对于本书和本书配套的工具来说,你必须选择“VHD(Virtual Hard Disk)”。具体原因,我们将在下一节讲述。
事实上,即使是VHD,也分为两种类型:固定尺寸的和动态分配的。一个固定尺寸的VHD,它对应的文件尺寸和该虚拟硬盘的容量是相同的,或者说是一次性分配够了的。比如,一个2GB的VHD虚拟硬盘,它对应的文件大小也是2GB。
与此相反,一个动态分配的VHD,它的文件尺寸是根据需要不断增长的,它的大小等于实际写入该虚拟硬盘上的数据量。
如图9所示,本书以及本书配套的工具仅支持固定尺寸的VHD,所以你应该在进入这个界面之后选择“Fixed size”。
在这里插入图片描述

在选择使用VHD之后,还要指定该VHD的容量。如图10所示,你可以拖动滑块,在4MB和2TB之间随意指定一个容量。注意,1TB = 1024GB。

在这里插入图片描述

不得不提醒你的是,应当指定50MB以上的硬盘大小。不过,也不需要太大。

除了指定虚拟硬盘的容量,另一个值得特别注意的问题是该虚拟硬盘的创建位置。默认情况下,它会被放在Windows用户文件夹下,而且对于初学者来说很不容易找到。其实,把它创建在配书工具所在的文件夹里是最方便的,因为我们以后要反复对它进行写入操作。为此,如图10所示,请在“位置”一栏,单击文本框右边的小图标,来选择一个容易找到的位置。

以上就是创建一台虚拟机要经历的步骤。当结束向导程序时,刚刚创建的虚拟机LEARN-ASM就会显示在VirtualBox控制台里,如图11所示。基本上,你现在就可以单击控制台界面上的“开始”来启动这台虚拟机。但是,别忙,你的虚拟硬盘里还没有东西呢。

在这里插入图片描述

参考:X86汇编语言-从实模式到保护模式。作者李忠

学习探讨加:
qq:1126137994
微信:liu1126137994

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iframe透明

<iframe allowtransparency"true" src"A.html"></iframe> A.html body { background-color:transparent; } 转载于:https://www.cnblogs.com/mattins/archive/2010/10/13/1850098.html

spring体系思维导图

spring体系思维导图1. spring 思维导图2. springboot 思维导图3. springcloud 思维导图之前整理的&#xff0c;后续持续更新中1. spring 思维导图 2. springboot 思维导图 3. springcloud 思维导图

【数据结构与算法-java实现】一 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

今天开始学习程序的灵魂&#xff1a;数据结构与算法。 本文是自己学习极客时间专栏-数据结构与算法之美后的笔记总结。如有侵权请联系我删除文章。 我们都知道&#xff0c;数据结构和算法本身解决的是“快”和“省”的问题&#xff0c;即如何让代码运行得更快&#xff0c;如何…

sleep和wait的区别

考中2次了&#xff0c;再错第三次&#xff0c;我改姓&#xff01;天天笔试面试连轴转&#xff0c;查错的心情都没有&#xff01;不能再笨下去了&#xff01; from&#xff1a;http://nneverwei.javaeye.com/blog/494280 http://zhidao.baidu.com/question/75503928.html?frala…

idea模板

idea模板1.类注解模板2.方法注解模板3.自定义代码生成模板每次下载新版本的idea 或者换笔记本都需要重新&#xff0c;配置注解&#xff0c;而且从网上找了很多都或多或少有问题&#xff0c;每次要花费一些时间配置&#xff0c;这里整理一下。自定义代码生成模版&#xff0c;设置…

【OS学习笔记】六 实模式:编写主引导扇区代码

上一篇文章学习了&#xff1a;计算机的启动过程&#xff08;点击链接查看上一篇文章&#xff09; 这篇文章学习记录为&#xff1a;编写主引导扇区代码。 参考&#xff1a;《X86汇编语言-从实模式到保护模式》-李忠。纯学习笔记&#xff0c;更详细内容请阅读正版书籍。如有侵权…

秘罗地伤痕 -- 暂存小说草稿

六月的山城重庆热的让人发疯&#xff0c;远远看去&#xff0c;好像路上的青条石都要融化了似的。树梢也一动不动&#xff0c;似乎 在守卫着什么&#xff0c;坚定的站在自己的位置上。倒是走在这条路上的行人很是奇怪。这四个黑衣人&#xff0c;每人穿 一身高档礼服呢的西装&…

【OS学习笔记】七 Bochs的下载、安装和配置

参考&#xff1a;《X86汇编语言-从实模式到保护模式》-李忠。纯学习笔记&#xff0c;更详细内容请阅读正版书籍。 1 开源的BOCHS虚拟机软件 Bochs是开源软件。它用软件来模拟处理器取指令和执行指令的过程&#xff0c;以及整个计算机硬件。当它开始运行时&#xff0c;就直接模…

【OS学习笔记】八 实模式:编写主引导扇区代码-另一种更高效的写法

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章&#xff0c;我们用比较原始的方法编写了主引导扇区的代码。点击链接查看上一篇文章&#xff1a;编写主引导扇区代码 本片文章将学习以下内…

命名习惯

写程序经常需要命名&#xff0c;好的名字至少可以带来更清晰的代码&#xff0c;进一点还可以带来更好的设计和架构。但看过很多程序&#xff0c;发现很多命名都不是很合适。下面是我总结的一些命名原则:1. 提取公共部分, 减少不必要的重复&#xff08;no repeate)。 一堆…

【OS学习笔记】九 实模式:从汇编的角度理解栈结构

上一篇文章以一种更加高效的方法编写了主引导扇区的代码。主要是引入了循环和跳转指令。点击链接查看上一篇文章&#xff1a;编写主引导扇区代码-另一种更高效的写法 本篇文章&#xff0c;继续上一篇文章的学习。同样还是编写汇编代码加载到主引导扇区让CPU直接执行。但是我们…

链接库注意事项

1、确定include路径设置正确。 2、确定lib路径设置正确。 3、确定在连接器上加入需要连接的库名字。 4、由于库可能是Win平台&#xff08;lib/dll&#xff09;或者是Linux平台&#xff08;a/so&#xff09;&#xff0c;使用编译器时需注意库的格式是否与编译器所在平台对应。 5…

【OS学习笔记】十 实模式:实现一个程序加载器-程序加载器如何将用户程序加载到内存并执行

上一篇文章学习了以下内容&#xff1a; 用一种不同的分段方法&#xff0c;从另一个不同的的角度理解处理器的分段内存访问机制使用循环和条件转移指令来优化主引导扇区代码 点击链接查看上一篇文章&#xff1a;点击链接查看 对于主引导扇区部分。大概前几篇文章已经学的差不…

ASP.NET生成WORD文档服务器部署注意事项

1、Asp.net 2.0在配置Microsoft Excel、Microsoft Word应用程序权限时 error: 80070005 和8000401a 的解决总 2007-11-01 11:30 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败&#xff0c;原因是出现以下错误: 80070005。 控制面板&#…

【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理

上一篇文章我们模拟操作系统的加载器程序&#xff0c;使用汇编语言实现了一个程序加载器&#xff1a;点击链接查看上一篇文章&#xff1a;程序加载器的实现原理 本篇文章&#xff0c;是实模式学习的结尾。在经过了那么多坎坷&#xff0c;终于学完了8086的实模式&#xff01;&a…

配置节处理程序时出错,未能加载文件或程序集

安装sql server2008时&#xff0c;出现下面的错误&#xff1a; 按照上面的提示&#xff0c;查看那个路径下的文件&#xff0c;根据文件名判断可能是临时文件&#xff0c;于是首先将上面的文件剪切出来&#xff0c;然后安装&#xff0c;成功。 转载于:https://www.cnblogs.com/x…

【数据结构与算法-java实现】二 复杂度分析(下):最好、最坏、平均、均摊时间复杂度的概念

上一篇文章学习了&#xff1a;如何分析、统计算法的执行效率和资源消耗&#xff1f; 点击链接查看上一篇文章&#xff1a;复杂度分析上 今天的文章学习以下内容&#xff1a; 最好情况时间复杂度最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度 1、最好与最坏情况时间复…

【软件开发底层知识修炼】六 Binutils辅助工具之- addr2line与strip工具

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章我们学习了gcc编译器的相关内容。点击查看上一篇文章&#xff1a;gcc编译器。本篇文章接着上一篇文章&#xff0c;学习GNU为GCC提供的辅助开…

Eboot 中给nandflash分区实现

提到分区就不得不提到MBR&#xff0c;不得不提到分区表。 什么是MBR 硬盘的0柱面、0磁头、1扇区称为主引导扇区&#xff0c;NANDFLASH由BLOCK和Sector组成&#xff0c;所以NANDFLASH的第0 BLOCK&#xff0c;第1 Sector为主引导扇区&#xff0c;FDISK程序写到该扇区的内容称为主…