30天自制操作系统 (一个操作系统的实现)

原创 2016年06月01日 21:31:04

10分钟搞出一个简单操作系统

1 准备工作

  • 安装虚拟机(VMware-workstation),下载好虚拟机安装包之后,点击下一步安装就行。
  • 在虚拟机(VMware-workstation)中安装一个系统,笔者安装的是windows10(当然win7,win8,Linux都可以)。
  • 汇编编译器NASM,下载并安装。

2 用汇编写一个显示“Hello,OS world”的boot.asm文件

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

3 用NASM编译boot.asm文件生成boot.bin二进制文件

  • 按照提示默认安装完成NASM之后,桌面会出现右图的图标
  • 这里写图片描述
  • 双击图标,出现下图
  • 双击图标,出现下图
  • 进入boot.asm所在的目录,我的boot.asm在D盘根目录,即D:\boot.asm
  • 进入之后,如图
  • 这里写图片描述
  • 输入以下命令,
  • nasm boot.asm -o boot.bin
    如图
  • 生成boot.bin文件
    这里写图片描述

4 生成A.img文件

生成A.img需要用到软件FloppyWriter.exe,(同样上传该工具)

  • 首先新建一个文件,将其名称及后缀改成“a.img”,目前a.img是空白的。这里写图片描述
  • 打开FloppyWriter.exe,出现这里写图片描述

  • 点击第二项“Write FIle to Image”如图,并选择第三步生成的boot.bin 文件这里写图片描述

  • 点击打开,选中刚才新建的a.img
  • 这里写图片描述
  • 成功
  • 这里写图片描述

好,现在回顾一下我们都做了什么。

  1. 汇编写boot.asm文件
  2. 用nasm编译成boot.bin
  3. 新建空白a.img,然后用FloppyWriter 将boot.bin写入a.img.

ok,继续下一步

5 打开虚拟机,这里写图片描述 点击“编辑虚拟机设置”

出现
这里写图片描述
点击“软盘驱动器”,下一步
点击使用软盘映像
点击使用软盘映像
点击 下一步,然后将a.img加载进去
这里写图片描述
然后 完成 –确定。

6 激动人心的时刻到了

这里写图片描述

好,你已经成功将“Hello,OS world”显示出来了

版权声明:给别人一份尊重,留自己一方安心。

《30天自制操作系统》——从汇编到C

这次我们要用到4个文件,分别是ipl.nas、asmhead.nas、func.nas和 bootpack.c。 ipl.nas是引导扇区中的16bit程序,用于从磁盘中加载数据并跳转到asmhead...
  • ekkie
  • ekkie
  • 2016年05月12日 00:32
  • 900

《30天自制操作系统》U盘启动,真机运行(16天)

首先说一下到目前为止U盘启动遇到的问题,首先的一个问题是“system volume information“,目前尚未解决,这个问题可能导致U盘启动失败,我猜测可能是由于每一次重新将OS写到U盘的时...
  • m47838704
  • m47838704
  • 2015年07月10日 20:18
  • 2544

《30天自制操作系统》——虚拟机使用

《30天自制操作系统》是一本学习操作系统的好教材,它教我们怎么从建立引导区开始,从零实现一个操作系统。但是,实现书中例子的时候,我们需要不断将我们写好的操作系统代码写入软盘并且还要不断重启电脑来试验我...
  • ekkie
  • ekkie
  • 2016年05月08日 12:45
  • 1039

一个完整的自制操作系统

  • 2015年05月07日 10:00
  • 652KB
  • 下载

<30天自制操作系统>第六天

为了让鼠标能移动起来,必须使用中断,而要使用中断则必须将GDT和IDT初始化。在此之前,首先要初始化PIC,它的意思是可编程中断控制器。它是将多个中断信号集合成一个中断信号的装置,PIC检测着输入管脚...
  • talent_CYJ
  • talent_CYJ
  • 2016年07月25日 11:20
  • 315

<30天自制操作系统>第四天

第四天内容主要是基于第三天的图形界面显示更进了一步。主要是更复杂的显示,而不是单纯的切换到显示模式。对显卡内存进行数据写入,从而显示出我们想要的画面。想要画东西,只要往VRAM里写数据即可,先看以下程...
  • talent_CYJ
  • talent_CYJ
  • 2016年07月22日 14:03
  • 581

自制操作系统--(8)内核

神说、内核要有自己的数据、使用户不可访问.事就这样成了。  神称高地址为内核空间、称低地址为用户空间. 神看着是好的。  神说、用户要有自己的进程、和自己的页表、并可以进行系统调用.事就这样成了。...
  • hao707822882
  • hao707822882
  • 2014年10月06日 10:59
  • 642

自制操作系统学习心得(一)

第一次自制操作系统,感觉挺高大上的。 把第一天遇到的问题总结一下: 首先是下载BinaryEditor,进行二进制代码的编写,书上给的链接貌似打不开,自己上网上找了一个链接如下http://zhi...
  • MHSMIE
  • MHSMIE
  • 2016年03月04日 16:35
  • 1166

30天自制操作系统——用U盘启动自制系统

最近试读了《30天自制操作系统》的前两章,感觉很有意思。 但是发现里面写的系统都是用软盘启动的,现在在大多数电脑上已经看不见软驱了,所以如果想运行书中的操作系统只能通过qemu(随书光盘中已经附...
  • h820911469
  • h820911469
  • 2014年02月28日 14:52
  • 4756

手写一个X86操作系统实战:从零开始构建一个U盘启动的自制操作系统(一)

from:http://www.cnblogs.com/bombless/archive/2010/12/28/writing-x86-os-part1.html 这个标题可能有点大了:-) 一个...
  • kendyhj9999
  • kendyhj9999
  • 2011年11月20日 10:11
  • 845
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:30天自制操作系统 (一个操作系统的实现)
举报原因:
原因补充:

(最多只允许输入30个字)