自制操作系统 第1步

来源:互联网 发布:怎么在淘宝上找黑客 编辑:程序博客网 时间:2024/05/21 17:02


//这已经是我第4次发起向操作系统的进攻,虽说前三次都以失败而结束但是却积累了很多经验。虽说这些经验在面试,和做项目中都未曾有用过,但是当我现在慢慢临近毕业,在嵌入式Linux开发中发现 以前积累的失败经验都有用了起来,这也让我重新燃起了希望。然后毅然辞掉了实习工作,呆在家里来完成我大学的梦想。  千万不要失败啊奋斗


//我的操作系统分三步 第一步主要是完成<30天自制操作系统> 这个比较简单 相比 Linux0.01 mini 2.0 Orange'S  第二步 以 Orang'S linux 0.01为主 使操作系统在进程调度上更加完整  第三步 将开发平台移植到s3c2440上,然后来完成USB,platform等实验 。 我的大饼画好了,现在开始来奋斗吧


选择的开发环境:win7搭载VM9 + Ubuntu 14

选择 自制操作系统运行环境 bochs

选择 初期汇编工具 as86

选择 链接器 ld86

//参考数据 <Linux内核完全解剖 基于0.12>, 《30天自制操作系统》,《Linux内核0.01分析与操作系统设计》,《Orang's 一个操作系统的实现》


说了这么多,还是把实验结果贴出来,大家可以来参考下

!boot.s  bootsect.s框架.globl begtext,begdata,begbss,endtext,enddata,endbss.textbegtext:.databegdata:.bssbegbss:.textbootseg = 0x07c0entry startstart:jmpi go,bootseggo:mov ax,csmov ds,axmov es,axmov [msg1+17],ahmov cx,#20mov dx,#0x1004mov bx,#0x000cmov bp,#msg1mov ax,#0x1301int 0x10loop0:jmp loop0msg1:.ascii "loading system...".byte 13,10.org 510.word 0xaa55.textendtext:.dataenddata:.bssendbss:
Makefile

AS86 =as86 -0 -aLD86 =ld86 -0src = boot.sobj = boot$(obj):$(src)$(AS86) -o boot.o $(src)$(LD86) -s -o $(obj) boot.o

-rwxr-xr-x 1 root root   544 Jan 29 21:19 boot
-rw-r--r-- 1 root root   231 Jan 29 21:19 boot.o
-rw-r--r-- 1 root root   464 Jan 29 20:49 boot.s

一定要看清上面 boot的大小是544, 然后用dd命令dd bs=32 if=boot of=a.img skip=1 //a.img 是bximage 虚拟出来的软盘

!运行正常


这篇写的不好写东西没说明处,关键是有点激动,弄了两天才能启动,还有4个月毕业时间紧张啊。


对了as86,ld86的安装,它们在bin86里面,所以你只要安装了bin86就可以了

# apt-cache search as86bin86 - 16-bit x86 assembler and loader

Now we know it's in bin86 package, and we do:

# apt-get install bin86


0 0