【转载】FAT12格式的引导程序(2)
启动WinImage后,打开“文件”菜单,单击菜单中的“打开”命令。
选择之前保存的磁盘镜像文件“boot.img”或者“boot.ima”。
打开“映像”菜单,单击菜单中的“引导扇区属性”命令。
在弹出的“引导扇区属性”对话框中,单击“打开”按钮。
浏览并选择经过汇编后生成的引导程序,如:“boot.bin”,然后单击“打开”按钮以选择引导文件并关闭对话框。注意此处所选择的文件长度应该是512字节,文件类型是BIN启动文件。
返回到“引导扇区属性”对话框时,看看“OEM 字串”的信息应该是引导程序中的“BS_OEMName”字段,在这里也就是“MSWIN4.1”,然后单击“确定”按钮以确认写入引导扇区并关闭对话框。
返回到WinImage主界面中,打开“文件”菜单,单击菜单中的“保存”命令,最后退出WinImage,即可以把引导文件写入到软盘镜像的引导扇区中了。
2、用FloppyWriter来写入到引导区详细步骤:
FloppyWriter.exe是《自己动手写操作系统》这本书的随书光盘里的一个小工具,专门用于将引导文件写入到磁盘的引导扇区中,非常的好用。
打开FloppyWriter工具。单击“Write File to Image”按钮以写入磁盘镜像文件。
浏览并选择经过汇编后生成的引导程序,如:“boot.bin”,然后单击“打开”按钮以选择引导文件并关闭对话框。注意此处所选择的文件长度应该是512字节,文件类型是Binary files(*.bin)启动文件。
选择之前保存的磁盘镜像文件“boot.img”或者“boot.ima”,如果无法浏览,则在文件类型中选择“All(*.*)”即可,然后单击“打开”按钮以选择磁盘镜像文件并关闭对话框。
最后,成功写入到磁盘镜像文件会出现以下对话框,单击“确定”按钮关闭它以完成写入引导代码的操作。
好了,引导程序也成功的写入到引导扇区了,此时应该进入历史性的一刻了。
我们先建立一个虚拟机来测试我们之前编写的引导程序。
打开Microsoft Vitual PC 2007。如果此时还没有建立任何的虚拟机,会立即弹出“新建虚拟机向导”的欢迎窗口。
当然,如果已经存在虚拟机,也可以打开“文件”菜单,单击菜单中的“新建虚拟机向导”来打开上面的欢迎窗口。
选择“新建一台虚拟机”,单击“下一步”按钮。
在名称和位置下面的文本框中输入此虚拟机的名称,还可以单击“浏览”按钮以选择此虚拟机文件的存储位置,在这里输入“MeOS”为例,然后单击“下一步”按钮。
在操作系统类型中选择“其他”,单击“下一步”按钮。
新建默认的虚拟的内存大小为128MB,如果觉得不够就可以选择“更改分配内存大小”来设置此虚拟机的内存。在这里设置虚拟机的内存为256MB,然后单击“下一步”按钮。
在虚拟硬盘选项中,选择“新建虚拟硬盘”,单击“下一步”按钮。
在虚拟硬盘位置窗口中,在名称和位置下面的文本框中输入储存虚拟机硬盘目录和文件名称,在虚拟硬盘大小中输入数值,一般默认即可,单击“下一步”按钮。
最后,单击“完成”按钮就可以成功完成新建虚拟机的操作了。
这样,系统中就有一台可以运行的虚拟机了。选择它(这里是MeOS),然后单击“启动”按钮来运行它。
这就是虚拟机的启动界面,跟真实机器的启动相同吧。此时请打开“软驱”菜单,单击“载入虚拟软盘映像”命令以加载我们编写并制作的引导磁盘。
浏览并选择之前制作的磁盘镜像文件“boot.img”或者“boot.ima”,单击“打开”按钮以加载引导磁盘镜像文件。
虚拟系统将继续启动,如果系统启动失败后才加载引导磁盘镜像,将它复位就可以了。
激动人心的一刻开始了。看看虚拟系统的屏幕上显示的是什么?红色的“MSWIN4.1”!这就是我们自己的操作系统,虽然现在什么也做不了,但只要持之以恒,总有一刻可以让它旗帜飘扬!
到此,我们完成了自己的引导代码编写,并成功的让它运行了起来。其实操作系统也没有想像中的神秘,到底它也只是一段代码而已。在之后的文章中,将继续介绍加载系统核心、保护模式、任务切换、图形编程、中断处理等精彩纷呈的内容。
我的电脑我做主,我使用自己的操作系统!
附录1:如果需要使用3.5寸1.44MB高密软盘来测试引导系统,可以使用HDCOPY将制作好的磁盘镜像文件写入到磁盘中,用这张磁盘即可引导系统。同时,如果将这段简单的引导代码写入到硬盘的引导扇区中,也是可以启动系统的。
【转载】FAT12格式的引导程序(2)的更多相关文章
- 【转载】FAT12格式的引导程序
FAT12格式的引导程序 在上一篇文章中详细介绍了FAT12格式的引导扇区数据结构,详情请浏览: 地址是:http://blog.sina.com.cn/s/blog_3edcf6b80100cr08 ...
- FAT12格式的引导区实现
org 07c00h ;================================================ jmp short START nop ; 这个 nop 不可少 ;这个结构将 ...
- 关于SQL优化(转载,格式有调整)
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- 【转载】FAT12文件系统之引导扇区结构
FAT12文件系统之引导扇区结构 文件系统即文件管理系统,是操作系统的重要组成部分之一,如果需要开发底层磁盘驱动或编写自己的操作系统,就必须详细了解文件系统. FAT12是Microsoft公司DOS ...
- 汇编语言进阶和Makefile进阶---第二天
摘要: 原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 首先加载启动代码: ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序装载地 ...
- 自制操作系统 (三) 从启动区执行操作系统并进入C世界
qq:992591601 欢迎交流 2016.04.03 2016.05.31 2016.06.29 这一章是有些复杂的,我不太懂作者为什么要把这么多内容都放进一天. 1读入了十个柱面 2从启动区执行 ...
- [自制简单操作系统] 1、从0-1到汇编再到c语言的奥秘
目录: 1.用0-1编写最简单的操作系统 2.用汇编改写上面0-1程序 2.1 只用DB的汇编改写版 2.2 加入RESB汇编的改写版 2.3 进一步使用汇编替换0-1文件 2.4 核心程序也用 ...
- 自制操作系统(二) 让bootsector开机启动打印一首诗
qq:992591601 欢迎交流 2016-03-31作 2016-06-01.2016-06-27改 我总结了些基本原理: 1.软盘的第一个扇区为启动区 2.计算机读软盘是以512字节为单位来读写 ...
- Windows文件系统
微软在Dos/Windows系列操作系统中共使用了6种不同的文件系统(包括即将在windows的下一个版本中使用的Winfs).它们分别是:FAt12.FAT16.FAT32.NTFS.NTFS5.0 ...
随机推荐
- wp8 longlistselector 动态加载datatemplate
在做一个windows phone 8 即时通讯应用的时候,聊天界面的对话气泡. 需要根据不同的消息类型,加载对应的DataTemplate, 比如发送,接受,图片,语音,等气泡. 如下图所示 会话界 ...
- LOGMNR分析redo log和archive log教程
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...
- pytorch遇到的问题:RuntimeError: randperm is only implemented for CPU
由此,我们找到sample.py,第51行如下图修改
- 【UML】概述以及面向对象技术总结
导读:结束了软工文档后,就开始了UML的学习,不管学习什么,都要先从整体上去把握,然后再从细节上去分析理解.在视频的开头,就对UML进行了概述.然后接着讲了面向对象技术,用例图,类图和包图等.看着软工 ...
- Oracle spool 用法小结
关于SPOOL(SPOOL是SQLPLUS的命令,不是SQL语法里面的东西.) 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: select taskindex|| ...
- Java类方法 类变量
类变量就是静态变量,类方法就是静态方法. 在理解类变量.类方法之前先看一段代码: class Person{ int age ; String name; static int totalFee; p ...
- BZOJ 2242 [SDOI2011]计算器 ——EXGCD/快速幂/BSGS
三合一的题目. exgcd不解释,快速幂不解释. BSGS采用了一种不用写EXGCD的方法,写起来感觉好了很多. 比较坑,没给BSGS的样例(LAJI) #include <map> #i ...
- BZOJ 2194 快速傅立叶之二 ——FFT
[题目分析] 咦,这不是卷积裸题. 敲敲敲,结果样例也没过. 看看看,卧槽i和k怎么反了. 艹艹艹,把B数组取个反. 靠靠靠,怎么全是零. 算算算,最终的取值范围算错了. 交交交,总算是A掉了. [代 ...
- 基于SEDA的异步框架设计与实现
基于SEDA的异步框架设计与实现 二.为什么使用SEDA 目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型.但是这两个模型都不足以解决这个问题.我们来首先看一下这两种编程 ...
- 算法复习——bitset(bzoj3687简单题)
题目: Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和. 目前 ...