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

前言:环境介绍

电脑:Macbook Air 2014年早期版

系统:OS X 10.10.3

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

#启动虚拟机调试的常见命令
VirtualBox --startvm /path_of_virtualmachine.vbox --debug 

源码获取:作者在书的最后给出了源码的地址,如果买了书的同学可以去下载。

生成img文件:书中使用的是Bochs自带的bximage,由于我们没有编译成功,使用dd命令也是非常的方便

#生成一块1.44M空软盘命令。
dd if=/dev/zero of=os.img bs=512 count=2880 conv=notrunc

挂载img文件:在Linux可以使用mount命令, 但是在mac下需要-t选项,一直搞不清楚FAT12对应的代号,可能没有,后来发现了这么一个命令

#挂载img文件
hdiutil mount os.img
#命令会有输出,将文件挂载在哪个位置,一般都是在/Volumes/文件夹下
hdiutil unmount /Volumes/path

Dos下进入不同的盘:

#直接输入盘符加:号
B:

第一章:一个引导程序

最开始介绍了一个是多行的代码,用于引导软盘进入系统

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

对于上面的代码,不做过多的描述,第一行是跳转到7c00处,将控制权移交给系统,不再是BIOS,接着初始化几个寄存器之后调用字符显示函数,然后进入死循环。最后是填充数据,写入结束标志。

讲述一些NASM汇编中的规则,更详细内容去看官网手册:

对变量加[],取值,不加表示地址;

$:当前行被汇编后的地址

$$:当前段section被汇编之后的起始地址。

好的,到现在,如果你和我一样的系统,一样的硬件,你应该已经全部搞定书上的操作实例了。

那么接下来进入保护模式。


时间: 2024-10-10 20:12:52

[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

ElasticSearch第一步-环境配置

简介 ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例.像Solr4一样,是基于Lucene构建的.支持时间时间索引和全文检索.官网:http://www.elasticsearch.org 它对外提供一系列基于java和http的api,用于索引.检索.修改大多数配置.下载地址 http://www.elasticsearch.org/download JAVA环境配置 ElasticSearch是基于lucence开发的,也就是运行需要java

用h5开发安卓app(第一天)——环境配置

1.首先需要安装java的环境 java的环境配置在网上可以找到很多教程,不再说了. 2.使用esclipse开发的话需要下载,然后安装 esclipse在这个也很简单,下载并安装就可以了. 注意:esclipse有很多版本,对应不同的语言,选择好就可以. 3.下载adt并安装到esclipse中.adt是一个插件,用esclipse开发安卓的插件. 安装过程: 1)启动Eclipse,然后在菜单栏上选择 Help > Install New Software 2)单击 Add 按钮,在右上角

《一个操作系统的实现》 ubuntu系统环境配置

电脑之前已经安装了gcc. 一.nasm安装:sudo apt-get nasm或官网下载http://sourceforge.net/projects/nasm我下载到的是nasm-2.11.08-1.src.rpm(里面有nasm-2.11.08.tar.xz文件)rpm的安装方式: 1 $sudo apt-get install alien ##alien默认没有安装,所以首先要安装它 2 $sudo alien xxxx.rpm ##将rpm转换为deb,完成后会生成一个xxxx.deb

我的第一个web应用开发搭建-环境配置

MyEclipse 2014 破解图文详细教程 MyEclipse作为Java EE最受欢迎的IDE,最新版本为2014版,MyEclipse 2014破解的方法. 一.安装完成MyEclipse2014(适用于2013等版本)后,不要打开软件,下载破解附件包. 破解附件包下载地址:点我下载 二.解压破解文件压缩包,得到一下文件列表: 三.双击run.bat,即可运行cracker.jar,进入如下界面,按照下图操作: 四.获取到SystemId后,点击菜单Tools-0.RebuildKey

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

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

React-Native入门指南(一)——环境配置 &amp; Hello World

React-Native入门指南 github:https://github.com/vczero/react-native-lession React-Native:用JavaScript开发你的原生应用,释放Native的UI体验,体验 Hybird开发效率. 最近一个星期写的文章如下: 第1篇hello react-native 第2篇认识代码结构 第3篇css和布局 第4篇学会react-native布局 第5篇ui组件 还有几篇需要这这周完成(这块会时刻更新): 第6篇JSX语法 第7

[转]OpenGL学习入门之VS2010环境配置

OpenGL开发环境简介 基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLL.Glu32.DLL,这两个文件在安装Windows NT时已自动装载到C:\WINDOWS\SYSTEM32目录下(这里假定用户将Windows NT安装在C盘上).OpenGL的图形库函数封装在动态链接库OpenGL32.DLL中,开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.OpenGL函数命令方式十分有规律,每个库函数均有前缀gl.glu.aux,分别表示该函数属于O