[Orange'S:一个操作系统的实现]bochs下安装freedos

2023-10-09 21:50

本文主要是介绍[Orange'S:一个操作系统的实现]bochs下安装freedos,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

// 加了图

在进行保护模式的运行环境配置前,先看了了下书上的代码,编译运行结果如下:nasm 3_pmtest1.asm -o pmtest1.bin,可以看到界面出现了红色的 p 字

                  

保护模式环境配置

1:在网站http://bochs.sourceforge.net/guestos/freedos-img.tar.gz 上下载FreeDos,

       采用tar vxzf   FreeDos.img.tar.gz 解压

       ~$ cd freedos-img      //进入文件夹   之后将a.img的文件重命名为freedos.img,将其复制到bochs工作的当前文件夹,

2:采用上节的方法用~$ bximage  生成一个新的软盘映像 起名为pm.img           //步骤同上次一样,唯一不同的就是上次生成的文件名a.img直接回车了,这次需要输入pm.img

      此时当前工作目录下就多了一个pm.img文件

3:修改当前工作目录下的bochsrc配置文件

      增加如下几行:

      floppya: 1_44="freedos.img", status=inserted

      floppyb: 1_44="pm.img", status=inserted

      boot: a

4:启动bochs,终端操作步骤与bochs界面显示如下,终端一次输入:

     ~$ bochs  -f  bochsrc--------->选择6------------输入c

                 

5:  此时需要需要启动freedos(用bochs启动)格式化B盘(格式化完成后退出bochs),界面如图:

                     

如果之前已经格式化一次了,出现问题了,这时,你可能打算吧前边的步骤重新操作,重新操作的界面显示如下:

                

6:将文章开头的代码3_pmtest1.asm中的0x7c00改为0100h,重重新编译

                 nasm 3_pmtest1.asm  -o pmtest1.com

7:将pmtest1.com复制到虚拟软驱pm.img中,具体操作步骤如下:(如下的操作都在当前工作文件夹下,文章中是在。。。。/bochs-2.6中)

                 1) sudo mount -o loop pm.img /mnt/floppy/

                 2)  sudo cp pmtest1.com /mnt/floppy/

                 3)  sudo umount /mnt/floppy

                 经常出现的错误是:

                 Q:一直提示“mount: 您必须指定文件系统类型”,

                 A:可能是因为没有成功的进行上边的步骤5,即没有进行格式化的原因,可以参考:http://blog.csdn.net/wuchunlong3352/article/details/6347325

 

                 Q:mount:挂载点/mnt/floppy不存在

                 A:不存在的话,那就在/mnt目录下创建一个floppy

                         mkdir    /mnt/floppy

 8:启动freedos,在B盘符下输入pmtest1.com,最终界面显示如下:

https://www.xuebuyuan.com/1861379.html

这篇关于[Orange'S:一个操作系统的实现]bochs下安装freedos的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/175782

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3