ORANGE’S:一个操作系统的实现 实验准备

1.bochs安装

官网下载bochs的安装包,后缀名为tar.gz,然后执行下面的命令

   1: ? tar vxzf bochs-2.3.5.tar.gz
   2: ? cd bochs-2.3.5
   3: ? ./configure --enable-debugger --enable-disasm
   4: ? make
   5: ? sudo make install

如果下载其他的版本,将bochs后面的版本号改一下就好了。

2.bochs的GUI库

   1: sudo apt=get install bochs-sdl

3.虚拟软盘镜像

   1: bximage 
   2: fd 
   3: 1.44
   4: a.img

按次序输入上述指令,即可创建一个大小为1.44 MB的虚拟软盘镜像。

4.bochs配置

display_library: sdl

floppya: 1_44=a.img, status=inserted

boot: floppy

将这三行内容新建成一个文件,保存为bochsrc,和a.img、boot.bin放在同一目录下。

之所以没有完全按照书上的配置去写,是因为我按照他的去写会出现一些问题。

5. helloOS

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

将上述代码保存为boot.asm文件

6.安装nasm

   1: sudo apt-get install nasm

7.汇编boot.asm

   1: nasm boot.asm -o boot.bin

8.将boot.bin写到软盘的第一个扇区

   1: dd if=boot.bin of=devfd0 bs=512 count=1

这个必须用软盘绝对扇区读写工具进行,因为在普通的读写操作下,第一个扇区是不可见的。

9.启动bochs

shell里面输入bochs即可启动虚拟机bochs,如果bochs具有调试功能,需要先选择数字6,进入模拟选项,再按c即可运行得下图:

走到最后一张界面就说明配置成功了。

时间: 2024-11-07 16:34:28

ORANGE’S:一个操作系统的实现 实验准备的相关文章

《Orange'S:一个操作系统的实现》笔记(一)

感觉自己对于操作系统始终没有一个清楚的概念,尤其最近困扰于实模式.保护模式以及寻址方式等一些概念.转而一想,所有的程序,最终都是操作的计算机资源,需要和操作系统打交道,所以操作系统有必要深入了解一下.最终想要自己动手编写一个简单的版本,上网查.网友对于于渊的<Orange'S:一个操作系统的实现>和<30天自制操作系统>评价挺高的,先选<orange>为学习手册.<30>为参考手册,开始自己的操作系统之旅. 首先是平台的搭建问题,首先因本人编程一般都是在自己

《ORANGE&#39;S一个操作系统的实现》第7章 TTY与键盘输入的关系。

背景:我感觉这块部分有一些逻辑上的复杂,于是我把它的关系结构画了一张图来表述,并且在图上解答了我自己想到的几个问题. 关系如图所示: <ORANGE'S一个操作系统的实现>第7章 TTY与键盘输入的关系. 原文地址:https://www.cnblogs.com/vizdl/p/12178667.html

一个操作系统的实现(1)-准备工作

今天开始看<Orange'S:一个操作系统的实现>一书.这里是ubuntu 16.04下开发环境的搭建以及实现一个最小的操作系统(准确地说应该是一个引导扇区). 工欲善其事,必先利其器.自制一个操作系统需要的工具如下: 汇编编译器NASM 虚拟机算计Bochs 软盘绝对扇区读写工具(这里直接使用强大的dd) 现在就来安装这些工具 安装NASM 通过源代码安装,官网下载最新版源代码,当前最新的是nasm-2.12.01版本,下面的内容以此来演示. 个人软件一般安装到/usr/local下,所以压

一个操作系统的实现——笔记4

在2^k*2^k个方格组成的棋盘中,有一个方格被占用,用下图的4种L型骨牌覆盖所有棋盘上的其余所有方格,不能重叠. 代码如下: def chess(tr,tc,pr,pc,size): global mark global table mark+=1 count=mark if size==1: return half=size//2 if pr<tr+half and pc<tc+half: chess(tr,tc,pr,pc,half) else: table[tr+half-1][tc+

一个电磁感应小实验

手头有一个坏的音响,测试放大电路没有什么问题,所以变改造了一下.做了一个电磁感应的小实验.图片如下:    原理简介: 音响本身就是一个信号放大器,所以这里我用电脑声卡输出正弦信号,经过放大到线圈输出.电磁感应,另外一个线圈便会产生电压,可以驱动一个发光二极管. 这里是 matlab 产生正弦声波的程序(来自网络): 1 Fs = 44100;%采样频率 2 T = 4; %时间长度 3 n = Fs*T;%采样点数 4 f = 40000;%声音频率 5 y = sin(2*pi*f*T*li

一个操作系统的实现(4)-认识LDT

看到这里,你应该已经很了解GDT了,如果还不了解GDT.请看这篇文章:一个操作系统的实现(2)-认识保护模式,认识保护模式那篇文章的最后详细介绍了由16位寻址升级到32位寻址而引入的GDT. LDT(Local Descriptor Table):从名字上面就可以看出来它与GDT(Gobal Descriptor Table)的区别.GDT是全局描述符表,LDT是局部描述符表(相对于GDT). 下面仍然是从代码的角度讲解什么是LDT.主要讲解在上一节的基础上增加的代码.在文章的最后会附上所有代码

[Orange‘s:一个操作系统的实现]第一天:环境配置

前言:环境介绍 电脑:Macbook Air 2014年早期版 系统:OS X 10.10.3 虚拟机:由于在Mac上编译Bochs一直不通过,原因在sourceforge上有说:sourceforge.net/p/bochs/bugs/1344 /1360,这两个地址说他们的程序员没有开发mac下的,所以会编译不通过.我不想多折腾,用VirtualBox,同时也是免费的.去官网下载VirtualBox,双击安装就行.同时,VirtualBox支持调试,在网上搜也有很多关于调试的文章,这里不贴地

一个操作系统的实现(11)-让操作系统进入保护模式

这节首先介绍了突破引导扇区只有512字节的原理,然后介绍了FAT12文件系统,最后通过实验加载loader并将控制权交给loader来实现突破512字节的束缚. 突破512字节的限制 前面所用的引导扇区只有512字节.然而实际上操作系统在启动过程需要做的事情是很多的.所以需要通过某种方法突破512字节的限制. 那么如何突破512字节的限制呢?一种方法是再建立一个文件,通过引导扇区把它加载到内存,然后把控制权教给它.这样,512字节的束缚就没有了. 这里被引导扇区加载进内存的并不是操作系统的内核.

软件易用性文章分享第二篇-手机易用性: 一个经典的实验

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 你预计利用手机查找当地电视台某个时段的节目要多长时间?20秒? 50秒? 2分钟? 这个首先出如今2000年的易用性实验, 2000年的时候,国外刚出现智能手机,这个測试包括两个内容:1.利用手机查看当天的天气预报:2.利用手机查看当地电视台某个时段的