内容简介:Foxdisk01-缘起
“没有任何一个题目是彻底完成了的。总还会有些是哪个可做;在经过充分的研究和洞察以后,我们可以将任何解题方法加以改进;而且无论如何,我们总可以深化我们对答案的理解。”
–《怎样解题:数学思维的新方法》
用一段话来总结我自己的这个小项目,我以为上面的这段话很精准。从2006年1.00版开始,到2008年的冬天完成3.01版,直到现在,我也不觉得这个项目完成了。只是因为各种原因,没有动力再去更新它了,曾经写在计划中的4.0版,列出了许多我很有兴趣的功能,不大可能再去实现了。
回到最初想写这个产品的目的,主要有几个:
1) 一个硬盘安装多个操作系统,并且各操作系统看不到其他操作系统的分区;
2) 图形界面选择系统进入;
3) 提供磁盘坏道检测;
4) 提供分区功能;
5) 未来可以配合硬件实现系统间的物理隔离,即软件层面无法去定位其他操作系统的磁盘扇区;(随着Sata的速度越来越快,这个目标在商业产品上很难实现了)。
其实说来说去,我就是需要这么一个多操作系统引导的软件,帮助我管理因需要安装的各种操作系统,相互之间互不干扰,相当于一个界面版的spfdisk+grub。
其实Grub或者spfdisk之类的软件已经实现了类似的功能,没有必要再自己造轮子了。只是这些软件的界面我实在是看不下去,另外我也需要一个项目把我底层开发的所有知识串起来,实现一个小小操作系统,以备后用。
就这样,我下定决心来进行这个工作了。
Foxdisk 1.0是完全用汇编来实现的,安装在MBR之后的62个扇区之内,也就是说编译后的代码在在31K以内,实际为25.7K。代码文件加起来在174K(包含注释),不算大。这款软件只支持两个操作系统,而且只支持Windows,操作极其简单。也许因为如此,非常稳定,有几个同事用了很长时间。
Foxdisk2.0在上一版的基础上,为了便于阅读,大量采用了宏汇编的方式,导致生成文件很大,不得不裁剪一些想添加的功能。比如汉字显示、磁盘管理等。这款软件界面比1.0要漂亮些,我用汇编实现了透视渐变,不过代码量原因,实用性不大。在实现过程中,开发了几个 工具 程序,包括对bmp、pcx的结构分析和数据提取,汉字字模的自动提取,还是很有用的。我现在做一些嵌入式开发时,还会用到这些小工具。
Foxdisk3.0开发前,我分析了需求,终于还是决定跳出31K的限制,把软件安装到磁盘末端,这样代码量就不是问题了。另外,为了便于未来阅读开发,决定采用 C语言 编写,少数功能模块用汇编实现。最终实现了目前的版本,代码结构图如下:
图1 程序代码结构
在后续的博客中,我将会以上图为线索,一点点介绍这款占据了我生命中4个月业余时间的软件。主要包括:如何安装、启动原理、中断调度、硬盘模块、分区管理、图形模块、汉字和图片、小工具、如何编译和安装、调试。
这是为Foxdisk3.01.02设计的启动图标,我很喜欢。
图2 ifox.bmp:foxdisk的缺省启动界面
以前的截图很难找到,所以拍了一张实际的运行图,效果如下:
图3 实际运行图
很有意思吧?
—知更鸟的小屋
1 total views, 1 views today
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hit Refresh
Satya Nadella、Greg Shaw / HarperBusiness / 2017-9-26 / USD 20.37
Hit Refresh is about individual change, about the transformation happening inside of Microsoft and the technology that will soon impact all of our lives—the arrival of the most exciting and disruptive......一起来看看 《Hit Refresh》 这本书的介绍吧!