于渊的《自己动手写操作系统》告诉我们如何自己写一个操作系统,当然写操作系统是个很难的事情,所以我们要慢慢来,先看看如何展示在裸机上写一个最小最小的“操作系统”,也许根本称不上操作系统。
操作系统的初步概念。
操作系统就是用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进制不同。
启动之后的效果图如下:
分享到:
相关推荐
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....
《orange's一个操作系统的实现-【自己动手写操作系统第二版】》是一本深入浅出的操作系统构建指南,作者为于渊。这本书旨在帮助读者通过实际操作来理解操作系统的原理和构造,适合对操作系统感兴趣的DIY爱好者和...
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_...
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....
操作系统教材是个令人生畏的东西,它可以告诉人有什么,却不能告诉人为什么,从那里了解的操作系统有如盲人摸到的象,得到各个部分,却不能拥有整体,加之缺乏实践的支持,理论显得苍白空洞。如Linux般的开源操作...
笔记_Orange_S一个操作系统的实现
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s...
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....
ORANGE’S:一个操作系统的实现.pdf
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_...
Orange_'s.一个操作系统的实现.part2
Orange_'s 操作系统的实现是计算机科学领域中的一个重要话题,涉及到操作系统设计与开发的核心概念和技术。这个主题通常涵盖操作系统的基本架构、进程管理、内存管理、文件系统、设备驱动、中断处理以及调度算法等多...
orange.xingchenzhineng.cn
"orange一个操作系统设计与实现光盘part1"是关于操作系统设计与实现的教育资源,主要涵盖了1至4章的内容。这个资源包含源码,为学习者提供了深入理解操作系统工作原理的实践平台。操作系统(Operating System,简称...
[ORANGE’S:一个操作系统的实现].于渊.清晰扫描版.part3 用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。 对操作系统的兴趣由来已久,只是一直未能找到入门之径...
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....
一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> Orange_'s....
《Orange’s:一个操作系统的实现》是一本详细探讨操作系统构建的书籍,主要针对那些对操作系统原理和实现感兴趣的读者。这本书的高清晰版PDF版本解决了扫描版存在的文字不清、图片模糊的问题,提供了更好的阅读体验...