jjzjj

自己动手从零写桌面操作系统GrapeOS系列教程——4.GrapeOS开发环境介绍

成宇佳的技术博客 2023-03-28 原文

学习操作系统原理最好的方法是自己写一个简单的操作系统。

1. 开发环境简介

为了减少开发过程中不必要的麻烦,希望大家的开发环境尽量与我的保持一致。
我的开发环境如下:
Windows10电脑一台
Visual Studio Code(最好是最新版)
VirtualBox 6.0.24
CentOS 7.9.2009
QEMU 7.1.0

各软件的作用如下:
Visual Studio Code 用来编写GrapeOS代码。
VirtualBox 用来运行CentOS和GrapeOS。
CentOS 用来编译GrapeOS代码,并使用其它Linux下的工具协助开发。
QEMU 用来运行和调试GrapeOS。

2. 开发环境安装

2.1 安装Visual Studio Code

2.1.1 下载安装Visual Studio Code

官网和下载地址:https://code.visualstudio.com/
点击“Download for Windows”按钮,默认将下载最新版本。

下载下来双击安装即可。

2.1.2 安装Visual Studio Code扩展插件

安装Visual Studio Code后还需要安装3个扩展插件:
Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code
C/C++
X86 and x86_64 Assembly

安装过程如下:
启动Visual Studio Code后,点击左侧工具栏中的扩展图标。请见下图:

在搜索栏中搜索“Chinese”,找到“Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code ”,点击“Install”安装该扩展插件。请看下图:

安装完中文语言包需要重启一下Visual Studio Code,按右下角提示点击“Change Language and Restart”。请见下图:

重启后将显示中文界面:

按同样的方式安装“C/C++”扩展插件和“X86 and x86_64 Assembly”扩展插件:


安装完所有插件后最好再重启一下Visual Studio Code。
下面是3个插件都安装好后的截图:

2.2 安装VirtualBox

打开VirtualBox官网:https://www.virtualbox.org/
点击网页中间的“Download”按钮:

在打开的下载页面中往下拉,找到“VirtualBox older builds”链接并点击:

在新页面中找到“VirtualBox 6.0”链接并点击:

在新页面中找到“VirtualBox 6.0.24”下面的“Windows hosts”链接并点击下载:

下载下来双击安装即可。

2.3 安装CentOS

2.3.1 下载CentOS

打开CentOS官网:https://www.centos.org/
点击页面上的“Download”按钮:

在新页面中点击“x86_64”:

打开的新页面中展示的是下载镜像列表,随便点击一个国内的镜像:

在下载页面中我们看到有多个版本,其中Minimal版本要比其它版本小很多,因为它不包含桌面以及其它一些东西。我们这里不需要CentOS的桌面,全部通过命令行操作即可。点击下载“CentOS-7-x86_64-Minimal-2009.iso”:

在第2篇文章“学习写GrapeOS的前提条件”时要求“会在虚拟机中安装Linux”,所以CentOS的具体安装过程就不在这里赘述了。

2.3.2 设置共享文件夹

在安装完CentOS后我们需要设置一个共享文件夹,让一个文件夹在Windows和CentOS中共享,方便我们开发。
1.首先需要在Windows和CentOS上各创建一个文件夹做为共享文件夹。
我在Windows上的共享文件夹路径是“D:\GrapeOS\VMShare”,在CentOS上的共享文件夹路径是“/media/VMShare”。
大家的共享文件夹路径可以不一样,但建议最好一样,方便大家后续的操作。
2.打开VitualBox,选中安装好的CentOS,在右侧点击“共享文件夹”:

点击“添加共享文件夹”图标:

打开“添加共享文件夹”对话框:

在“添加共享文件夹”对话框中填写“共享文件夹路径”为“D:\GrapeOS\VMShare”,“共享文件夹名称”为“VMShare”,勾选“自动挂载”,挂载点为:“/media/VMShare”。点击“OK”按钮:

返回共享文件夹设置窗口后,需要再点击一下“OK”按钮:

2.4 安装QEMU

2.4.1 下载安装QEMU

打开QEMU官网:https://www.qemu.org/
点击页面上的“DOWNLOAD”:

在新页面中下拉找到Windows的版本,然后点击“64-bit”:

在新页面中点击“2022”:

在新页面中找到“qemu-w64-setup-20220831.exe”点击下载:

下载下来双击安装即可。

2.4.2 配置QEMU的Path环境变量

为了方便使用,我们应该配置一下Path环境变量,操作如下:
在Windows桌面右键“此电脑”,选择“属性”,在弹出的“关于”窗口中点击“高级系统设置”:

在“系统属性”中点击"环境变量":

在“环境变量”中的“系统变量”中找到“Path”:

在“编辑环境变量”中点击“新建”按钮:

在新增加的行中填入QEMU的安装文件夹路径,默认是“C:\Program Files\qemu”,如果你安装到了其它文件夹下就填写你的文件夹路径:

Windows键+R键打开运行窗口,输入“cmd”:

在命令行中输入“qemu-system-i386”,然后回车:

如果打开了如下图中的QEMU窗口就说明安装和配置都完成了。

如果需要可以观看本文的视频讲解:https://www.bilibili.com/video/BV1XA41167LE/
GrapeOS操作系统交流QQ群:643474045

有关自己动手从零写桌面操作系统GrapeOS系列教程——4.GrapeOS开发环境介绍的更多相关文章

  1. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  2. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  3. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  4. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  5. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  6. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  7. ruby - 在 Ruby 中是否有一种惯用的方法来操作 2 个数组? - 2

    a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],

  8. ruby-on-rails - 如何让 Rails View 返回其关联的操作名称? - 2

    我有一个非常简单的Controller来管理我的Rails应用程序中的静态页面:classPagesController我怎样才能让View模板返回它自己的名字,这样我就可以做这样的事情:#pricing.html.erb#-->"Pricing"感谢您的帮助。 最佳答案 4.3RoutingParametersTheparamshashwillalwayscontainthe:controllerand:actionkeys,butyoushouldusethemethodscontroller_nameandaction_nam

  9. ruby-on-rails - 如何测试自己对 Ruby/ROR 的了解? - 2

    是否有self验证的问题列表。看着那个,我可以确定我知道。我应该复习一下。在学习的过程中,我列了一个这样的list,但它只包含我在某处听说过的项目。我需要一段时间才能找到新的东西。 最佳答案 以下是针对ruby​​和Rails的一些测试列表。证书名称:RubyonRails谁提供:oDeskIncorporation认证费用:免费网站:https://www.odesk.com/tests/985?pos=0证书名称:RubyonRails提供者:Techgig.com(TimesBusinessSolutionsLimited(T

  10. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

随机推荐