基于bochs编写操作系统 0x1 准备工作

0x0 前言

之前,我们基于github中的项目分析了linux0.11版本的源码,但是其中有些东西有些模糊,因此,我们基于吾爱破解中的文章,尝试基于bochs实现一个操作系统。

感谢大佬的帖子:从0到-1写一个操作系统-0x00-环境准备 - 『软件调试区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

0x1 bochs安装

下载是从如下网站中下载2.6.8版本的工具:

https://sourceforge.net/projects/bochs/files/bochs/

step1:配置

step2:编译

make

出现了如下错误:

其原因是依赖问题,补全即可:

sudo apt-get install xorg-dev
sudo apt-get install libgtk2.0-dev

又出现了如下问题:

依赖库链接不正确,以如下方式解决:

./configure --enable-debugger --enable-disasm --enable-readline LIBS='-lX11'

make此时正确运行,继续下一命令: 

sudo make install

运行成功,测试bochs安装完成。 

0x2 规定磁盘参数

Step1:首先创建硬盘

工具根目录创建配置文件bochsrc.disk

注意,要根据自己的路径来修改其中bios位置、键盘映射路径。

#第一步,首先设置 Bochs 在运行过程中能够使用的内存,本例为 32MB
megs :512
#第二步,设置对应真实机器的 BIOS VGA BIOS
#对应两个关键字为 romimage vgaromimage
romimage: file=/home/hwp/bochs-2.6.8/bios/BIOS-bochs-latest
vgaromimage: file=/home/hwp/bochs-2.6.8/bios/VGABIOS-lgpl-latest
#第三步,设置 Bochs 所使用的磁盘,软盘的关键字为 floppy
#若只有一个软盘,目IJ 使用 floppy 即可,若有多个,则为 floppya, floppyb… #floppya: 1_ 44=a.img, status=inserted
#第四步,选择启动盘符。
#boot: floppy #默认从软盘启动,将其注释
boot: disk #改为从硬盘启动。我们的任何代码都将直接写在硬盘上,所以不会再有读写软盘的操作。
#第五步,设置日志文件的输出。
log: bochs.out
#第六步,开启或关闭某些功能。
#下面是关闭鼠标,并打开键盘。
mouse: enabled=0
keyboard:keymap=/home/hwp/bochs-2.6.8/gui/keymaps/x11-pc-us.map
#硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#下面的是增加的 bochs gdb 的支持,这样 gdb 可以远程连接到此机器的 234 口调试了
#gdbstub : enabled=l, port=l234, text_base=O, data_base=O, bss_base=O

ata0-master: type=disk, path="hd60M.img", mode=flat
################### 配置文件结束 #####################

 原文中方案一我们会报没有-hd命令:

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

因此选择方案二:

./bximage

注意几个选项:

 

将最后一行加入配置文件中。

ata0-master: type=disk, path="hd60M.img", mode=flat

Step2:尝试启动我们的仿真机

bochs -f bochsrc.disk

两个选项: 

 

由于没有引导程序,运行起来报错,符合预期

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值