《ORANGE’S:一个操作系统的实现》读书笔记(一)环境搭建

        《ORANGE’S:一个操作系统的实现》上环境建议使用的是Linux,但是我日常使用的是Windows,所以我选择在Windows下搭建开发环境,没有事情的时候,也可以学习一下,比较方便,这篇文章记录一下环境的搭建。

目录

安装NASM

安装 dd 命令工具

安装虚拟机Bochs

测试环境

安装NASM

        NASM汇编器地址:https://www.nasm.us/,进入选择下载就可以了,现在安装的时候稳定版是2.16.01。点击进入,根据操作系统进行选择对应的NASM,我的系统是64位的,所以现在选择win64,点击进入,可以看到有 .exe 和 .zip 两种方式,我这里选择 .zip 的文件。

        将下载的NASM汇编器的压缩文件解压并且配置环境变量。环境变量配置完成后,打开命令行窗口,输入 nasm -v 命令,查看配置是否正确。如果配置正确,会显示NASM汇编器的版本。

 

安装 dd 命令工具

        在这本书中,Linux下使用 dd 工具将文件写到空白软盘的扇区,Windows下使用的是 rawrite2 工具。因为这本书建议的开发环境是Linux,所以之后的内容使用的是 dd 工具。为了使用方便,在网上找到Windows版本的dd工具,网址:chrysocome.net - dd for windows,进入网站后,向下查看网页,可以看到dd版本的下载列表,选择最新版下载就可以。

        将下载的 dd 命令工具的压缩文件解压并且配置环境变量。环境变量配置完成后,打开命令行窗口,输入 dd --version 命令,查看配置是否正确。如果配置正确,会显示 dd 命令工具的版本。

 

安装虚拟机Bochs

        虚拟机Bochs的官方网站:bochs: The Open Source IA-32 Emulation Project (Home Page),下载地址:Bochs x86 PC emulator download | SourceForge.net。Windows下载的虚拟机Bochs是一个 .exe 的可执行文件,双击打开,按照提示进行安装就可以了。安装完成后,打开“开始”菜单,可以看到虚拟机Bochs的图标,表示安装成功。安装成功后,将Bochs的安装路径配置到环境变量中,因为后面需要使用该虚拟机提供的 bximage.exe 进行磁盘创建。

测试环境

        按照书上目前看到的内容已经完成了开发环境搭建,现在测试一下环境是否搭建成功。编写书上的程序进行测试,以此了解流程,代码内容如下:

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               ; 结束标志

        将这段代码保存到文件 boot.asm,然后使用NASM编译该代码:

nasm boot.asm -o boot.bin    # nasm ASM源代码文件 -o 输出文件

        现在得到了一个512字节的boot.bin,然后我们需要使用 dd(软盘绝对扇区读写工具) 命令工具将这个文件写到一张空白软盘的第一个扇区。

        首先,使用Bochs虚拟机提供的 bximage.exe 创建一张软盘,将该软盘文件创建在 boot.asm 代码文件所在的路径下。直接在命令行窗口中输入 bximage 命令,然后根据提示选项进行选择就可以了。

 

        然后使用 dd 命令将 boot.bin 写入到 boot.img 镜像中,命令如下: 

dd if=boot.bin of=boot.img bs=512 count=1

        写入完成后,启动Bochs虚拟机,设置 boot.img 为启动镜像。

 

        经过上述一系列操作,截止到书上看到的内容,已经将软件都安装好,并且可以使用了。

公众号

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对x86架构的处理器,业界一向是褒贬不一。但是毫无疑问的是,x86架构的处理器是迄今为止在市场上最成功的处理器。它既催生了Intel、微软这样的业界巨头,也改变了普通人们的生活。到今天,虽然有arm的异军突起,但是大部分程序员所编写的程序依然在运行在x86架构上。 虽然很多上层的程序员绕过了对CPU架构本身的理解,而直接使用高级语言进行编程,但是对CPU本身的熟悉,其实依然是所有想被称为优秀的程序员所难以绕过的一道坎。对CPU的不熟悉,实际上限制了程序员的思维方式、对程序的理解和实际解决问题的能力。 对于普通的芯片,阅读几页的说明书就可以大致理解如何让它工作。CPU是比较复杂的一种,对于比较简单的CPU架构,阅读几十页的文档也能大致熟悉。然而 x86架构的CPU的说明可不是这么简单,其手册估计有一共有四、五千页之巨。不要说理解透彻,就是从头到尾翻一遍也不是一件简单的事情。并非Intel 有意将它做得复杂,这里有历史的原因。因为这个架构的应用实在太广了,全世界有无数的软件都在它的基础之上工作。为此它自身的升级也就变得举步维艰。每次升级都不得不要兼容之前的特性。这也就导致了新旧指令层层堆积,种种特性互相兼顾,最终变成如今的一团乱麻了。 对于入门级的选手,读完那些手册可不是一件容易的事情。但是于渊的这本《orange's:一个操作系统实现》却是一条难得的终南捷径。因为要理解如何让一个芯片正常工作,最简单的办法就是从头开始去写程序让它运行起来,然后操作它做自己想做的事情。如果是平时的编程,这些下层的工作都已经有操作系统帮你做了,对理解x86架构的帮助就大为有限。如果去读那几千页的文档,不但读起来很痛苦,中间又没有多少可以实际操作的工作来帮助你温故而知新,这其中的枯燥乏味,绝对不是一般人可以忍受的了。而且更重要的手册中虽然包含了x86所有的特性,然而其中有些特性是现代操作系统根本就没有用到的。努力的去理解的话,又是吃力不讨好了。如果每个读者都可以随着这本书的介绍,去逐步的实现一个操作系统,不但这中间其乐无穷,而且实现到最后,对x86架构的理解也就不在话下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值