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

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

文章目录

  • 动手学操作系统(一、搭建实验环境)
    • 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] 手写简易操作系统

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

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

相关文章

python多线程的使用

Python 多线程探索 在 Python 编程中,多线程是一项强大的技术,它允许我们同时执行多个任务,从而提高程序的效率和响应性。 一、线程的基本概念 线程是进程中的一个执行单元,可以与其他线程共享进程的资源。 二、创建线程 在 P…

Linux:confluence8.5.9的部署(下载+安装+破ji)离线部署全流程

0.环境 Confluence也是比较吃运存了,我建议运行运存给到4g或者4g以上就可以了,核数可以给到1核或以上 我部署在centos7.9操作系统上,ip地址为:192.168.6.1,yum仓库使用的是自己的镜像文件,本章所有使用到…

爱普生XC1011SD为电气稳定控制系统组合式传感器推出解决方案

在现代电力系统中,确保系统的安全和稳定运行至关重要。为了应对这一需求,我们推出了XC1011SD组合式传感器解决方案,它专为电气稳定控制系统设计,提供了卓越的性能和可靠性。 XC1011SD是一款集成陀螺仪传感器和双轴加速度计于一体的…

炸裂!AI五分钟模仿爆款IP故事,涨粉速度太绝了!

‍ ‍大家好,我是向阳。 今天我要分享一个利用AI技术模仿爆款账号的小技巧,帮助大家迅速增加粉丝。这个方法简单实用,尤其适用于副业和本地生活领域。接下来,我将为大家详细讲解操作步骤。让我们开始吧。 副业赚钱:模…

合约构成-成员变量、函数、事件event、修饰器modifier及构造函数

合约的基本结构 合约中的成员变量合约中的成员函数Event(事件)、modifier(修饰器)与constructor(构造函数:实例产生的时候执行) Event事件 modifier construcor 1、成员变量 概念:存储合约状态的变量 声明方法&a…

北京证券公司港股通交易佣金手续费最低是多少?万0.8?港股通纳入规则是怎么样的?

港股通交易佣金概述 港股通的交易佣金可能会因证券公司和投资者的不同而有所差异。 北京证券公司的港股通交易佣金最低可能万分之零点八(0.008%),但这需要投资者与证券公司客户经理了解,进行沟通和申请。 一般来说,…

CSS学习笔记:Less

什么是Less? Less是一个CSS预处理器, Less文件后缀是.less 扩充了CSS 语言,使CSS具备一定的逻辑性、计算能力 可以通俗地理解:Less是一种更好用的CSS 注释 运算 嵌套 Less嵌套的作用:快速生成后代选择器 变量 问…

软考中级-软件设计师-真题详解【2023年上半年】

2023上半年真题记忆点详解 本片不涉及解题法,只整理记忆背诵点,记住即可拿分。 上午题部分: 片内总线:用于芯片内部各主要部件连接; 系统总线:用于CPU、主存、外设见的数据传输; 通讯总线&…

04 FreeRTOS 队列(queue)

1、队列的特性 队列可以理解为一个传送带,一个流水线。 队列可以包含若干个数据:队列中有若干项,这被称为"长度"(length) 每个数据大小固定 创建队列时就要指定长度、数据大小 数据的操作采用先进先出的方法(FIFO,First…

干货分享 —— 如何开展web项目自动化测试!

前言 自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人直接参与的情况下,根据人的要求,通过自动检测、信息处理、分析判断、操纵和控制,达到预期目标的过程。自动化测试是指测试过程是在没有人为或较少人为干预…

从零构建vue3+ts+vite项目打包及项目依赖配置

❗️❗️❗️❗️ 写在最前: 本文是根据B站作者 月光分层 视频vuets 工程化配置以及作者笔记稍作整理 💖💖作者B站地址https://space.bilibili.com/14110850 💖💖视频教程地址vuets 工程化配置 💖💖作者微信…

【计算机毕业设计】安卓054基于Android校园助手

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

LAMP源码编译安装——CentOS7

文章目录 LAMP是什么LAMP软件组件LinuxApacheMySQLPHP 源码安装Apache一、准备工作二、安装环境依赖包三、配置软件模块四、编译及安装五、优化配置文件路径六、添加httpd系统服务(有两种方法)方法一:方法二: 七、修改httpd 服务配…

公告:关于博主的重要通知

大家好,我是博主夏目。 本期不分享知识,博主想说明一下博主的一些重要提示。 分享的内容,从不收费,也未向任何人进行收费。 意在分享知识,传播文化,结交更多志同道合的朋友。 截至目前,从未…

《C++ Primer Plus》第十二章复习题和编程练习

目录 一、复习题二、编程练习 一、复习题 1. 假设String类有如下私有成员: // String 类声明 class String { private: char* str;int len;// ... };a. 下述默认构造函数有什么问题? String::String() { } // 默认构造函数b. 下述构造函数有什么问题…

VirtualBox+Ubuntu22.10+Docker+ROS2

Docker 拉取ros2镜像 docker pull osrf/ros:foxy-desktop 运行 docker run -it --nameros2 -p 50022:22 osrf/ros:foxy-desktop 进入容器安装组件 apt-get update apt-get install vim apt-get install git apt-get install net-tools # 安装ssh apt-get install openssh…

centos下给es7.12.1设置密码

安装可参考: centos7下安装elasticsearch7.8.1并配置远程连接_在一台服务器centos7上安装和配置elasticsearch。-CSDN博客 1、先停掉es进程 2、设置输入密码后访问配置 cd /home/soft/elasticsearch-7.12.1/config vim elasticsearch.yml 3、启动es服务 cd /home/…

香橙派 AIpro开发板初上手

一、香橙派 AIpro开箱 最近拿到了香橙派 AIpro(OrangePi AIpro),下面就是里面的板子和相关的配件。包含主板、散热组件、电源适配器、双C口电源线、32GB SD卡。我手上的这个是8G LPDDR4X运存的版本。 OrangePi AIpro开发板是一款由香橙派与华…

在Python中实现限定抽奖次数的机制

目录 一、引言 二、需求分析 三、设计思路 四、代码实现 4.1 使用字典存储用户抽奖次数 4.2 使用数据库存储用户抽奖次数 五、扩展与优化 六、总结 一、引言 在当今互联网应用中,抽奖系统作为吸引用户、提高用户参与度和活跃度的重要手段,已经被…

为什么配置了安全组还是有攻击进来?

面对DDoS攻击,即使配置了安全组规则来限制入站流量,攻击者仍可能找到绕过这些基本防护措施的方法,尤其是当攻击流量巨大时。这是因为安全组主要工作在网络层和传输层,它们依据IP地址、协议和端口号来过滤流量,对于应用…