[手写OS]动手实现一个OS 之 准备工作以及引导扇区

news2025/7/13 3:20:39

[手写OS]动手实现一个OS之第一步-环境以及引导扇区

环境准备

  1. 一台可用计算机(linux我不知道,我用的Windows)
  2. 汇编编译器NASM
  3. 一个方便的软盘读写工具
  4. VirtualBox

汇编编译器NASM

官网地址:https://www.nasm.us/pub/nasm/snapshots/latest/win64/(windows的地址)

直接下载地址:https://www.nasm.us/pub/nasm/snapshots/latest/win64/nasm-2.17rc0-20230220-installer-x64.exe (我的版本是 2.17)

下载后得到:

在这里插入图片描述

然后点击安装

选择好你要安装的位置,记住自己安装在哪儿了(之后配置环境变量有用!)

在这里插入图片描述

然后一路 Next

结束后,找到你的软件安装位置

在这里插入图片描述

并设置环境变量(这些步骤就不用讲了吧)

一个方便的软盘读写工具

在linux中有dd命令,windows要下载:[http://www.chrysocome.net/downloads/dd-0.5.zip][http://www.chrysocome.net/downloads/dd-0.5.zip]

解压,准备好其中的dd.exe

Virtual Box

下载地址: https://www.oracle.com/virtualization/virtualbox/

开始

  1. 找一个文件夹,例如我在F盘下有一个MyOS文件夹

    在此处创建一个虚拟磁盘

    在此打开cmd命令窗口 输入 diskpart

    在这里插入图片描述

    弹出窗口

    在这里插入图片描述

    输入create vdisk file="F:\MyOS\dingst.vhd" maximum=10 type=fixed

    解释:

    • file= :创建你的虚拟磁盘位置文件
    • maximum= : 创建10M
    • type=fixed: 固定分区

    执行后可以看到

    在这里插入图片描述

  2. 编写引导扇区汇编文件

    org 07c00h
    mov ax,cs
    mov ds,ax
    mov es,ax
    call Disp
    jmp $
    Disp:
    	mov ax,BootMsg
    	mov bp,ax
    	mov cx,16
    	mov ax,01301h
    	mov bx,000ch
    	mov dl,0
    	int 10h
    BootMsg: db "Hello, My OS!"
    times 510 - ($-$$) db 0
    dw 0xaa55
    

    并保存为 hello.asm

    在这里插入图片描述

  3. 通过之前的汇编器编译该文件

    nasm .\hello.asm -o .\boot.bin

    编译成boot.bin二进制文件

    在这里插入图片描述

  4. 通过软盘读写工具dd.exe将boot.bin写入到dingst.vhd中

    先将dd.exe复制到当前文件夹下

    然后在命令窗口中执行:.\dd if=.\\boot.bin of=.\\dingst.vhd

    在这里插入图片描述

    出现下面的内容说明已经写入成功

使用VirtualBox启动你写的这个系统

打开VirtualBox > 新建

在这里插入图片描述

内存开个4M,不要给自己整复杂了!

在这里插入图片描述

选择已有的虚拟磁盘文件

在这里插入图片描述

在这里插入图片描述

找到你的写好的那个虚拟磁盘文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

然后启动,等待,成功!

在这里插入图片描述

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

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

相关文章

java 中的equals()示例代码

Java中的equals()是十分重要的,和要区别开来简述public booleanequals(Object obj)作用:判断其他的对象是否和该对象相等其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false.简单示例equals()方…

代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

打卡第22天,平衡二叉树,难,难,难。 今日任务 235.二叉搜索树的最近公共祖先701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点 235.二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百…

BeanFactory接口

目录 概述 接口方法 BeanFactory重要的子类 概述 BeanFactory是容器的顶层接口,也是spring最核心的容器,管理bean的核心方法都在BeanFactory接口中定义。像ApplicationContext接口,ConfigurableApplicationContext接口都间接继承BeanFactory接口,既ApplicationContext调用ge…

Wwise集成到unreal

1、Wwise集成到Unreal 1.1 安装必要的软件 安装unreal 5.1;安装Audiokinetic Launcher;集成版本是Wwise 2021.1.12.7973。Audiokinetic Launcher下载地址: https://www.audiokinetic.com/zh/thank-you/launcher/windows/?refdownload&pl…

Go语言学习的第三天--下部分(Gin框架的基础了解)

每天都会分享Go的知识,喜欢的朋友关注一下。每天的学习分成两部分基础(必要的,基础不牢地动山摇),另一部分是Go的一些框架知识(会不定时发布,因为小Wei也是一名搬砖人)。但是可以保证…

哪个牌子的蓝牙耳机最好?质量最好的蓝牙耳机排行榜

随着蓝牙耳机的发展越来越快速,蓝牙耳机市场涌现出五花八门的产品,外观不同、性能不一。最近看到很多人问,哪个牌子的蓝牙耳机最好?接下来,我来给大家推荐几款质量最好的蓝牙耳机排行榜,一起来看看吧。 一…

电商使用CRM系统有什么好处,如何选择

数据显示,使用电商CRM客户管理系统后,企业销售额提高了87%,客户满意度提高了74%,业务效率提高了73%。要在竞争激烈的电商市场取得成功,与目标受众的有效沟通是有效的方法。下面说说什么是电商CRM系统?电商C…

如何使用ArcGIS生成剖面图(附练习数据)

1、概述地形剖面图指沿地表某一直线方向上的垂直剖面图,以显示剖面线上断面地势起伏状况。能够制作剖面图的软件有很多,作为GIS行业的老大,ArcGIS当然也是可以的,这里给大家详细介绍一下ArcGIS中制作剖面图的知识,希望…

2.详解DEBUG模式

文章目录DEBUG模式解决了两个问题四种开启DEBUG的方式第一种第二种第三种第四种DEBUG的PIN码可以在浏览器端调试代码使用(不推荐使用,了解就可以)DEBUG模式解决了两个问题 flask代码中如果出现了异常,我们在浏览器中不会提示具体…

图床搭建,使用typora上传

1. 准备gitee作为图床的仓库 新建仓库 准备仓库的私人令牌,后面配合使用 点击个人设置——》私人令牌 注意私人令牌,复制保存好,后面不能再看了 2. 准备PicGO,并进行相关配置 PicGo官方下载链接 下载安装好node.js,下载网址 安…

【银行测试】必看的四类题型:这可是最经典的一套题目了

目录:导读 一、根据题目要求写出具体LINUX操作命令 二、JMETER题目 三、根据题目要求写出具体SQL语句 四、测试案例设计题 金三银四面试面对大厂面试官提问,如何回答:花3天背完这100道软件测试面试题!银行测试的offer还不是手…

【GO】K8s 管理系统项目34[Linux环境–应用部署]

K8s 管理系统项目[Linux环境–应用部署] 1. 启动数据库 1.1 配置yum仓库 rm -f /etc/yum.repos.d/*.repo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/…

Vue 实现图片监听鼠标滑轮滚动实现图片缩小放大功能

前言 其实想要实现功能很简单,就是在一张图片上监听鼠标滑轮滚动的事件,然后根据上滚还是下滚实现图片的缩放。 效果: 注:该配图使用《漫画|有趣的了解一下赋值、深浅拷贝》文章图片,不存在侵权问题。 实现思路 在…

规划数据指标体系方法(下)——新海盗模型

前面已经跟大家分享了规划数据指标体系的两种方法—— OSM 和 UJM 模型,分别从目标-策略以及用户旅途的角度阐述了规划数据指标体系的过程。今天我来跟大家分享最后一种规划数据指标体系的方法——新海盗模型。 了解新海盗模型 海盗模型,即 AARRR 模型&…

脑机接口科普0014——大脑

本文禁止转载!!!! 在提到脑机接口的时候,不得不提到大脑。 在我们的思维意识中,植物是没有大脑的。这是正确的。 在我们的思维意识中,动物都是有大脑的。 但是很明显,动物都有大…

程序员看过都说好的资源网站,你值得拥有。

程序员必备的相关资源网站一.技术社区1.GitHub2.Gitee(码云)3.稀土掘金4.OSCHINA开源中国5.CSDN6.博客园7.SegmentFault(思否)8.Stack Overflow9.Golang中文社区10.ChinaUnix11.51CTO12.Ruby China二.技术教程1.Devdocs2.码农教程…

案例解读| 从集中告警平台发展趋势看城商行如何落地数字化转型(二)

上期我们以具体案例入手,分享了集中告警平台到底应该与集中监控平台解耦还是紧绑定等问题。这一期依旧从具体案例切入,跟大家一起探索下告警与服务台的对接过程,以及这个过程中可能产生的问题。上期内容,一键回顾不迷路→案例解读…

17万字 JUC 看这一篇就够了(二) (精华)

今天我们继续来学习并发编程 17万字 JUC 看这一篇就够了(一) (精华) 线程池 基本概述 线程池:一个容纳多个线程的容器,容器中的线程可以重复使用,省去了频繁创建和销毁线程对象的操作 线程池作用: 降低资源消耗,减…

网络工程师面试题(面试必看)(1)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.正题 1.TCP UDP协议的区别

YARN基本架构

主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成,如图所YA示。 ResourceManager(RM) RM是全局资源管理器,负责整个系统的资源管理和分配 主要由两个组件构成:Scheduler调度器和应用程序…