自己动手写操作系统之环境搭建

 

自己动手写操作系统之环境搭建

 

 

       前天晚上为了搭配这个工作环境,熬夜到两点半,最终还是因为脖子实在疼得难受才爬到床上,其实工作原理是比较简单的,但是因为我连Linux菜鸟都算不上,所以学学命令,而且当时没弄清楚原理就照着书一步一步做,很显然就失败了!昨天中午我还是老老实实在Windows下把环境配置起来了,这一路过来,艰难啊~~

 

       卸载OpenSuse

       之前装了OpenSuseLinux版本,但是用起来很别扭,于是就一心想给卸了,但是却不知道怎么卸,我知道“我的电脑”里面“磁盘管理”可以格式化装Suse的盘,可是这样一格式化D/E都没了,以前我就干过这事,具体原因不详。想到从PE里进行格式化可能没事,于是就赌了一把,我的一两年资料如果没了我肯定会疯的。结果呢,当然是没事了,否则就不会有今天这篇文章了。

 

       Ubuntu

       都说Ubuntu好,第一图形化操作做的和Windows几乎差不多,第二可以学习的中文社区比较多,所以是非常适合初学者的。我也准备装这个系统,从同学那找到一个光盘,可是这破光驱根本读不了系统盘,之前我就因为装不了Win7而不得不现在还在坚守XP。总得有办法可以装吧,请教RoboCup那边的人,他们用Linux用的很多了。不错,可以引导从本地硬盘装,很快就搞定了,只用了不到十几分钟。

 

       差点奔溃了!

       昨天中午在Linux下乱弄乱弄,把一个.bin文件放到WindowsC盘下去了,之后重启发现屏幕不亮了,也进不去PE,但是磁盘再转,囧,当时呆住了,难道又做错事了!关了重启还是那样很有创意地将电池给卸了下来,用电源给电,竟然好了,我实在不明白是什么原因,和电池有关系吗???

 

 

       什么是自己动手写操作系统

       说了这么多,我到底要干什么?主要就是我想把《一个Orange’s 操作系统的实现》这本书的环境给搭配起来,书中第一章是教我们在十分钟写个操作系统。要准备的就是一台PC,汇编编译器NASM,一张软盘,前面两个很简单,至于软盘嘛,我好像是高中见到过,现在也好像没有哪个机子上有软驱了吧,所以这个实验是没办法做的。但是第二章就告诉你怎样可以不用在真实环境下实现这个小操作系统,这就是要用到虚拟机。虚拟机,顾名思义就是虚拟的计算机,可以虚拟计算机的各个部件,包括软盘,那样,我们就可以用这款软件模拟真实的计算机,来测试我们写的操作系统了。

       当然可以在Windows下,也可以在Linux下装这个虚拟机了,不过在Windows下,还要在虚拟机下装Linux,因为我们编写的操作系统的内核要最终编译成ELF格式的文件,那我还不如装Linux直接在那下面完成呢。至于虚拟机有很多种了,像QemuVirtual PCVM WareBochs等等…..

      

代码解析

       书中给的第一个例子是这样不超过20行的代码:

 

        可以看出这个程序完全运行在裸机上,不依赖于任何操作系统或者软件,(注:这里的虚拟机没有装任何软件),我们将这段代码(boot.asm)编译成boot.bin,用如下命令:

        Nasm boot.asm –o boot.bin

        在将boot.bin做成软盘映像,不过在此之前当然要用虚拟机虚拟一个软盘了,具体的命令不同的虚拟机不一样。再进行一些简单的配置,让虚拟机启动时从我们这个软盘引导程序启动。你会观察到一行红色的Hello, Os World!显示在桌面上。

        再来看看上段代码,打印程序是DispStr这个函数(第7-15行)执行的,很容易明白。第一行是告诉编译器这个程序将来要加载到内存偏移0x7c00处,为什么呢?主要是当打开计算机时,它会进行加电自检,然后寻找启动盘,如果是选择从软盘启动,计算机就会检查软盘的00磁道1扇区,找到引导扇区,一旦BIOS发现Boot Section,就会将这段代码装载到内存地址0x7c00,然后跳转到0000:7c00处将控制权交给这段引导代码。

        而计算机怎样才能识别是不是一个Boot Section 呢?要满足两个条件,第一代码要以0xaa55结束,第二代码长度不少于512字节。这样1718行就容易理解了,在nasm$表示当前行的地址,$$是节(section)的地址,所以times  510-($-$$)  db  0 就是用0天才剩下的空间,再加上结束符0xaa55正好就是512字节了。

 

运行的结果

 

 

       可以看到在屏幕上显示一行黑底红字“helloos world!”因为程序中没有清屏程序,所以比较乱。

       今后这本书所有程序就在此虚拟环境下进行,将这个操作系统一步一步地扩充。很是令人激动!

 

小感

       学了三周的操作系统课,感觉书本上讲的还是理论的东西,也没教你具体写个小的操作系统,所以借了这本书,网上评价还是蛮高的。这书难度确实挺大的,看了看到第三章,傻了,看了好几遍终于有点头绪了,觉得很好!

       顺便熟悉一下Linux,也不错~~看再多书,即使是背再多的命令,不动手用用还是不会,之前我也读过Linux的书,这次才在实战中用了一回,不去刻意去记几条命令行,用到的时候去百度一下,然后多用几次自然就会了~

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值