1、用WinImage来写入到引导区的详细步骤:

启动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)的更多相关文章

  1. 【转载】FAT12格式的引导程序

    FAT12格式的引导程序 在上一篇文章中详细介绍了FAT12格式的引导扇区数据结构,详情请浏览: 地址是:http://blog.sina.com.cn/s/blog_3edcf6b80100cr08 ...

  2. FAT12格式的引导区实现

    org 07c00h ;================================================ jmp short START nop ; 这个 nop 不可少 ;这个结构将 ...

  3. 关于SQL优化(转载,格式有调整)

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  4. 【转载】FAT12文件系统之引导扇区结构

    FAT12文件系统之引导扇区结构 文件系统即文件管理系统,是操作系统的重要组成部分之一,如果需要开发底层磁盘驱动或编写自己的操作系统,就必须详细了解文件系统. FAT12是Microsoft公司DOS ...

  5. 汇编语言进阶和Makefile进阶---第二天

    摘要: 原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 首先加载启动代码: ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序装载地 ...

  6. 自制操作系统 (三) 从启动区执行操作系统并进入C世界

    qq:992591601 欢迎交流 2016.04.03 2016.05.31 2016.06.29 这一章是有些复杂的,我不太懂作者为什么要把这么多内容都放进一天. 1读入了十个柱面 2从启动区执行 ...

  7. [自制简单操作系统] 1、从0-1到汇编再到c语言的奥秘

    目录: 1.用0-1编写最简单的操作系统 2.用汇编改写上面0-1程序 2.1 只用DB的汇编改写版  2.2 加入RESB汇编的改写版  2.3 进一步使用汇编替换0-1文件  2.4 核心程序也用 ...

  8. 自制操作系统(二) 让bootsector开机启动打印一首诗

    qq:992591601 欢迎交流 2016-03-31作 2016-06-01.2016-06-27改 我总结了些基本原理: 1.软盘的第一个扇区为启动区 2.计算机读软盘是以512字节为单位来读写 ...

  9. Windows文件系统

    微软在Dos/Windows系列操作系统中共使用了6种不同的文件系统(包括即将在windows的下一个版本中使用的Winfs).它们分别是:FAt12.FAT16.FAT32.NTFS.NTFS5.0 ...

随机推荐

  1. Selenium启动项参数设置

    再Selenium中使用不同的Webdriver可能会有不一样的方法,有些相同的操作会得到不同的结果, 本文主要介绍的是Chrome()的使用方法. 其他的Webdriver可以参考官方文档 Chro ...

  2. 3,bool值之间的转换,和str的各个功能属性。

    bool值之间的转换 and 空字符串即为False   字符串内有内容即为True. a = 11 c = str(a) #int转换成str print(type(c)) a = ' b = in ...

  3. Exchange 正版化 授权

    网友说法: Exchange服务器版其实价格不高,企业版也就是几万左右,贵的是客户端授权,一个客户端授权大概要300多.但是,但是,中国企业买Exchange客户端一般都是可以按比例买的,比如10%- ...

  4. 九度oj 题目1536:树的最小高度

    题目描述: 给定一棵无向树, 我们选择不同的节点作为根节点时,可以得到不同的高度(即树根节点到叶子节点距离的最大值), 现在求这棵树可能的最低高度. 输入: 输入可能包含多个测试案例. 对于每个测试案 ...

  5. BZOJ 1012 [JSOI2008]最大数maxnumber【线段树】

    水题,每次记录一下当前有多少个数,然后按照题目所指示的那样模拟就行,每次向线段树末尾插入(其实是修改)题目中指定的数,然后询问当前的个数到前面Q个数中最大值是多少结果就是,好久不碰线段树了,用数组模拟 ...

  6. leetcode 349 map

    只需要用map来标记1,今儿通过map的值来得到重叠的部分 class Solution { public: vector<int> intersection(vector<int& ...

  7. [暑假集训--数位dp]hdu2089 不要62

    杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍, ...

  8. response.sendRedirect(location)与rd.forward()区别

    在Java Web开发中,经常会用到跳转页面的方法,一般有下面两种方法. HttpServletResponse response = new HttpServletResponse(); respo ...

  9. 《Spring Security3》第四章第三部分翻译下(密码加salt)

    你是否愿意在密码上添加点salt? 如果安全审计人员检查数据库中编码过的密码,在网站安全方面,他可能还会找到一些令其感到担心的地方.让我们查看一下存储的admin和guest用户的用户名和密码值: 用 ...

  10. Android 之 下拉框(Spinner)的使用-转

    下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考 一.使用数组作为数 ...