动手学操作系统(一、搭建实验环境)

news2024/9/22 15:49:28

动手学操作系统(一、搭建实验环境)

文章目录

  • 动手学操作系统(一、搭建实验环境)
    • 1. 在VMware虚拟机中安装ubuntu20.04
    • 2. 安装Bochs
    • 3. 启动计算机
    • Reference

🚀 环境配置 🚀
笔者的环境使用的是

  • ubuntu 20.04
  • bochs 2.7

这里的ubuntu你可以在虚拟机里安装,也可以安装双系统,也可以是单独的ubuntu系统,这个就看个人的喜好。

针对初学者来说,笔者推荐使用虚拟机平台VMwarewindow环境下来安装ubuntu。
或者可以使用VirtualBoxlinux环境下安装ubuntu。

1. 在VMware虚拟机中安装ubuntu20.04

具体的安装方法可以参考笔者的这篇博客:

【Ubuntu】在VMWare虚拟机中安装Ubuntu20.04【教程】

安装完毕后,需要安装一些别的依赖

# 安装gcc
sudo apt-get install gcc
# 安装一些套件
sudo apt install build-essential
# 安装nasm
sudo apt-get install nasm

2. 安装Bochs

Bochs 是一个开源的 x86 和 x86-64 计算机仿真器(Emulator),用于模拟 Intel x86 CPU、常见的设备和外设、以及完整的 PC 系统。它允许用户在不同的操作系统环境中运行各种操作系统,并且可以用于开发、调试和学习目的。Bochs 提供了一个高度可配置和可移植的仿真环境,开发者可以用它来测试和调试操作系统的代码。它支持单步执行和断点设置,使开发者能够深入分析操作系统的行为。开发人员可以在 Bochs 中测试他们的软件,特别是在不同硬件配置和操作系统环境下的兼容性。通过仿真不同的硬件配置,开发者可以发现并解决潜在的问题。

首先进入Bochs官网:Bochs

选择bochs-2.7.tar.gz,然后下载

Image

下载完毕后,进行解压

tar -zxvf bochs-2.7.tar.gz 
cd bochs-2.7

然后配置bochs

sudo ./configure --enable-debugger --enable-disasm --prefix=/home/your_usr_name/bochs --enable-iodebug --enable-x86-debugger --with-x --with-x11

记得将your_usr_name替换为你的用户名,然后进行编译和安装

make
make install

如果安装顺利的话,会安装到路径/home/your_usr_name/bochs

3. 启动计算机

bochs内置了一个创建硬盘的工具bximage,这个工具放置在路径/home/your_urs_name/bochs中,我们运行这个工具就可以很方便地按照其提示来创建一个硬盘。

cd /home/your_usr_name/bochs
./bximage
Image
  • 首先,选择1创建新的硬盘
  • 然后,选择创建的类型是floppy软盘fd还是hard硬盘hd
  • 然后,选择硬盘的类型flat
  • 然后,指定每个硬盘的扇区有多少字节512
  • 然后,选择硬盘的容量大小为多少MB60
  • 最后,给硬盘取名字hardisk60MB.img
Image

然后我们就可以编写启动文件了,这里命名为iebochsrc.disk,后缀.disk表示此配置文件的内容是从硬盘启动,不使用这个后缀也没关系。

cd /home/your_usr_name/bochs/bin
gedit bochsrc.disk

然后写入以下的内容,记得将your_usr_name更改为你的用户名。

# 设置内存为32MB
megs: 32

# 设置对应机器的BIOS
romimage: file=/home/your_usr_name/bochs/share/bochs/BIOS-bochs-latest 
# 设置对应机器的VGA BIOS
vgaromimage: file=/home/your_usr_name/bochs/share/bochs/VGABIOS-lgpl-latest 

# 选择启动盘符,默认为从软盘启动,但是这里设置为硬盘,软盘太古老了
boot: disk 

# 设置日志文件的输出
log: bochs_out.log

# 关闭鼠标功能,打开键盘功能,并且设置键盘的映射
mouse: enabled=0 
keyboard: keymap=/home/your_usr_name/bochs/share/bochs/keymaps/x11-pc-us.map 

# 硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 
ata0-master: type=disk, path="/home/your_usr_name/bochs/bin/hardisk60MB.img", mode=flat

使用bochs开始模拟

cd /home/your_usr_name/bochs
./bochs -f bochsrc.disk

这里的-f用于指定启动的配置文件,就是我们刚才配置bochsrc.disk。运行的效果如下,由于我们没有编写BootLoader所以自动报错退出了。
在这里插入图片描述

Reference

[1]《一个64位操作系统的设计与实现》
[2]《操作系统真象还原》
[3] 手写简易操作系统

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

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

相关文章

计算机图形学入门Games101笔记01:Overview of Computer Graphics

第一章讲述了计算机图形学是什么和GAMES101会讲什么 1.What is Computer Graphics? The use of computers to synthesize and manipulate visual information. 图形学是合成和操纵视觉信息的计算机应用。 百度百科:计算机图形学(Computer Graphics,简…

从零开始:如何集成美颜SDK和优化美颜接口

今天,小编将从零开始,详细讲解如何集成SDK并优化美颜接口。 一、选择合适的美颜SDK 评估SDK的功能 在评估过程中,可以通过阅读官方文档、查看示例代码以及实际测试来确定SDK是否符合需求。 兼容性和性能 确保其支持你开发的应用平台&…

开发多个工具包的黑产团伙GXC正在积极拥抱AI技术

研究人员发现一个名为 GXC Team 的犯罪团伙,该团伙专门开发用于网上银行盗窃、电子商务欺诈与互联网诈骗的工具。2023 年 11 月 11 日,该组织以别名 googleXcoder 在暗网上发布多项公告。开始售卖新开发的结合人工智能的工具,用于创建用于电汇…

【必备工具】gitee上传-保姆级教程

目录 1.gitee是什么 2.gitee怎么注册 ​编辑 3.gitee怎么提交代码 4.gitee的三板斧 Clone仓库 Q&A 1. Gitee 只有三板斧吗? 2. Git 教了,Gitee 上没有绿点怎么办? 3. 用户名和密码输入错误怎么办? 4. 操作时不小心…

0成本的副业兼职,咸鱼监督打卡,新手小白也能一天100+

这两天在咸鱼上闲逛,看到有个项目很有意思,监督别人打卡赚服务费,每天轻松收入100。 周周近财:让网络小白少花冤枉钱,赚取第一桶金 这种监督打卡服务并非新颖的商业模式,实际上在很久以前,许多…

美业SaaS收银系统源码-已过期卡项需要延期怎么操作?美业系统实操

美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 1.询问会员手机号和需要延期的卡项 2.PC运营后端-数据导入-修改已售卡项,搜索手机号 3.把需要卡项选…

Oracle 序列-SEQUENCE

文章目录 序列-SEQUENCE创建序列访问序列序列的修改和删除查询序列信息 序列-SEQUENCE 创建序列 访问序列 序列的修改和删除 DROP SEQUENCE SEQ_EKPO;查询序列信息 可以通过视图 dba/all/user_sequences 查询序列的相关信息 SELECT SEQUENCE_NAME FROM DBA_SEQUENCES WHERE …

穿越时空的工厂之旅:探索可视化三维场景的奥秘

在科技日新月异的今天,我们似乎总是在不断追求着更加高效、智能的生产方式。 传统的工厂管理方式往往依赖于平面图纸、纸质文档和现场巡查,这不仅效率低下,而且容易出错。而三维可视化技术通过3D建模和虚拟现实技术,将工厂内部的各…

[企业级高效系统工具]短视频矩阵系统 ,一站式管理新媒体账号,短视频精准获客,一键管理上千个短视频账。

一、做项目为什么要搭建一款属于自己的系统? 在讲这个短视频矩阵系统前,我们聊聊做项目的时候为什么要搭建一款属于自己的系统。 1.拥有自己的系统,就意味着你可以随时随地进行源码部署和更新。你的项目就能紧跟时代潮流,始终保持…

嵌入式进阶——RTC时钟

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 RTC时钟原理图PCF8563寄存器控制与状态寄存器 设备地址I2C环境初始化RTC寄存器数据读取RTC寄存器数据写入RTC闹钟设置RTC定时器设置…

Linux 使用 yum安装 ELK服务,yum 安装elasticsearch和Kibana(未写完)

文章目录 环境准备ELK组件介绍安装Elasticsearch安装Kibana 丢弃下载ELK 服务安装包Elasticsearch安装 Tips:关闭elasticsearch https 环境准备 ELK组件介绍 ElasticSearch : 是一个近实时(NRT)的分布式搜索和分析引擎,它可以用…

学术图表的基本配色方法

不论是商业图表还是专业图表,图表的配色都极其关键。图表配色主要有彩色和黑白两种配色方案。刘万祥老师曾提出: “在我看来,普通图表与专业图表的差别,很大程度就体现在颜色运用上。” 对于科学图表,大部分国内的期…

【Unity之FGUI】黑神章Fairy GUI控件详解

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:就业…

【MATLAB】基于VMD-SSA-GRU的回归预测模型

有意向获取代码,请转文末观看代码获取方式~ 1 基本定义 基于VMD-SSA-GRU的回归预测模型是一种集成了变分模态分解(VMD)、同步滑动平均(SSA)和门控循环单元(GRU)的复杂时间序列预测方法。下面将…

SaaS产品如何借助分销裂变实现爆发式增长?

在SaaS市场中,如何通过有效的推广方式实现产品的快速增长是每个企业都在思考的问题。分销裂变作为一种新兴的推广方式,以其低成本、高效率的特点,为SaaS产品的增长提供了新的可能。 一、分销裂变的基本原理 分销裂变是通过设置一定的奖励机…

一招搞定!家里灰尘多?教你如何轻松清理,推荐必备神器

在现代生活中,灰尘无处不在,特别是在大城市,空气中的污染物更多,导致家里的灰尘积聚速度加快。保持家居环境的干净和整洁不仅能提升生活质量,还能保护我们的健康。作为一名家电博主将为你提供详细的家里灰尘清理方法&a…

抖音里卖什么最赚钱?4个冷门的高利润商品,还有谁不知道!

哈喽~我的电商月月 做抖音小店的新手朋友,一定很想知道,在抖音里卖什么最赚钱? 很多人都会推荐,日常百货,小风扇,女装,宠物用品等等,这些商品确实很好做,你们可以试试 …

【跟着例子学MySQL】SQL进阶 -- 子查询和时间

文章目录 前言回顾子查询日期和时间未完待续 前言 举例子,是最简单有效的学习方法。本系列文章以一个贯穿始终的场景,结合多个实例讲解MySQL的基本用法。 ❔ 为什么要写这个系列? 模仿是最好的老师,实践是检验成果的方法。本系列…

c语言从入门到函数速成(完结篇)

哈喽,小伙伴们大家好呀,本篇文章是这个系列的完结篇,希望大家看完后能有所收获哦 首先能看到这里的同学,一定也是自觉性比较强的了,我会在文章末尾给大家发点小福利 那么,我们先来通过数学中的函数来引入一…

neo4j docker安装使用,py2neo python包使用

参考:https://neo4j.com/docs/operations-manual/current/docker/introduction/ 运行: docker run --publish7474:7474 --publish7687:7687 neo4j查看: http://192***ip:7474 username/password 都是 neo4j/neo4j 简单案例 创建例子&am…