【操作系统真象还原】01 Ubuntu环境下配置bochs和nasm

2023-11-05 00:10

本文主要是介绍【操作系统真象还原】01 Ubuntu环境下配置bochs和nasm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

开始学习《操作系统真象还原》这本书,记录一下学习过程。

配置 nasm

nasm 简介

nasm 是一个年轻、开源、免费的汇编器。

安装 nasm

sudo apt install nasm

配置 bochs

选择自行编译 bochs 源码来进行安装。

下载 bochs 源码

下载链接: bochs下载链接
选择下载压缩包: bochs-2.6.1.tar.gz

解压

tar zxvf bochs-2.6.1.tar.gz

生成 MakeFile

bochs有不同的调试方式,可编译成不同的版本。
下面两个任选一个版本安装。
书上推荐使用的是 gdb调试版。但介绍 bochs 调试方法时,用的却是 bochs 提供的debugger。所以我两个版本都有安装。

注意:下面的命令中 --prefix 参数中的 path 需要更换为你想要的安装路径。
生成使用 bochs 提供的debugger的版本

cd bochs-2.6.1
./configure --prefix=path/bochsTwo --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11

生成使用 gdb 进行调试的版本

cd bochs-2.6.1
./configure --prefix=path/bochsTwo --enable-gdb-stub --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11

编译

在终端中输入 make ,回车。
可以看见开始编译。
编译过程

可能会发生的错误

① 缺少头文件 <gtk/gtk.h>
解决方法:sudo apt-get install libgtk2.0-dev
② 缺少 pthread 引用
解决方法:在生成的MakeFile文件中的大概93行,LIBS=... 最后加上-lpthread

安装

make install

编写 bochs 配置文件

我的配置 (path需要替换)

# bochs配置文件
# bochsrc.diskmegs: 32romimage: file=path/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=path/bochs/share/bochs/VGABIOS-lgpl-latestboot: disklog: bochs.outmouse: enabled=0
keyboard_mapping: enabled=1, map=path/bochs/share/bochs/keymaps/x11-pc-us.map
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# 若使用 gdb 调试,则取消下一行的注释
#gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

将配置文件放入 path/bochs/bin 目录中。

制作镜像

cd bochs/bin
./bximage -hd -mode="flat" -size=60 -q hd60M.img

输出
将箭头所指输出添加到你的配置文件中。

开始模拟

cd bochs/bin
./bochs -f bochsrc.disk

bochs界面
选择默认选项 6 开始模拟。因为还没有编写MBR,所以会出现以下界面:
No bootable device

这篇关于【操作系统真象还原】01 Ubuntu环境下配置bochs和nasm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过