[OS64位][001]Boot:使用bochs制作虚拟软盘镜像boot.img、启动并运行boot程序

学习笔记

使用教材(配书源码以及使用方法)
《一个64位操作系统的设计与实现》
http://www.ituring.com.cn/book/2450
https://www.jianshu.com/p/28f9713a9171


操作步骤

  • 第一步,安装各种必需的软件工具,具体步骤见参考资料

http://www.ituring.com.cn/book/tupubarticle/26323

  • 第二步,见《一个64位操作系统的设计与实现》“第二部分 初级篇 第3章 BootLoader引导启动程序”

以下为第二步的实验记录

使用 bochs 虚拟机 创建 虚拟软盘 boot.img

  • 启动虚拟磁盘镜像制作工具
    [anno@localhost ~]$ bximage
  • 继续依次输入
    1 fd 1.44M boot.img
  • 创建软盘成功示意图
    使用bochs虚拟机创建虚拟软盘boot.img

汇编源码 boot.asm

http://www.ituring.com.cn/book/2450
随书下载-源代码

随书下载-源代码-第二部分-第三章-程序3-1

  • 编译汇编源码
    [anno@localhost ~]$ nasm boot.asm -o boot.bin(小写字母o

  • 生成.lst文件(帮助阅读源码、机器码,相当有用!)
    [anno@localhost Desktop]$ nasm boot.asm -o boot.bin -l boot.lst

  • boot.bin写入上面创建的虚拟软盘镜像boot.img
    [anno@localhost Desktop]$ dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc

[anno@localhost Desktop]$ ls
bochsrc  boot.asm  boot.bin  boot.img  gnome-terminal.desktop

bochs配置文件 bochsrc

配置文件在线阅读
http://www.ituring.com.cn/book/tupubarticle/21474

http://www.ituring.com.cn/book/2450
随书下载-源代码

bochs配置文件 bochsrc

  • 首先,建议直接去用随书下载的源代码包里的配置文件(这是绝对正确无误的),在线阅读那里的配置文件因为一些换行把标识符给生生隔断了,比如cpuid字段里有一个标识符叫做1g_pages=1,如果在线复制,就会复制成1 g_pages=1,这样一来后面载入配置文件就会出错了,这其实就是由于换行引起的;

  • 其次,配置文件里面有一句floppya: type=1_44, 1_44="boot.img",应该是说配置文件boot.img(软盘镜像文件)要处在同一个目录下,为了方便,我就把这两个东西同时放在了桌面上;

测试运行

  • 启动 bochs:打开命令行输入
    [anno@localhost Desktop]$ bochs -f ./bochsrc

    我的配置文件和镜像文件boot.img现在都放在桌面

  • 继续依次输入:6 c
    (6是选择启动虚拟机,c是继续执行,回车确认,都是在命令行里面输入,黑色那个框是输出结果)

    出现字符start Boot表示运行成功


参考资料

代码比较工具

Beyond Compare

开发环境

  • 1、安装 VMware Workstation虚拟机软件

VMware Workstation 的安装和使用
https://blog.csdn.net/lamp_yang_3533/article/details/53136474

  • 2、下载 CentOS6 发行版

VMware Workstation中安装linux系统(CentOS)超详细
https://blog.csdn.net/u010996565/article/details/79048104

镜像文件下载 CentOS-6.10-x86_64-bin-DVD1.iso
http://isoredirect.centos.org/centos/6/isos/x86_64/

  • 3、 在VMware Workstation安装 CentOS6
    在VMware Workstation安装 CentOS6
需要在BOIS里面开启VT
  • 4、在 CentOS6 上安装bochs

https://www.linuxidc.com/Linux/2012-12/76952.htm

0) 编译之前先安装如下的库: gtk2,libXt,libXpm
sudo yum install gtk2 gtk2-devel
sudo yum install libXt libXt-devel
sudo yum install libXpm libXpm-devel

1)然后编译安装:
tar xzvf bochs-2.3.7.tar.gz
cd bochs-2.3.7
./configure --enable-debugger --enable-disasm
make
sudo make install
  • 5、安装bochs

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

安装bochs

  • 6、安装VMware Workstation tools: is not in the sudoers file 问题解决

https://blog.csdn.net/zhuqinglu/article/details/2050927

  • 7、 Centos安装gccg++

https://www.cnblogs.com/Anker/p/3203402.html

安装gcc:yum install gcc 
安装g++:yum install gcc-c++
  • 8、配置 bochs文件

linux上配置bochs,搭建基于X86架构操作系统的开发环境
https://www.cnblogs.com/lmstack/p/8159128.html

bochs配置文件 .bochsrc
http://www.ituring.com.cn/book/tupubarticle/21474

  • 9、bochs各种目录

https://www.cnblogs.com/kuainiao/archive/2012/12/20/2825981.html

  • 10、启动bochs

Ubuntu 14.04 LTS 安装和配置Bochs
https://www.linuxidc.com/Linux/2016-10/135905.htm

  • 11、制作软盘

linux上配置bochs,搭建基于X86架构操作系统的开发环境
https://www.cnblogs.com/lmstack/p/8159128.html

  • 12、启动bochs时报错No bootable device

https://blog.csdn.net/hushengshan/article/details/7937016

  • 13、安装 NASM 汇编编译器

https://centos.pkgs.org/6/centos-x86_64/nasm-2.07-7.el6.x86_64.rpm.html

bochs 调试命令

  • [067][x86汇编语言]Bochs调试命令整理

之前在win平台下使用bochs的经验,除了安装和设置配置文件不同,打开了bochs之后都是一样的,可以参考一下
https://www.jianshu.com/p/c98c113772db

  • [Linux]编译一个C程序:./configure 、 make、 sudo make install

我这次安装bochs的方法是: 先下载源码包,然后自己编译make,自己install make https://www.jianshu.com/p/74d92309a751

值得一提的是./configure 这个步骤要去 图灵社区 在线阅读那个网址复制一下大量参数太多了
http://www.ituring.com.cn/book/tupubarticle/21474

  • [Linux]dd 读写软盘:在软盘主引导扇区写入显示hello world的二进制代码数据

https://www.jianshu.com/p/207aaf0f986b

  • VMware Workstation 和 bochs 都是虚拟机,都有创建软盘功能,需要用VMware Workstation创建软盘看这里:[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0

https://www.jianshu.com/p/ab11cb269634

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容