`
envy2002
  • 浏览: 153820 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

最简单操作系统(orange os样例).

阅读更多

于渊的《自己动手写操作系统》告诉我们如何自己写一个操作系统,当然写操作系统是个很难的事情,所以我们要慢慢来,先看看如何展示在裸机上写一个最小最小的“操作系统”,也许根本称不上操作系统。

 

操作系统的初步概念。

 

操作系统就是用CPU指令控制硬件,发声,发光,读写等等。CPU不同也会导致指令集合不同,CPU有通用CPU,arm芯片等等,还有专用的芯片等等。我们这里考虑的是80*86,intel通用CPU。

 

在我们在电脑城购买了一台裸机,拼装好之后,实际上已经附带了一个操作系统,BIOS系统。这里面已经集合了一些功能和“函数”。

如果我们进入这个操作系统,我们还是能获得很多能力的,一个图形化的界面,呵呵。还有一些看不到的内容,终端向量的设置,就是一些函数。(当我们需要调用的时候,发个终端,CPU执行终端功能代码,就好比,我们叫“我要吃饭”(12号中断),找到12号中断的入口地址(12号服务给你炒菜做饭),然后返回。

 

   我们要自己写一个操作系统,写入硬盘,然后从这个影片启动。

   首先创造一个虚拟硬盘。

  

 

 

   调整这些硬盘的端口数,就可以调整这些硬盘的启动顺序,我们先让ubuntu.vdi在上面,进入系统,我们还要做一些事情。

   创造好虚拟硬盘后,但是这个硬盘还没有格式化,就是CPU无法对其进行读写,硬盘的mbr都没有建立。mbr大概好比沃尔玛建立了一个大超市,但是没有柜子,格子,货架。大米放哪个货架,白砂糖要放哪个格子,都是有规矩的。mbr就好比硬盘的格子,柜子,方便CPU定位物理存储位置。

 

    我们需要用fdisk这个工具格式化/dev/sdb下面这个盘。具体细节以后补充。

 

   首先,我们要切换到用户root

    su root,输入root 用户密码。

    键入命令 fdisk -l可以看到硬盘的分区情况,如图。

    键入help,可以看到fdisk命令的用处。

 

首先,我们要n

    创建一个primary partion, 分区都是默认值,最后w,写入磁盘。

    这样分区就创建好了。

    操作系统用NASM编译好后,放到共享文件夹里面,用dd写到格式化好的硬盘中去。

   代码直接从一个哥们的网站上copy过来。

 

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) 黑底红字(b1 = 0Ch,高亮)  
 mov dl,0  
 int 10h  
 ret  
BootMessage: db "Hello, OS world!"  
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码  
     ;为512字节  
dw 0xaa55    ;结束标志  
 
    格式化好了,再用dd工具把“操作系统"写到这个磁盘中。

   如果你想确认一下里面的数据是否正确 用命令 hexdump /dev/sdb看看和你的“操作系统”的二进制是否一致。

 

    但是我后来又摸索了一下,好像分区不是必要条件,只需要用dd写入到这个磁盘,然后从这个磁盘启动就OK了。

 

    但是写orange OS,和bochs 2.4.6里面的oldlinux的Image好像是OK的,用linux0.00(交替产生“aaaa","bbbb"那个版本的)好像不OK,还有dd这个工具写入,有时好像会写错,反正就是和我用UE看到的16进制不同。

    启动之后的效果图如下:

 

分享到:
评论

相关推荐

    Orange_'s.一个操作系统的实现.pdf—af

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....

    orange's一个操作系统的实现-【自己动手写操作系统第二版】

    《orange's一个操作系统的实现-【自己动手写操作系统第二版】》是一本深入浅出的操作系统构建指南,作者为于渊。这本书旨在帮助读者通过实际操作来理解操作系统的原理和构造,适合对操作系统感兴趣的DIY爱好者和...

    Orange_'s.一个操作系统的实现.pdf—ad

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_...

    Orange_'s.一个操作系统的实现.pdf—ab

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....

    [ORANGE’S:一个操作系统的实现].于渊.清晰扫描版.pdf.part1

    操作系统教材是个令人生畏的东西,它可以告诉人有什么,却不能告诉人为什么,从那里了解的操作系统有如盲人摸到的象,得到各个部分,却不能拥有整体,加之缺乏实践的支持,理论显得苍白空洞。如Linux般的开源操作...

    笔记_Orange_S一个操作系统的实现.pdf

    笔记_Orange_S一个操作系统的实现

    Orange_'s.一个操作系统的实现.pdf

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....

    Orange_'s.一个操作系统的实现.pdf—ae

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s...

    Orange_'s.一个操作系统的实现.pdf—ag

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....

    ORANGE’S:一个操作系统的实现.pdf

    ORANGE’S:一个操作系统的实现.pdf

    Orange_'s.一个操作系统的实现.pdf—ac

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_...

    Orange_'s.一个操作系统的实现.part2

    Orange_'s.一个操作系统的实现.part2

    Orange_'s.一个操作系统的实现

    Orange_'s 操作系统的实现是计算机科学领域中的一个重要话题,涉及到操作系统设计与开发的核心概念和技术。这个主题通常涵盖操作系统的基本架构、进程管理、内存管理、文件系统、设备驱动、中断处理以及调度算法等多...

    orange.xingchenzhineng.cn

    orange.xingchenzhineng.cn

    orange一个操作系统设计与实现光盘part1

    "orange一个操作系统设计与实现光盘part1"是关于操作系统设计与实现的教育资源,主要涵盖了1至4章的内容。这个资源包含源码,为学习者提供了深入理解操作系统工作原理的实践平台。操作系统(Operating System,简称...

    [ORANGE’S:一个操作系统的实现].于渊.清晰扫描版.part3

    [ORANGE’S:一个操作系统的实现].于渊.清晰扫描版.part3 用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。  对操作系统的兴趣由来已久,只是一直未能找到入门之径...

    Orange_'s.一个操作系统的实现.pdf—ah

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....

    Orange_'s.一个操作系统的实现.pdf—ai

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....

    Orange_'s.一个操作系统的实现.pdf—aj

    一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....

    ORANGE’S:一个操作系统的实现(高清晰版PDF)

    《Orange’s:一个操作系统的实现》是一本详细探讨操作系统构建的书籍,主要针对那些对操作系统原理和实现感兴趣的读者。这本书的高清晰版PDF版本解决了扫描版存在的文字不清、图片模糊的问题,提供了更好的阅读体验...

Global site tag (gtag.js) - Google Analytics