【操作系统真象还原】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

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

C++入门01

1、.h和.cpp 源文件 (.cpp)源文件是C++程序的实际实现代码文件,其中包含了具体的函数和类的定义、实现以及其他相关的代码。主要特点如下:实现代码: 源文件中包含了函数、类的具体实现代码,用于实现程序的功能。编译单元: 源文件通常是一个编译单元,即单独编译的基本单位。每个源文件都会经过编译器的处理,生成对应的目标文件。包含头文件: 源文件可以通过#include指令引入头文件,以使

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

SQL Server中,用Restore DataBase把数据库还原到指定的路径

restore database 数据库名 from disk='备份文件路径' with move '数据库文件名' to '数据库文件放置路径', move '日志文件名' to '日志文件存放置路径' Go 如: restore database EaseWe from disk='H:\EaseWe.bak' with move 'Ease