当前位置: 首页 > news >正文

《ORANGE‘s 一个操作系统的实现》-- ubuntu14.04下bochs2.3.5的配置与使用

ubuntu14.04下bochs2.3.5的配置与使用

云平台:阿里云
操作系统:ubuntu14.04
bochs:2.3.5

本篇博客来源于本人在按照《ORANGE’S 一个操作系统的实现》配置环境时遇到的问题,遂发出来分享

安装过程中如果遇到权限问题,请使用sudo

安装图形化界面

安装ubuntu图形化界面

apt-get update
apt-get install vnc4server
apt-get install xfce4
apt-get install ubuntu-desktop
sudo apt-get install xrdp

允许图形化界面root登录

如果发现图形化界面登录只可以使用guest登录,则使用如下方法

打开50-unity-greeter.conf

cd /usr/share/lightdm/lightdm.conf.d/
vim ./50-unity-greeter.conf

修改配置文件,在文件中添加下面三行语句

user-session=ubuntu
greeter-show-manual-login=true
all-guest=false

打开.profile文件

vim /root/.profile

.profile文件最后一行修改为

tty -s && mesg n  || true

重启

reboot

随后便可以使用VNC登录的方式进入服务器

安装bochs

下载bochs

点击链接,下载bochs-2.3.5.tar.gz

如果无法下载,可以使用如下的百度网盘链接(提取码:groy)

安装依赖环境

sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install bison
sudo apt-get install libgtk2.0-dev
sudo apt-get install g++

解压

tar vxzf bochs-2.3.5
cd bochs-2.3.5

配置

./configure --enable-debugger --enable-disasm
配置过程出错

配置过程如果报错

ERROR: X windows gui was selected, but X windows libraries were not found.

编辑configure配置文件

vim configure

在配置文件内寻找

echo ERROR: X windows gui was selected, but X windows libraries were not found.
exit 1

exit 1注释掉

echo ERROR: X windows gui was selected, but X windows libraries were not found.
#exit 1

make

make前需要修改bx_debug/symbol.cc的代码

打开symbol.cc
vim bx_debug/symbol.cc
编辑symbol.cc

在97行左右添加如下代码

using namespace std;#ifdef __GNUC__ //修改
using namespace __gnu_cxx; //修改
#endif //修改struct symbol_entry_t
安装
make install

安装nasm

apt-get install nasm

测试

asm源码及编译

在你的项目文件下建立boot.asm文件

org	07c00h			; 告诉编译器程序加载到7c00处mov	ax, csmov	ds, axmov	es, axcall	DispStr			; 调用显示字符串例程jmp	$			; 无限循环
DispStr:mov	ax, BootMessagemov	bp, ax			; ES:BP = 串地址mov	cx, 16			; CX = 串长度mov	ax, 01301h		; AH = 13,  AL = 01hmov	bx, 000ch		; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)mov	dl, 0int	10h			; 10h 号中断ret
BootMessage:		db	"Hello, OS world!"
times 	510-($-$$)	db	0	; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 	0xaa55				; 结束标志

编译

nasm boot.asm -o boot.bin

制作镜像

生成镜像文件
bximage

第一步选fd,其余默认即可

会在你的项目文件下方生成a.img软盘镜像

写入引导区
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
生成bochsrc

在本项目文件的目录下生成bochsrc,作为配置文件

#how much memory the emulated machine will have
megs: 32#filename of ROM images
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest#what disk images will be used
floppya: 1_44=a.img, status=inserted#choose the boot disk
boot: floppy#where do we send log messages?
log: bochsout.txt#disable the mouse
mouse: enabled=0#enable key mapping, using US layout as default.
keyboard_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map

注意romimage vgaromimage keyboard_mapping要依照你的服务器中对应文件的路径填写,需要自己去找具体文件地址

运行

此步需要用图形化界面登录

bochs -f bochsrc

输入回车

调试界面按c回车,若虚拟机上显示Hello, OS world!则配置成功

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【第34章】Spring Cloud之SkyWalking分布式日志
  • JVM四种垃圾回收算法以及G1垃圾回收器(面试)
  • 今日leetCode 242.有效的字母异位词
  • 云服务器部署DB-GPT项目
  • .Net 执行Linux下多行shell命令方法
  • 无线领夹麦克风哪个牌子好,口碑最好的麦克风品牌,领夹麦推荐
  • 什么是数据资源?
  • ImportError: DLL load failed while importing _ssl: 找不到指定的模块的解决方法
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • 大模型从失败中学习 —— 微调大模型以提升Agent性能
  • 【贪心算法】贪心算法
  • 油耳用什么掏耳朵比较好?可视挖耳勺推荐平价
  • 【linux】 cd命令
  • DMA与AXI DMA ip
  • 【干货分享】Ftrans安全数据交换系统 搭建跨网数据传输通道
  • 【node学习】协程
  • 230. Kth Smallest Element in a BST
  • CentOS 7 修改主机名
  • conda常用的命令
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Invalidate和postInvalidate的区别
  • js ES6 求数组的交集,并集,还有差集
  • Laravel Telescope:优雅的应用调试工具
  • pdf文件如何在线转换为jpg图片
  • python学习笔记 - ThreadLocal
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Vue--数据传输
  • vue--为什么data属性必须是一个函数
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 力扣(LeetCode)22
  • 前端面试题总结
  • 转载:[译] 内容加速黑科技趣谈
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #HarmonyOS:Web组件的使用
  • #QT(一种朴素的计算器实现方法)
  • (pycharm)安装python库函数Matplotlib步骤
  • (SERIES12)DM性能优化
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (汇总)os模块以及shutil模块对文件的操作
  • (接口封装)
  • (论文阅读40-45)图像描述1
  • (一)Java算法:二分查找
  • (转)linux 命令大全
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET 材料检测系统崩溃分析
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET下的多线程编程—1-线程机制概述
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET与 java通用的3DES加密解密方法
  • @Conditional注解详解