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

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

文章目录

  • 动手学操作系统(一、搭建实验环境)
    • 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【教程】

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

# 安装c语言编译器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。然后再按照提示按下6c

运行的效果如下,由于我们没有编写BootLoader所以自动报错退出了。

在这里插入图片描述

Reference

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习sam的过程

一、抓包 我平时都是用花瓶去抓包的,配置也很简单。就是下载软件,然后一步步安装。下载地址:Download a Free Trial of Charles • Charles Web Debugging Proxy 。然后配置手机代理 对于那些走http协议的app是可以的,https的还是…

Linux 系统编程笔记--基本概念(一)

操作系统: 管理计算机硬件和软件资源的计算机程序。 内核: 操作系统的核心,是应用程序连接硬件设备的桥梁。 CPU 可以在两种状态下运行:用户态和内核态,在用户态下运行时,CPU 只能访问用户空间的内存;在内核态运行时&…

kafka-守护启动

文章目录 1、kafka守护启动1.1、先启动zookeeper1.1.1、查看 zookeeper-server-start.sh 的地址1.1.2、查看 zookeeper.properties 的地址 1.2、查看 jps -l1.3、再启动kafka1.3.1、查看 kafka-server-start.sh 地址1.3.2、查看 server.properties 地址 1.4、再次查看 jps -l 1…

【数据分享】2017-2023年全球范围10米精度土地覆盖数据

土地覆盖数据是我们在各项研究中都非常常用的数据,土地覆盖数据的来源也有很多。之前我们分享过欧空局发布的2020年和2021年的10米分辨率的土地覆盖数据,也分享过我国首套1米分辨率的土地覆盖数据(均可查看之前的文章获悉详情)! …

Kunpeng Pro测评使用报告

1. 概述 前段时间,收到两条CSDN的短信,邀请我参加Kunpeng Pro的测评活动。说起来,自己玩过的开发板已经不在少数,而自己作为半导体行业的从业者,手上开发过的芯片也有十几款,小到Arm Cortex-A53&#xff0…

老年人健康管理系统项目部署【linux】

老年人健康管理系统项目部署【linux】 前言版权推荐老年人健康管理系统项目部署购买阿里云服务器开发票连接开放端口 安装软件查看状态1更新yum源2安装jdk83安装mysql4上传Mysql数据5安装redis6安装kakfa7安装nginx8运行命令 命令汇总1更新yum源2Jdk8安装3Mysql安装4Mysql数据5…

SpringBoot——集成Spring Data JPA保存数据

目录 JPA 项目总结 新建一个SpringBoot项目 pom.xml application.properties配置文件 User实体类 UserRepository接口 SpringbootJpaApplicationTests测试类 测试 JPA 项目在运行过程中会产生很多业务数据,一般我们把数据保存起来的这个过程称为数据持久化。…

【C++】牛客——JZ38 字符串的排列

✨题目链接: JZ38 字符串的排列 ✨题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数…

灯下黑”挖出国内知名安全平台某BUF的CSRF漏洞

漏洞复现: 漏洞点在删除文章的地方,首先为了测试先发布一篇文章 发布之后我们可以查看文章,注意url中的一串数字,就是这篇文章的id,如下如: 这里的文章id是“271825”,首先抓一下删除文章的数据…

转行嵌入式,需要自学多久?

那要看你的预期目标是什么。如果你只是为了找到一份工作,那么学习半年左右,掌握基本的开发技能,就可以找到一个初级岗位的工作,工资在 5K 到 10K 左右。不过,运气好的话可能时间更短,运气差的话可能需要一年…

基于PHP+MySQL组合开发的微信小程序分销商城源码系统 分销商城+积分商城+多商户 功能强大 带完整的安装代码包以及搭建教程

系统概述 在当今数字化商业时代,拥有一个强大而多功能的分销商城系统对于企业的发展至关重要。本文将重点介绍基于 PHPMySQL 组合开发的微信小程序分销商城源码系统,它融合了分销商城、积分商城和多商户等功能,不仅功能强大,还提…

小苯的排列构造,小苯的01背包(easy),小苯的01背包(hard)

小苯的排列构造 题目描述 运行代码 #include<bits/stdc.h> using namespace std; typedef long long ll; #define N 1000050 int i,j,k,n,m,t,a[N],b[N],f[N],l[N]; bool v[N]; int main(){cin>>n;for(i1;i<n;i)cin>>a[i];v[0]1;for(i1;i<n;i){if(a[…

Windows下PostgreSQL数据库的备份与恢复

文章目录 一、备份1.找到PostgreSQL的安装目录下的"bin"目录2.在windows的命令窗口里&#xff0c;使用pg_dump进行备份1.打开命令窗口2.使用pg_dump将数据库备份下来 二、恢复1.找到PostgreSQL的安装目录下的"bin"目录2.在windows的命令窗口里&#xff0c;…

GD32F103系列单片机片上FLASH和ARM介绍

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 后续项目主要在下面该专栏中发布&#xff1a; 手把手教你嵌入式国产化_不及你的温柔的博客-CSDN博客 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转&#xff1a; 手把手教你嵌入式国产化-实战项目-无刷电机驱动&am…

移动硬盘未格式化数据恢复及预防策略

随着数字化时代的到来&#xff0c;移动硬盘作为数据存储的重要载体&#xff0c;被广泛应用于个人和企业中。然而&#xff0c;当移动硬盘遭遇“未格式化”的困境时&#xff0c;其中的数据便岌岌可危。本文将深入探讨移动硬盘未格式化的现象、原因、数据恢复方案以及预防措施&…

男士内裤哪种款式舒服?五条实用技巧让你轻松挑选

对于很多男生来说&#xff0c;依然很难挑到真正舒适的内裤。比如卡臀卡裆&#xff0c;走路时不时还得提拉一下&#xff0c;真的很尴尬。又紧又闷的内裤&#xff01;尤其是炎热的夏天&#xff0c;黏糊糊的贼难受&#xff01;到底有没有一款舒适透气男士内裤呢&#xff1f;那今天…

C++之类(class)的三种成员修饰符(public、private、protected)总结

1、背景介绍 在C中&#xff0c;类&#xff08;class&#xff09;的三种访问修饰符&#xff08;access specifiers&#xff09;用于控制类的成员&#xff08;属性和方法&#xff09;的访问权限。这些修饰符决定了类成员在类的外部是否可以被访问。以下是这三种访问修饰符的详细…

端午节粽子龙舟主题互动趣味小游戏效果是什么

端午三天乐&#xff0c;无论节日当天还是之前&#xff0c;行业商家都可以自己的品牌为主借势营销&#xff0c;趣味活动形式玩法和内容呈现达成多种效果&#xff0c;品牌传播、公众号涨粉、线下互动、商品促销、用户促活等。 在【雨科】平台拥有多款端午节互动小游戏类型&#…

Ubuntu/Linux 安装Paraview

文章目录 0. 卸载已有ParaView1. 安装ParaView1.1 下载后安装 2.进入opt文件夹改名3. 更改启动项4. 创建硬链接5. 添加桌面启动方式6. 即可使用 0. 卸载已有ParaView YUT 1. 安装ParaView https://www.paraview.org/ 1.1 下载后安装 找到下载的文件夹&#xff0c;文件夹内…

SAP锁机制(SAP Locks)经验小结

1. 数据一致性与锁 为什么要有锁机制&#xff1f;其背后的核心逻辑在于“保证数据的一致性”。 当数据被应用程序修改时&#xff0c;我们必须要保证修改后的数据具有一致性。在SAP系统中&#xff0c;将一致的数据状态从一个状态变动到另一个一致状态的时间跨度被称为LUW&…