第一百九十章 移植
林鸿回到自己房间,心情激动地将其中一张软盘插入光驱之中,然后从命令行进入了软盘之中。
这里面有一个名为“sourcecode”文件夹,林鸿进入这个文件夹,再用dir命令显示了一下,列出了长长的一个文件夹列表。
林鸿大致的浏览了一下,发现这张软盘里面保存的全部是源代码,分门别类地放置在对应的文件夹中,主要分为内核、内存管理和文件系统三大部分,其他都是一些引导代码还有驱动程序源代码之类的。
将这块软盘退了出来,林鸿查看了一下另外一张软盘。
这张软件里面的内容才是minix的镜像系统,可以直接从这块软盘中启动进行安装。
现在的软盘体积已经比以前大多了,再加上linus直接将这个系统做成了压缩镜像,所以一张软盘就装下了。
林鸿本想立刻就进行安装,可是转念一想,自己对这个系统并不是很熟悉,如果将原来的系统给删掉了,他的很多事情就做不了了,例如上网和进行程序开发。
于是,他决定在硬盘上安装双系统,能够在启动的时候对系统进行选择,这样就可以按照需要进入不同的系统。
不过林鸿暂时对双系统安装并不是很了解,于是暂时将这事放下,先去各大论坛查一下相关的资料。
在几个论坛上逛了一圈,林鸿就基本上心中有数了,他原本就已经有扎实的基础,心中也有一个模糊的概念,只是不想浪费时间再去试验摸索,学习一下大家的经验可以节省时间和精力。
双系统启动其实很简单。
在硬盘的第一个扇区上记录了两个重要重要的区域,分别是mbr(主要启动记录区)和分区表。
这两个区域都很重要,但是和启动有关的则是mbr。在这块区域中,安装了一个“开机启动管理程序”,这个程序才是安装双系统的关键所在,只要将新系统的“开机启动管理程序”也写进硬盘,这样在开机的时候,就会看到有两个这样的管理程序,选择对应的菜单,就可以进入不同的系统。
这个原理,就好像是在超市门口拜访两个指示牌,一个是指向dos系统,另外一个则是指向minix系统。
先去下楼去吃完晚饭之后,林鸿再次回到房间,正式开始安装minix。
为了顺利将minix的“开机启动管理程序”写入mbr,林鸿还废了一番心思,刚开始的几次还没能成功,幸好他之前已经将原来的mbr给备份了,否则原来的系统可能都无法启动了。
经过几番尝试,林鸿终于成功将minix给安装到了硬盘上。
他迫不及待地重启计算机,然后选择minix菜单,回车。
显示器上立刻出现了许多检测信息,不断地向上滚动着,这台计算机的所有硬件都被检测了一遍,全部都ok之后,最终才进入了一个字符界面。
由于林鸿在此之前就已经看过了那本《操作系统:设计与实现》,所以对minix的系统命令非常熟悉,他很快就上手了,将所有记住的命令都试验了一遍。
接着,林鸿在这个操作系统里面找到了一份详细的帮助手册,这是linus撰写的,里面详细地列出了他对这个系统所进行了哪些修改。
其中,令林鸿感到惊讶的是,linus竟然已经顺利完成了终端仿真器的编写。
也就是说,用这个完全可以和一些服务器进行连接了。
林鸿立刻动手试了一下,首先填上网络账号和密码登录网络,然后再输入服务器的sam协会的bbs服务器ip地址,连接之后,再输入服务器的登录账号和密码。
仿真终端上出现了熟悉的命令行界面。
接下来,林鸿按照linus所列举的那些功能一个个试用过去,他发现原本只是用来作为教学用的精简版系统,功能竟然已经强大如斯,甚至比苹果计算机前期的几个版本的系统都要强大。
最让林鸿动心的功能,是linus竟然在里面集成了一个名为bash的shell程序。
这个程序实际上在系统刚启动的时候就运行了,只不过林鸿并没有察觉,后来看了文档之后才发现,原来他看到的命令行界面并不是minix自带的那个,而是已经被linus成功给替换了。
shell即外壳程序,这是区别于操作系统内核的一个重要部分,通常的表现形式就是一个字符命令行界面,例如dos界面也是一个壳。
通过接受用户输入的命令,shell可以调用执行相应的应用程序。
另外,shell也是一种程序设计语言,它可以交互式解释和执行用户输入的命令,或者自动地解释和执行预先设定好的一连串的命令。作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。
有了这个shell,可以说,这个经过linus改装过后的系统,功能已经完全可以媲美dos系统了,更重要的是,这个操作系统的源代码是公开的,林鸿可以查看所有的实现细节,而dos操作系统则是一个黑匣子,完全不知道底层的运行机制,只能有一些有限的被封装好的api接口和中断。
林鸿立刻喜欢上了这个系统,linus果然厉害,竟然将一个阉割版的操作系统改造到如此程度!
由于这个系统里面还没有类似telcom这样的网络程序,也没有email邮件客户端可以用来收发电子邮件,林鸿暂时从minix中退了出来,重新选择了ms-dos系统进入。
他首先收取了电子邮件,发现linus在几天前就给自己发了一封邮件,询问是否已经收到了他邮寄的包裹?
林鸿立刻回信,说今天刚刚收到,迫不及待地将其安装到计算机中,对里面的功能的强大感到非常的惊叹,他以后也将一起对这个系统进行改造,希望能够保持联系,共享信息。
末了,林鸿还提起自己已经编写了一个基于irc协议的聊天软件,他会尽快将这个聊天软件移植到minix系统下,这样,他们就可以及时进行在线联系。
邮件发送出去之后,不到两分钟的时间,还没等林鸿退出邮件系统,就提示有新邮件到达。
林鸿看到邮件标题之后微微一愣,没想到linus今天正好在线。
“嗨,朋友,很高兴终于收到你的回信!按照时间推算,这个包裹应该早几天就到达你这里,看来它在某个地方耽误了几天时间。
你说的那个聊天软件我很感兴趣,非常期待你将它移植到这个系统中来,你知道,这个系统中的软件,目前还是少了一点,过于单调了。而我则由于忙于修复底层的一些bug,暂时没时间关注这些内容。
对了,在这段时间内,我又对这个系统增加了几个功能,我想你会用到其中的一个软件,请查看邮件附件。
你的朋友linus.”
林鸿立刻将这封电子邮件中的两个附件下载下来。
其中一个附件包很大,而另外一个则是文本文档。
林鸿将文本文档打开,阅读起来。
“gcc?”
他看到这篇文档,主要是对gcc的一个安装说明。
“竟然是编程语言编译器!”
看到这里的内容,林鸿顿时眼睛一亮。
他正在为这个问题而烦恼,因为之前他在熟悉minix操作系统的时候,根本没有看到可以用来编程的软件,这样一来,他就无法在里面进行编程开发。
因为操作系统平台不同,在另外一个平台上开发的软件,除非是特别定制模拟,否则根本无法在另外一个操作系统中正常运行。
gcc的全称是“gnuc语言编译器”,这是一套以gpl许可证所发行的自由软件。在许多类unix操作系统中都可以看到它的身影,功能非常强大。
linus将其进行了修改,使其可以顺利移植到minix操作系统中,这样一来,就可以成功的在这个操作系统下直接开发软件,而不用专门切换到另外的平台上。
gcc编译器的移植成功,和bash程序一样,有着非常重要的意义。
林鸿对此也觉得非常激动,他立刻按照文档中的说明,将gcc编译器顺利地集成到了原来的minix系统中。
他并没有停止,而是再次重启切换到dos平台下,将自己之前编写的cqcq源代码拷贝到软盘中,再重启进入minix系统,从软盘中将源代码读取出来,他要立刻将cqcq移植到这个平台上来!
在dos下,为了方便菲丽丝的使用,他在原来的基础上增加了一层图形界面,让其显得更加方便操作。
但是在minix下,暂时还不支持鼠标等操作,图形化界面完全被抛弃了,只剩下了内部的核心代码。由于cqcq的源代码本身就是用c语言编写的,所以林鸿的移植过程很顺利,针对界面进行重新设计之后,他使用gcc将这个平台下的程序成功给编译出来了。
林鸿输入账号和密码,进行登录,结果发现出线了一些由于粗心急促而造成的细微错误,进行修正,然后重新编译。
再次启动之后,终于一切正常。输入账号和密码,林鸿顺利地上线了。
……