学习操作系统原理最好的方法是自己写一个简单的操作系统。之前讲解开发环境时并没有介绍具体的安装过程,有网友反应CentOS的安装配置有问题,尤其是共享文件夹。本讲我们就来补充介绍一下在VirtualBox中安装配置CentOS的具体过程,彻底解决GrapeOS开发环境问题。一、新建虚拟机1.在VirtulBox中点击新建按钮。2.名称和文件夹都可以自己定,我这里名称填写为CentOS7,类型选Linux,版本选RedHad(64-bit)。点击“下一步”按钮。3.内存大小就填写默认的1024MB,够用了。如果不够用后面也可以改。点击“下一步”按钮。4.虚拟硬盘选默认的“现在创建虚拟硬盘”。点击“
学习操作系统原理最好的方法是自己写一个简单的操作系统。之前讲解开发环境时并没有介绍具体的安装过程,有网友反应CentOS的安装配置有问题,尤其是共享文件夹。本讲我们就来补充介绍一下在VirtualBox中安装配置CentOS的具体过程,彻底解决GrapeOS开发环境问题。一、新建虚拟机1.在VirtulBox中点击新建按钮。2.名称和文件夹都可以自己定,我这里名称填写为CentOS7,类型选Linux,版本选RedHad(64-bit)。点击“下一步”按钮。3.内存大小就填写默认的1024MB,够用了。如果不够用后面也可以改。点击“下一步”按钮。4.虚拟硬盘选默认的“现在创建虚拟硬盘”。点击“
学习操作系统原理最好的方法是自己写一个简单的操作系统。1.开发环境简介为了减少开发过程中不必要的麻烦,希望大家的开发环境尽量与我的保持一致。我的开发环境如下:Windows10电脑一台VisualStudioCode(最好是最新版)VirtualBox6.0.24CentOS7.9.2009QEMU7.1.0各软件的作用如下:VisualStudioCode用来编写GrapeOS代码。VirtualBox用来运行CentOS和GrapeOS。CentOS用来编译GrapeOS代码,并使用其它Linux下的工具协助开发。QEMU用来运行和调试GrapeOS。2.开发环境安装2.1安装Visual
学习操作系统原理最好的方法是自己写一个简单的操作系统。1.开发环境简介为了减少开发过程中不必要的麻烦,希望大家的开发环境尽量与我的保持一致。我的开发环境如下:Windows10电脑一台VisualStudioCode(最好是最新版)VirtualBox6.0.24CentOS7.9.2009QEMU7.1.0各软件的作用如下:VisualStudioCode用来编写GrapeOS代码。VirtualBox用来运行CentOS和GrapeOS。CentOS用来编译GrapeOS代码,并使用其它Linux下的工具协助开发。QEMU用来运行和调试GrapeOS。2.开发环境安装2.1安装Visual
学习操作系统原理最好的方法是自己写一个简单的操作系统。在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下。一、向屏幕输出一个字符mbr4.asmmbr4.asm中的代码如下:;将屏幕第一行的第一个字符显示为‘G’。movah,0x07;黑底白字moval,'G';G的ASCII码是0x47,此时ax的值为0x0747。movbx,0xb800moves,bxmov[es:0],ax;文本模式显存地址从0xb8000开始。stop:;标号hltjmpstoptimes510-($-$$)db0;将从上条指令结束到最后2个字节前的空余字节全部置为0。db0x55,0xaa上面代码中的注释比较详
学习操作系统原理最好的方法是自己写一个简单的操作系统。前面铺垫了这么久,今天终于开始写程序了。本讲将介绍3个逐步深入但非常简单的程序,一方面是让大家熟悉开发流程,另一方面是顺便解决前面遇到的CPU占用率高的问题。一、mbr1.asm回顾mbr1.asm的代码之前我们介绍过,这里我们回顾一下代码和演示步骤。mbr1.asm代码如下:;生成一个空的MBRtimes510db0;前510个字节全为0db0x55,0xaa;最后两个字节是0x55和0xaa。下面我们来演示:1.启动并登录CentOS在VirtualBox中启动CentOS虚拟机,并用PowerShell登录到CentOS虚拟机。2.创
学习操作系统原理最好的方法是自己写一个简单的操作系统。写程序不免需要调试,写不同的程序调试方式也不同。如果做应用软件开发,相应的程序调试方式是建立在有操作系统支持的基础上的。而我们现在是要开发操作系统,如何调试操作系统的程序呢?如果操作系统程序直接跑在真机上或虚拟机上(比如VirtualBox)是很难调试的,所以我们在开发阶段操作系统程序主要在虚拟机QEMU上跑,因为QEMU支持调试。当然很多事情都是有利也有弊的,QEMU虽然支持调试,但它的运行效率比VitrualBox要低,所以我们最终的GrapeOS程序是跑在VirtalBox上的。QEMU需要结合GDB才能实现调试,下面我们一起来学习一
学习操作系统原理最好的方法是自己写一个简单的操作系统。前面我们介绍过电脑的启动过程:上电->BIOS->MBR(boot)->loader->kernel->交互界面(图形/命令行)本讲我们要介绍的是MBR(MasterBootRecord,主引导记录)。在电脑中对磁盘的读写是按扇区为基本单位的,一般每个扇区为512个字节。也就是说每读一次磁盘,读取的字节数是512字节的整数倍。同样每写一次磁盘,写入的字节数也是512字节的整数倍。MBR是磁盘的第一个扇区,又叫做主引导扇区,特点是最后2个字节的内容必须是0x55和0xAA。下面我们来做几个实验来加深对MBR的了解。1.不加载虚拟磁盘启动QEM
学习操作系统原理最好的方法是自己写一个简单的操作系统。汇编语法主要有两种:Intel语法和AT&T语法。由于大部分介绍x86汇编的书籍和资料用的都是Intel语法,毕竟x86就是Intel发明的,大家学过的x86汇编大概率也是Intel语法,所以GrapeOS的汇编也用Intel语法。支持Intel语法的x86汇编器不止一种,常见的有MASM和NASM。MASM来自微软公司,只能在微软的操作系统Windows和MS-DOS上用。NASM是开源软件,支持多平台。GrapeOS选用NASM。下面介绍一下NASM在Linux上的使用1.首次使用需要先安装yuminstallnasm由于我之前已经安装
学习操作系统原理最好的方法是自己写一个简单的操作系统。在上一讲中我们已经安装配置了开发环境,在本讲中我们来测试一下开发环境是否正常。我们的测试流程如下:1.在VisualStudioCode中编写GrapeOS代码;2.在CentOS中编译GrapeOS代码;3.在QEMU中运行GrapeOS。注意:在本讲中涉及到的代码或操作如有不懂的地方暂时不用管,后面会讲。本讲只是为了测试开发环境是否正常,只要你能跟着做下来就行。下面我们来依次测试这3步流程。1.在VisualStudioCode中编写GrapeOS代码1.1在我们上讲中建立的共享文件夹中新建一个名为“grapeos-course”的文件