关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
Linux上bochs虚拟机的用法
[复制链接]
作者:
午夜De凶手
版块:
›
嵌入式操作系统
›
linux
发布时间:
2021-1-4 17:25:16
1100
0
返回列表
午夜De凶手
当前离线
注册会员
注册会员, 积分 80, 距离下一级还需 120 积分
注册会员
注册会员, 积分 80, 距离下一级还需 120 积分
积分
80
发消息
楼主
电梯直达
午夜De凶手
发表于 2021-1-4 17:25:16
|
只看该作者
|
倒序浏览
|
阅读模式
bochs虚拟机,是个CPU模拟器,用于模拟各种型号的CPU的运行状态,是“21天学写操作系统”的必备工具,可以简单模拟一下文章操作系统的启动过程的过程。
它的官网首页长这样,
地址:bochs.sourceforge.net。
现在最新版本是bochs-2.6.11。
下载它的源码包(tar文件),用tar命令解压之后获得源码,然后配置、编译、安装之后就可以使用了。
编译安装的方法与Linux其他源码包差不多,配置项可以打开下图这几个:
x64支持、调试功能、反汇编功能、多核CPU支持。
其中调试和反汇编是必须要打开的,否则没法调自己写的代码。
在bochs源码目录有一个文件.bochsrc,这个是它运行时的配置文件。
文件里有注释,哪一项是做什么的。
如下几张图的红字和绿字是修改的地方。
cpu:配置模拟的CPU信息,其中count是CPU核数,超过1个就是SMP架构。
cpuid:配置CPU指令集信息。
配置从软盘启动,a.img文件是我们制作的虚拟软盘镜像,把它放在bochs源码的根目录下。
把默认的硬盘启动disk改为软盘floppy。
这种玩具系统的代码很少,编译之后不会超过1.44M,使用软盘就行,而且简单。
把硬盘和声卡的配置全注释掉了。
floppy_bootseg_check:表示是否检查第一扇区MBR结尾的0xAA55标志,这里打开它。
然后写一个最简单的引导扇区代码,见下图。
BOOTSEG设置为0x07c0,表示MBR加载的段基址,左移8位就是0x7c00。
这是一段16位汇编,要加.code16。
ljmp,long jmp,长跳转指令,在段间跳转时使用这个指令,段内跳转使用jmp。
常量的引用要加$符号,第13行的跳转是个while(1);死循环,让程序一直停在12、13行。
最后用.org 510设置结尾标志的偏移量,和结尾标志:低位在低字节。高位在高字节,所以55在前,AA在后。
把这些代码放在文件boot.s里,编译成直接二进制文件,也就是除了可执行代码之外没有格式信息、调试信息等额外信息的文件。
先用as编译,然后用objcopy转化为直接二进制文件,最后使用Linux的dd命令传递到软盘镜像文件的第一个扇区(即前512个字节),见下图。
objdump只是为了打印指令信息。
dd的if表示输入文件,input file。
of表示输出文件,output file。
bs是扇区大小512字节。
count是扇区个数,这里只有1个。
在电脑上使用dd命令时,尤其是带着sudo在root权限下时,千万别把of设置到硬盘!!!
bochs -f .bochsrc命令启动前面写的MBR代码,如下是效果图。
bochs的b命令是打断点,与gdb里的用法一样。
c命令是继续运行,与gdb里也一样。
断点打在0x7c00,即MBR的加载地址。
s命令是单步执行一条汇编指令,与gdb里的stepi一样。
现在程序就在那里跳来跳去了。
jmp -2就是while(1);死循环,因为翻译的指令只有2个字节,回跳2个字节就是再执行本条指令,继续回跳继续再执行,就循环起来了。
这篇文章的步骤,应该有很多人讲过的,属于学写操作系统的第一步。
接下来再添加内容,就可以慢慢完善了。
OS还是比编译器容易入门的,没有像语法分析这种纠结的东西,也不需要懂各种图的算法。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
独立主机网站转移操作方式
•
Linux查看环境变量当前信息和查看命令
•
Linux操作系统应用试题
•
DBA常用Linux命令
•
LinuxPC登陆天河二号基础操作
•
欲学鸿蒙必先懂Linux:逐项分析Linux目录树的5类18项构成
•
618在某宝上花298买来的Linux全解笔记,感觉4年Linux都白学了
•
【工程师分享】精简Linux的源代码
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
招聘&找工作
快速回复
返回顶部
返回列表