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


在上一讲中我们已经安装配置了开发环境,在本讲中我们来测试一下开发环境是否正常。

我们的测试流程如下:

1.在Visual Studio Code中编写GrapeOS代码;

2.在CentOS中编译GrapeOS代码;

3.在QEMU中运行GrapeOS。

注意:在本讲中涉及到的代码或操作如有不懂的地方暂时不用管,后面会讲。本讲只是为了测试开发环境是否正常,只要你能跟着做下来就行。

下面我们来依次测试这3步流程。


1. 在Visual Studio Code中编写GrapeOS代码

1.1 在我们上讲中建立的共享文件夹中新建一个名为“grapeos-course”的文件夹:

1.2 打开Visual Studio Code,在欢迎页面中点击“打开文件夹”:

1.3 选中我们刚才新建的文件夹“grapeos-course”:

1.4 在Visual Studio Code左侧的资源管理器中点击“新建文件夹”图标:

1.5 输入新文件夹名“Lesson5”:

1.6 选中新建的文件夹“Lesson5”,然后点击“新建文件”图标:

1.7 输入新文件名“boot.asm”:

1.8 在boot.asm中输入如下代码:

org 0x7c00
mov ax,cs
mov ds,ax
mov ax,0xb800
mov gs,ax mov ah,0x07
mov al,'G'
mov [gs:0x0],ax
mov al,'r'
mov [gs:0x2],ax
mov al,'a'
mov [gs:0x4],ax
mov al,'p'
mov [gs:0x6],ax
mov al,'e'
mov [gs:0x8],ax
mov al,'O'
mov [gs:0xa],ax
mov al,'S'
mov [gs:0xc],ax stop:
hlt
jmp stop times 510-($-$$) db 0
db 0x55,0xaa


2. 在CentOS中编译GrapeOS代码

2.1 打开VirtualBox

选中上讲中安装好的CentOS,点击绿色的“启动”图标:

2.2 CentOS启动后的界面如下:

2.3 打开PowerShell

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

2.4 SSH登录CentOS

在PowerShell中通过SSH登录CentOS,并进入共享文件夹“/media/VMShare/”中,可以看到我们刚才新建的文件夹“grapeos-course”:

2.5 创建虚拟硬盘。

在命令行中输入下面这行命令:

dd if=/dev/zero of=/media/VMShare/GrapeOS.img bs=1M count=4

可以看到生成了一个新文件“GrapeOS.img”:



“GrapeOS.img”就是我们创建的虚拟硬盘,虽然只有4MB,但对GrapeOS来说足够了。

2.6 编译程序。

进入本讲文件夹“Lesson5”,并输入下面这行命令:

nasm boot.asm -o boot.bin

可以看到新生成了一个"boot.bin"文件:



如果提示没有“nasm”这个命令,通过yum安装即可:

yum install nasm

2.7 将boot.bin写入虚拟硬盘。

在命令行中输入下面这行命令:

dd conv=notrunc if=boot.bin of=/media/VMShare/GrapeOS.img

截图如下:


3. 在QEMU中运行GrapeOS

3.1 启动QEMU

打开Windows的cmd命令行窗口,输入下面这行命令:

qemu-system-i386 d:\GrapeOS\VMShare\GrapeOS.img

截图如下:

3.2 查看QEMU

此时弹出了QEMU的窗口:



如果在QEMU窗口第一行中看到前7个字符是“GrapeOS”就说明开发环境正常。


如果需要可以观看本讲的视频版:https://www.bilibili.com/video/BV1p84y1V71A/

GrapeOS操作系统交流QQ群:643474045

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

  1. 使用U盘安装Linux最美桌面发行版Elementary OS 及常用开发环境配置(JDK,Redis,MySQL,Docker,IDEA,STS)

    前言 假期在家无聊,刚好把六年前的一台笔记本电脑利用起来,原来电脑虽然说配置说不上古董机器,但是运行win系统感觉还是不流畅,所幸给换成Linux桌面版系统,在网上查阅了很多,Linux桌面系统要么推 ...

  2. 别人写的一个Bootstrap系列教程

    http://www.cnblogs.com/lansy/category/659061.html

  3. 基于SpringBoot从零构建博客网站 - 技术选型和整合开发环境

    技术选型和整合开发环境 1.技术选型 博客网站是基于SpringBoot整合其它模块而开发的,那么每个模块选择的技术如下: SpringBoot版本选择目前较新的2.1.1.RELEASE版本 持久化 ...

  4. 从零到一创建ionic移动app:基础开发环境搭建

    myAPP项目是在Ubuntu14.04下创建   本项目开发node 4.5/cordova 6/ionic 2   第一步 安装nodejs npm install -g n n v4.5.0 使 ...

  5. Android零基础入门第65节:RecyclerView分割线开发技巧

    在上一期通过简单学习,已经领略到了RecyclerView的灵活性,当然都是一些最基础的用法,那么本期一起来学习RecyclerView的分割线使用. 相信有的比较细心的同学已经发现了,使用Recyc ...

  6. 一个人写的操作系统 - Sparrow OS

    一个人写的操作系统 - Sparrow OS 自己写一个操作系统,这是在过去的几年里我一直为之努力的目标,现在终于完成了. 缘起 自己动手写操作系统的动机最初来自于学习Linux遇到的困难. 我是一个 ...

  7. 自制 os 极简教程1:写一个操作系统有多难

    为什么叫极简教程呢?听我慢慢说 不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了 ...

  8. 【操作系统】关于Linux桌面操作系统

    以前是Win+Ubuntu+黑苹果,周末想体验一下deepin,于是简单安装了一下,安装过程很简单,这里不再描述.安装之后,第一次打开系统,确实很惊艳,赏心悦目的操作系统. 之前用Ubuntu时候,C ...

  9. 盘点|2021年最受欢迎Linux桌面操作系统前十名

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 阿里云开源镜像站利用云服务上的优势,提供快速.稳定的镜像分发服务.和免费的CDN加速服务.更新频率高,基本上一天一更新,对于Centos/Ubun ...

  10. 手把手教你从零写一个简单的 VUE

    本系列是一个教程,下面贴下目录~1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 今天给大家带来的是实现一个简单的类似 VUE 一样的前端框架,VUE 框架现在应 ...

随机推荐

  1. Blazor组件自做十二 : Blazor Pdf Reader PDF阅读器 组件 (草稿)

    原文链接 [https://www.cnblogs.com/densen2014/p/16954812.html] Blazor Pdf Reader PDF阅读器 组件 应小伙伴要求撸了一个简单的P ...

  2. 解读JVM级别本地缓存Caffeine青出于蓝的要诀 —— 缘何会更强、如何去上手

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 在前面的几篇文章中,我们一起聊了下本地 ...

  3. python连接MySQL数据库实现(用户登录测试功能)pymysql

    pymysql PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务.存取过程.批量执行,实现增删改查等 # 注册 def register(cursor): usern ...

  4. java中的数值运算

    本文主要是掌握java中的整除和取模的运算: public class MathOperate { public static void main(String[] args) { // 取整运算 S ...

  5. 10、比较Bigdecimal类型是否相等的方法

    一.Bigdecimal.equals()详解: Bigdecimal的equals方法不仅仅比较值的大小是否相等,首先比较的是scale(scale是bigdecimal的保留小数点位数),也就是说 ...

  6. 关于Git在Visual studio及Git Bush中的日常操作教程,有图有说明,会一直更新本页内容... (Git相对SVN具有更加安全的分布式存储, 分支版本之间切换秒级速度, 分支版本强大灵活等特点)

    >安装命令行和TortoiseGit UI程序. <git bash的安装> https://git-scm.com/downloads <windows可视化工具 Torto ...

  7. M.2 SSD固态硬盘上安装windows问题

    近来M2硬盘大降价,笔记就趁便宜买了一个2T的M.2固态硬盘,插在笔记本上,接下来安装win11,本想以前安装多次,也是老手了,没想到遇到很多问题,一度陷入僵局,不过最终还是安装成功了,下面记录下安装 ...

  8. [OpenCV实战]27 在OpenCV下使用forEach进行并行像素访问

    目录 1 Mat像素访问 1.1 使用at方法直接进行像素访问 1.2 使用指针进行像素访问 1.3 使用forEach方法进行像素访问 1.4 将forEach与C ++ 11 Lambda一起使用 ...

  9. 路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、request对象获取文件、视图层FBV与CBV的源码剖析、模版层简介

    今日内容详细 路由分发 ​ django的每一个应用都可以有自己独立的路由层(urls.py)静态文件(static文件夹)模板层(templates文件夹) ​ 基于这个特性多人开发项目就可以完全解 ...

  10. three.js一步一步来--如何画出一根线

    下面是画出线的代码,可以参考一下哟~~ <template> <div style="width:1000px; height:800px"> <p& ...