博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己动手写操作系统之第一部分笔记
阅读量:5766 次
发布时间:2019-06-18

本文共 2660 字,大约阅读时间需要 8 分钟。

    为了跟书本的内容一致,特意选择了Debian和bochs2.3.5版本进行实践,但是在实践过程中还是出现了很多问题,我觉得这些问题是在用本书进行实践过程中极有可能出现的,但是作者却没有提及,只能靠自己寻找资料,解决问题。

  遇到的第一个问题是,解压后执行./configure命令无法正常生成makefile文件,这是由于缺少一些关键依赖软件未安装,缺少什么软件一般会在最后一行进行提示,只要使用apt-get安装相应的软件包即可。

  第二个问题则非常吐血了,提示错误如下:

........   

symbols.cc:173: error: ‘map’ was not declared in this scope       

make[1]: *** [symbols.o] Error 1        

make: *** [bx_debug/libdebug.a] Error 2

解决方法需要修改源代码,WTF!修改方法如下:

bx_debug/symbols.cc97 行之后加上一些代码,加后如下所示:

using namespace std;

 

#ifdef __GNUC__  (新加的,注意前后都是两个下划线)

 

using namespace __gnu_cxx; (新加的,注意前面是两个下划线)

 

#endif  (新加的)

 

struct symbol_entry_t;

 

之后即可正常地进行编译了,编译完成后,需要注意的是,配置文件的路径一定要跟本机上的路径一致,本机的配置文件如下:

 

# memory megs:32

# file of rom images romimage: file=/usr/local/share/bochs/BIOS-bochs-latest vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
# disk will be used floppya: 1_44=a.img, status=inserted
# boot disk boot:floppy
# log messages log:bochsout.log
# disable the mouse mouse:enabled=0
#enable key mapping keyboard_mapping:enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map

 

注意,romimagevgaromimage 的路径,跟书上说的有点不同

 

把上面编写的bochsrca.img 放在同一个目录下,在这个目录下输入bochs命令( 什么参数也没带) ,一个回车:

 

========================================================================                        Bochs x86 Emulator 2.3.5             Build from CVS snapshot, on September 16, 2007 ======================================================================== 00000000000i[     ] reading configuration from bochsrc ------------------------------ Bochs Configuration: Main Menu ------------------------------

This is the Bochs Configuration Interface, where you can describe the machine that you want to simulate.  Bochs has already searched for a configuration file (typically called bochsrc.txt) and loaded it if it could be found.  When you are satisfied with the configuration, go ahead and start the simulation.
You can also start bochs with the -q option to skip these menus.
1. Restore factory default configuration 2. Read options from... 3. Edit options 4. Save options to... 5. Restore the Bochs state from... 6. Begin simulation 7. Quit now
Please choose one: [6]    再输入回车:

 

 

Please choose one: [6] 00000000000i[     ] installing x module as the Bochs GUI 00000000000i[     ] using log file bochsout.log Next at t=0 (0) [0xfffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0 <bochs:1> c   回车:(注意输入了c)

 

 

如果用不带调试功能的Bochs2.4.5,那么在

 

Please choose one: [6] 回车之后,马上就可以看到上面的效果了。

 

注意:当用户输入bochs命令时,可能出现Message:ata0-0:could not open hard drive image file '30M.sample',此时说明不是从软盘启动的,那么用户应该输入完整的命令:bochs -f bochsrc,这样就可以了。

 

现在大家应该可以看到自己的小型操作系统了吧,在这里非常感谢《orange's一个操作系统的实现》的作者于渊,我非常佩服作者的耐心和能力,作者的一句话令我很有启发:只要用心,就没有学不会的东西!!!

 

 

 

 

转载于:https://www.cnblogs.com/ciangcic/p/3618121.html

你可能感兴趣的文章
GitLab联合DigitalOcean为开源社区提供GitLab CI免费托管
查看>>
通过XAML Islands使Windows桌面应用程序现代化
查看>>
区块链现状:从谨慎和批判性思维看待它(第二部分)
查看>>
苹果公司透露Siri新发音引擎的内部原理
查看>>
GCM 3.0采用类似方式向Android、iOS和Chrome发送消息
查看>>
如何成为一家敏捷银行
查看>>
Oracle在JavaOne上宣布Java EE 8将会延期至2017年底
查看>>
Javascript 深入浅出原型
查看>>
简单之极,搭建属于自己的Data Mining环境(Spark版本)
查看>>
Ruby 2.5.0概览
查看>>
如何通过解决精益问题提高敏捷团队生产力
查看>>
Comment2Wechat —— Typecho 插件
查看>>
Apache下.htaccess文件配置及功能介绍
查看>>
Magento XML cheatsheet
查看>>
Egg 2.19.0 发布,阿里开源的企业级 Node.js 框架
查看>>
Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性 ...
查看>>
使用MySQLTuner-perl对MySQL进行优化
查看>>
Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化 ...
查看>>
开发网络视频直播系统需要注意的地方
查看>>
haproxy mysql实例配置
查看>>