如果你也对操作系统有着浓厚的兴趣, 从今天开始,跟着我一起学习于渊的《一个操作系统的实现》吧!首先声明,我是个菜鸟,还在读书,我自己本身也是摸索着学习的,有些地方理解不到位请大家谅解。书虽然比较详细,但是自己动手起来还是会难住一些对编程不是很熟悉的人。为了初学者能少走弯路,我会尽可能的把每个细节都用图文展示出来,高手路过请见谅。
先不说别的,才翻开书就看到书里面说,需要用到软盘,对于我们这个年龄的孩子来说,软盘真的是很遥远。所以我特地到淘宝去看了看软盘,但是后来又发现自己的本本根本没有地方可以支持软盘的驱动了,这个想法就放弃了。经过思考,我想到了使用U盘来启动,所以我的目标暂定为用U盘启动代替软盘。后来证实这个观点也是不可行的,也许是自己电脑或是U盘的原因。读者如果有想法也可以自己尝试一下把img文件通过软件写到U盘,再使用U盘启动。最后从网上搜到一篇文章,使用虚拟软盘!这个问题解决了后,就可以来实施具体步骤了。
一、windows下VMware Workstation虚拟机的安装
想用什么样的虚拟机大家自己选,我这里选择的是VMware Workstation。下面来看安装的具体步骤:
1、下载虚拟机
到系统之家下载带汉化包的虚拟机,系统之家地址Http://WwW.XP510.CoM,进去里面搜就可以搜到带汉化包的VMware Workstation。解压后,文件一般包括如图所示几个。(anzhuang这个是我后来的安装路径,下载时候没有)
2、安装和汉化
大家一定要区分安装包和汉化包,安装包是第三个,汉化包是第二个。点击安装后,想安装普通软件一样安装虚拟机就可以了,因为它本身也是一个软件。可以完全按照自定义安装,如果C盘不内存不是很大的话,可以考虑安装在其他盘。安装完成后点击汉化程序开始汉化。汉化时候我们只需要一直点next就可以,软件会自动识别虚拟机的安装路径的。
安装程序开始界面:
汉化程序开始界面:
二、nasm编译软件的安装
1、下载
为了方便初学者可以省去寻找可用软件花费的时间,我已经把软件打包在博客的附件中。读者自己下载
2、安装
安装过程及其简答,也是和安装普通软件一样的。安装完成后打开软件应这样:
三、FloppyWriter的下载
该软件同样也在附件中,此软件不需要安装,下载后打开就可以用,
四、写代码
如果没用过Uedit,我强烈推荐你使用这个软件来写代码,安装包在附件里面,解压之后安装即可,该软件已经破解,里面有注册用的密钥,在sn.txt里面。软件安装后,就可以在里面写代码了。我也没学过汇编语言,这个代码还只是能看懂一些,理解也不是很到位,就抄一遍吧。
org 07c00h
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
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello world"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55
保存上述代码为boot.asm
五、编译代码
然后我们打开nasm,并进入到所boot.asm在路径下。这里我的文件时放在桌面的,所以我这样使用。首先切换到c盘(注意命令使用)
切换到文件所在路径(不知道文件路径可以右键属性进行查看)
然后输入命令把boot.asm文件编译为boot.bin文件,编译成功后会自动回到目录。
'-o'选项:指定输出文件的文件名。
NASM会为你的输出文件选择一个文件名;具体如何做取决于目标文件的格式,对于微软的目标文件格式('obj'和'win32'),它会去掉你的源文件名的'.asm'扩展名(或者其他任何你喜欢使用的扩展名,NASM并不关心具体是什么),并替换上'obj'。对于Unix的目标文件格式('aout','coff','elf'和'as86')它会替换成'.o', 对于'rdf',它会使用'.rdf',还有为'bin'格式,它会简单地去掉扩展名,所以'myfile.asm'会产生的一个输出文件'myfile'。
如果输出文件已经存在,NASM会覆盖它,除非它的文件名与输入文件同名,在这种情况下,它会给出一个警告信息,并使用'nasm.out'作为输出文件的文件名。在某些情况下,上述行为是不能接受的,所以,NASM提供了'-o'选项,它能让你指定
你的输出文件的文件名,你使用'-o'后面紧跟你为输出文件取的名字,中间可以加空格也可以不加。比如:
nasm -f bin program.asm -o program.com
nasm -f bin driver.asm -odriver.sys
请注意这是一个小写的o,跟大写字母O是不同的,大写的是用来指定需要传递的选项的数目
六、制作img文件
这里要用到,前面所说的Floppy Writer软件了。打开所FloppyWriter,我们使用write File to Imag(另外一个功能暂时还没用过)
选定上一步的boot.bin文件后,点击确认后,会出现一个让我们选择img文件的地方。这时候你应该想到随书光盘中的a.img了吧!为了安全起见,我们备份一份到桌面使用!如图,然后点击确认后,我们就已经把引导启动写到a.img里面去了。
七、开始测试
1、在虚拟机上建一个空的领域(自己这样称呼),步骤比较简单,只是有几个地方需要注意。
这里要使用自定义的安装
选择“我以后安装操作系统”
这两个地方一定要选择other,搞错了就会出问题。
这样就为我们的操作系统认领了一块属于自己的“土地”。
2、安装系统
继续刚才的一步,在虚拟机中找到我们刚才给系统预留的地方。
点击以后打开,点击编辑此虚拟机。
留意我用红色框标出来的地方。选择软盘,然后选择打开电源时连接,然后把我们写好的a.img文件加载进来。还有可能出错的一点是,不要点击创建!我一开始点了就出问题了。点击下面的确定就好。
对虚拟光驱也做一下配置,我找的网上的资料,不知道有啥用,读者可以试试不配置。
现在一切都已经完成了,来体验一把自己完成的一个操作系统吧。点击打开电源,哦,不好,出现错误了:【传输错误(VMDB)错误-44:Message The Vmware Authorization Service未运行】。
不用着急,关闭虚拟机。对虚拟机快捷方式:右键->以管理员方式运行虚拟机.
再次打开打开虚拟机电源,看到什么了?
再等等,再等等......
再等等,再等等......
看到没!出来你想要的Hello world了!
再回头看看,是不是很简单很明了~
本文为作者原创,转载请注明原创出处:http://zhoujianquan.iteye.com/blog/2038357
相关推荐
嵌入式操作系统读书笔记 嵌入式操作系统是一种特殊的操作系统,它可以实时地响应外部事件,对于实时性和可靠性要求非常高的应用场景非常重要。嵌入式操作系统的研究变得尤为重要,因为它可以支持多任务,提高系统的...
综上所述,这份学习笔记全面覆盖了操作系统的核心概念,从底层的保护模式编程到高层的进程管理和系统调用,对于想要深入理解操作系统的初学者来说是一份宝贵的资源。通过阅读和理解这些文档,不仅可以掌握操作系统的...
通过阅读《ORANGE’S:一个操作系统的实现》,我们可以深入了解进程管理的细节,学习如何设计和实现一个高效的进程模型。书中的代码示例可以帮助我们更好地理解理论知识,并提供实践操作的参考。 总的来说,ORANGE...
这篇文章的代码部分是作者对整个操作系统实现过程的一个总结和回顾,旨在帮助读者理解操作系统背后的逻辑和设计思路。 操作系统作为计算机系统的心脏,负责管理和调度硬件资源,为应用程序提供服务。在ORANGE’S这...
在本篇读书笔记中,我们将深入探讨《ORANGE’S:一个操作系统的实现》一书的尾声部分,这部分主要涉及操作系统开发的最后阶段,包括测试、优化和文档编写。通过作者分享的代码,我们可以了解实际操作系统开发过程中...
在本篇读书笔记中,我们将深入探讨《ORANGE’S:一个操作系统的实现》中的文件系统部分,特别是第六章的内容。文件系统是操作系统的核心组件之一,它负责管理和组织存储设备上的数据,使得用户能够高效地存取和管理...
本篇读书笔记主要基于《ORANGE’S:一个操作系统的实现》一书,探讨了文件系统的设计与实现,特别是文件代码的相关细节。以下是对这一主题的详细阐述: 首先,文件系统的核心任务之一是为用户提供抽象的数据存储...
在本读书笔记中,我们将深入探讨《ORANGE’S:一个操作系统的实现》中关于进程管理的第五部分。这本书是操作系统设计与实现领域的经典之作,它详细介绍了如何构建一个操作系统,涵盖了从硬件接口到高级服务的各种...
在本篇《ORANGE’S:一个操作系统的实现》的读书笔记中,我们将深入探讨操作系统中的文件系统,这是操作系统核心功能之一,它负责管理和组织存储设备上的数据,为用户提供方便、安全的数据存取接口。文件系统的设计...
在本篇《ORANGE’S:一个操作系统的实现》的读书笔记中,我们将深入探讨操作系统中的核心组件之一——文件系统。文件系统是操作系统管理和组织磁盘上数据的主要方式,它为用户提供了一个抽象的、易于理解的接口来...
在本篇读书笔记中,我们将深入探讨《ORANGE’S:一个操作系统的实现》中的第十五章,关于进程管理的第三部分。在这个章节中,作者详细阐述了操作系统如何管理和调度进程,以及进程之间的通信机制,这些都是操作系统...
本文基于《ORANGE’S:一个操作系统的实现》这本书的读书笔记,探讨了输入输出系统的设计和实现,特别是第二部分的内容。下面我们将深入解析相关知识点。 一、I/O模型 输入输出系统通常采用三种基本模型:同步I/O、...
总的来说,该读书笔记覆盖了操作系统设计中的核心知识点——进程间通信,深入解析了各种通信机制的工作原理和实现方式,对于操作系统爱好者和开发者来说,是一份非常宝贵的参考资料。通过学习和实践,我们可以提高在...
本文将基于《ORANGE’S:一个操作系统的实现》这本书的第二十二章内容,深入探讨输入输出系统的设计与实现,特别是第四部分涉及的代码实践。书中通过实例展示了如何构建一个简单的I/O系统,帮助读者理解操作系统与...
在本篇读书笔记中,我们将深入探讨《ORANGE’S:一个操作系统的实现》中的文件系统部分,特别是第三部分。文件系统是操作系统的核心组件之一,它负责管理和存储数据,为用户提供透明、高效的文件存取服务。这里,...
在本篇读书笔记中,我们将深入探讨《ORANGE’S:一个操作系统的实现》中的第二十七章节,主题聚焦于文件系统。文件系统是操作系统的核心组成部分,它负责管理和组织存储设备上的数据,为用户提供方便、高效的数据...
《ORANGE’S:一个操作系统的实现》读书笔记(十四)进程(二)文章代码
这篇读书笔记是根据第一周的学习内容编写的,涵盖了操作系统的基础概念和核心功能。 在第一周的学习中,我们首先会接触到操作系统的基本定义和角色。操作系统是系统软件的主体,它负责管理计算机的内存、处理器时间...
Linux操作系统是全球最广泛使用的开源操作系统之一,它以其稳定、高效和灵活性著称。这篇读书笔记将基于《鸟哥的Linux私房菜》、《Linux内核的设计与实现》、《深入理解Linux内核》以及《深入Linux内核架构》等经典...