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


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

我们的测试流程如下:

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. 【Java EE】Day08 HTML&CSS

    一.表单 1.概述 采集数据,与服务器交互包括 form表单,需要提交则必须设置name属性,action方式主要包 get:参数会在地址栏显示(请求行),长度有限 post:参数被封装在请求体,参数 ...

  2. 【笔面试题目】Java集合相关的面试题-List、Map、Set等

    一.List 1.subList 不会返回新的list对象--与String的subString不同 返回原来list的从[fromIndex,toIndex)之间这一部分的视图,实际上,返回的lis ...

  3. 使用pycharm or vscode来编写python代码?

    pycharm社区版可用于商业项目 pycharm社区版可用于商业项目,来源于官方的回答:Can I use Community Editions of JetBrains IDEs for deve ...

  4. 解决aspnetcore-browser-refresh.js:234 WebSocket connection to 'wss://localhost:62356/Admin/' failed问题

    前言 前段时间升级了Visual Studio到v17.1.1最新版本,然后今天来运行之前的一个.net5项目一直提示:aspnetcore-browser-refresh.js:234 WebSoc ...

  5. 粘包、struct模块、进程并行与并发

    目录 粘包现象 struct模块 粘包代码实战 udp协议(了解) 并发编程理论 多道技术 进程理论 进程并行与并发 进程的三状态 粘包现象 1.服务端连续执行三次recv 2.客户端连续执行三次se ...

  6. windows装机小经验

    小白的装机之路 大学时有试过自己用硬盘装,但只知其然,不知其所以然,真出现什么问题也不知道怎么解决,作为一名码农还是好好补补知识,免得以后被人笑话. 经过自己的看各路大神文章,试验并总结以下粗浅见解. ...

  7. 温故知新 - 靶机练习-Toppo

    今天闲来无事,重新做了一下以前做过的第一个靶机(https://www.cnblogs.com/sallyzhang/p/12792042.html),这个靶机主要是练习sudo提权,当时不会也没理解 ...

  8. python 之路 37 Navicat 可视化软件使用、 pymysql模块使用

    多表查询的两种方法 方式1:连表操作 inner join 内连接 select * from emp inner join dep on emp.dep_id=dep.id; 只连接两张表中公有的数 ...

  9. 琐碎的想法(五)for 的前世今生

    for 起因 记得大学上C语言的课,第一次遇到的问题就是循环结构里面的 for. 选择结构的 if 非常易懂,和日常生活的判断没有区别. 循环结构的 while 同样比较好理解. 本质上是一个判断 如 ...

  10. 无旋树堆(FHQ-Treap)学习笔记

    简介 无旋树堆(一般统称 \(\text{FHQ-Treap}\)),是一种平衡树.可以用很少的代码达到很优秀的复杂度. 前置知识: 二叉搜索树 \(\text{BST}\) \(\text{Trea ...