第一百九十章 移植
第一百九十章移植
林鴻回到自己房間,心情激動(dòng)地將其中一張軟盤(pán)插入光驅(qū)之中,然后從命令行進(jìn)入了軟盤(pán)之中。
這里面有一個(gè)名為“sourcecode”文件夾,林鴻進(jìn)入這個(gè)文件夾,再用dir命令顯示了一下,列出了長(zhǎng)長(zhǎng)的一個(gè)文件夾列表。
林鴻大致的瀏覽了一下,發(fā)現(xiàn)這張軟盤(pán)里面保存的全部是源代碼,分門(mén)別類地放置在對(duì)應(yīng)的文件夾中,主要分為內(nèi)核、內(nèi)存管理和文件系統(tǒng)三大部分,其他都是一些引導(dǎo)代碼還有驅(qū)動(dòng)程序源代碼之類的。
將這塊軟盤(pán)退了出來(lái),林鴻查看了一下另外一張軟盤(pán)。
這張軟件里面的內(nèi)容才是minix的鏡像系統(tǒng),可以直接從這塊軟盤(pán)中啟動(dòng)進(jìn)行安裝。
現(xiàn)在的軟盤(pán)體積已經(jīng)比以前大多了,再加上linus直接將這個(gè)系統(tǒng)做成了壓縮鏡像,所以一張軟盤(pán)就裝下了。
林鴻本想立刻就進(jìn)行安裝,可是轉(zhuǎn)念一想,自己對(duì)這個(gè)系統(tǒng)并不是很熟悉,如果將原來(lái)的系統(tǒng)給刪掉了,他的很多事情就做不了了,例如上網(wǎng)和進(jìn)行程序開(kāi)發(fā)。
于是,他決定在硬盤(pán)上安裝雙系統(tǒng),能夠在啟動(dòng)的時(shí)候?qū)ο到y(tǒng)進(jìn)行選擇,這樣就可以按照需要進(jìn)入不同的系統(tǒng)。
不過(guò)林鴻暫時(shí)對(duì)雙系統(tǒng)安裝并不是很了解,于是暫時(shí)將這事放下,先去各大論壇查一下相關(guān)的資料。
在幾個(gè)論壇上逛了一圈,林鴻就基本上心中有數(shù)了,他原本就已經(jīng)有扎實(shí)的基礎(chǔ),心中也有一個(gè)模糊的概念,只是不想浪費(fèi)時(shí)間再去試驗(yàn)摸索,學(xué)習(xí)一下大家的經(jīng)驗(yàn)可以節(jié)省時(shí)間和精力。
雙系統(tǒng)啟動(dòng)其實(shí)很簡(jiǎn)單。
在硬盤(pán)的第一個(gè)扇區(qū)上記錄了兩個(gè)重要重要的區(qū)域,分別是mbr(主要啟動(dòng)記錄區(qū))和分區(qū)表。
這兩個(gè)區(qū)域都很重要,但是和啟動(dòng)有關(guān)的則是mbr。在這塊區(qū)域中,安裝了一個(gè)“開(kāi)機(jī)啟動(dòng)管理程序”,這個(gè)程序才是安裝雙系統(tǒng)的關(guān)鍵所在,只要將新系統(tǒng)的“開(kāi)機(jī)啟動(dòng)管理程序”也寫(xiě)進(jìn)硬盤(pán),這樣在開(kāi)機(jī)的時(shí)候,就會(huì)看到有兩個(gè)這樣的管理程序,選擇對(duì)應(yīng)的菜單,就可以進(jìn)入不同的系統(tǒng)。
這個(gè)原理,就好像是在超市門(mén)口拜訪兩個(gè)指示牌,一個(gè)是指向dos系統(tǒng),另外一個(gè)則是指向minix系統(tǒng)。
先去下樓去吃完晚飯之后,林鴻再次回到房間,正式開(kāi)始安裝minix。
為了順利將minix的“開(kāi)機(jī)啟動(dòng)管理程序”寫(xiě)入mbr,林鴻還廢了一番心思,剛開(kāi)始的幾次還沒(méi)能成功,幸好他之前已經(jīng)將原來(lái)的mbr給備份了,否則原來(lái)的系統(tǒng)可能都無(wú)法啟動(dòng)了。
經(jīng)過(guò)幾番嘗試,林鴻終于成功將minix給安裝到了硬盤(pán)上。
他迫不及待地重啟計(jì)算機(jī),然后選擇minix菜單,回車。
顯示器上立刻出現(xiàn)了許多檢測(cè)信息,不斷地向上滾動(dòng)著,這臺(tái)計(jì)算機(jī)的所有硬件都被檢測(cè)了一遍,全部都o(jì)k之后,最終才進(jìn)入了一個(gè)字符界面。
由于林鴻在此之前就已經(jīng)看過(guò)了那本《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》,所以對(duì)minix的系統(tǒng)命令非常熟悉,他很快就上手了,將所有記住的命令都試驗(yàn)了一遍。
接著,林鴻在這個(gè)操作系統(tǒng)里面找到了一份詳細(xì)的幫助手冊(cè),這是linus撰寫(xiě)的,里面詳細(xì)地列出了他對(duì)這個(gè)系統(tǒng)所進(jìn)行了哪些修改。
其中,令林鴻感到驚訝的是,linus竟然已經(jīng)順利完成了終端仿真器的編寫(xiě)。
也就是說(shuō),用這個(gè)完全可以和一些服務(wù)器進(jìn)行連接了。
林鴻立刻動(dòng)手試了一下,首先填上網(wǎng)絡(luò)賬號(hào)和密碼登錄網(wǎng)絡(luò),然后再輸入服務(wù)器的sam協(xié)會(huì)的bbs服務(wù)器ip地址,連接之后,再輸入服務(wù)器的登錄賬號(hào)和密碼。
仿真終端上出現(xiàn)了熟悉的命令行界面。
接下來(lái),林鴻按照l(shuí)inus所列舉的那些功能一個(gè)個(gè)試用過(guò)去,他發(fā)現(xiàn)原本只是用來(lái)作為教學(xué)用的精簡(jiǎn)版系統(tǒng),功能竟然已經(jīng)強(qiáng)大如斯,甚至比蘋(píng)果計(jì)算機(jī)前期的幾個(gè)版本的系統(tǒng)都要強(qiáng)大。
最讓林鴻動(dòng)心的功能,是linus竟然在里面集成了一個(gè)名為bash的shell程序。
這個(gè)程序?qū)嶋H上在系統(tǒng)剛啟動(dòng)的時(shí)候就運(yùn)行了,只不過(guò)林鴻并沒(méi)有察覺(jué),后來(lái)看了文檔之后才發(fā)現(xiàn),原來(lái)他看到的命令行界面并不是minix自帶的那個(gè),而是已經(jīng)被linus成功給替換了。
shell即外殼程序,這是區(qū)別于操作系統(tǒng)內(nèi)核的一個(gè)重要部分,通常的表現(xiàn)形式就是一個(gè)字符命令行界面,例如dos界面也是一個(gè)殼。
通過(guò)接受用戶輸入的命令,shell可以調(diào)用執(zhí)行相應(yīng)的應(yīng)用程序。
另外,shell也是一種程序設(shè)計(jì)語(yǔ)言,它可以交互式解釋和執(zhí)行用戶輸入的命令,或者自動(dòng)地解釋和執(zhí)行預(yù)先設(shè)定好的一連串的命令。作為程序設(shè)計(jì)語(yǔ)言,它定義了各種變量和參數(shù),并提供了許多在高階語(yǔ)言中才具有的控制結(jié)構(gòu),包括循環(huán)和分支。
有了這個(gè)shell,可以說(shuō),這個(gè)經(jīng)過(guò)linus改裝過(guò)后的系統(tǒng),功能已經(jīng)完全可以媲美dos系統(tǒng)了,更重要的是,這個(gè)操作系統(tǒng)的源代碼是公開(kāi)的,林鴻可以查看所有的實(shí)現(xiàn)細(xì)節(jié),而dos操作系統(tǒng)則是一個(gè)黑匣子,完全不知道底層的運(yùn)行機(jī)制,只能有一些有限的被封裝好的api接口和中斷。
林鴻立刻喜歡上了這個(gè)系統(tǒng),linus果然厲害,竟然將一個(gè)閹割版的操作系統(tǒng)改造到如此程度!
由于這個(gè)系統(tǒng)里面還沒(méi)有類似tel這樣的網(wǎng)絡(luò)程序,也沒(méi)有email郵件客戶端可以用來(lái)收發(fā)電子郵件,林鴻暫時(shí)從minix中退了出來(lái),重新選擇了ms-dos系統(tǒng)進(jìn)入。
他首先收取了電子郵件,發(fā)現(xiàn)linus在幾天前就給自己發(fā)了一封郵件,詢問(wèn)是否已經(jīng)收到了他郵寄的包裹?
林鴻立刻回信,說(shuō)今天剛剛收到,迫不及待地將其安裝到計(jì)算機(jī)中,對(duì)里面的功能的強(qiáng)大感到非常的驚嘆,他以后也將一起對(duì)這個(gè)系統(tǒng)進(jìn)行改造,希望能夠保持聯(lián)系,共享信息。
末了,林鴻還提起自己已經(jīng)編寫(xiě)了一個(gè)基于irc協(xié)議的聊天軟件,他會(huì)盡快將這個(gè)聊天軟件移植到minix系統(tǒng)下,這樣,他們就可以及時(shí)進(jìn)行在線聯(lián)系。
郵件發(fā)送出去之后,不到兩分鐘的時(shí)間,還沒(méi)等林鴻退出郵件系統(tǒng),就提示有新郵件到達(dá)。
林鴻看到郵件標(biāo)題之后微微一愣,沒(méi)想到linus今天正好在線。
“嗨,朋友,很高興終于收到你的回信!按照時(shí)間推算,這個(gè)包裹應(yīng)該早幾天就到達(dá)你這里,看來(lái)它在某個(gè)地方耽誤了幾天時(shí)間。
你說(shuō)的那個(gè)聊天軟件我很感興趣,非常期待你將它移植到這個(gè)系統(tǒng)中來(lái),你知道,這個(gè)系統(tǒng)中的軟件,目前還是少了一點(diǎn),過(guò)于單調(diào)了。而我則由于忙于修復(fù)底層的一些bug,暫時(shí)沒(méi)時(shí)間關(guān)注這些內(nèi)容。
對(duì)了,在這段時(shí)間內(nèi),我又對(duì)這個(gè)系統(tǒng)增加了幾個(gè)功能,我想你會(huì)用到其中的一個(gè)軟件,請(qǐng)查看郵件附件。
你的朋友linus.”
林鴻立刻將這封電子郵件中的兩個(gè)附件下載下來(lái)。
其中一個(gè)附件包很大,而另外一個(gè)則是文本文檔。
林鴻將文本文檔打開(kāi),閱讀起來(lái)。
“?”
他看到這篇文檔,主要是對(duì)的一個(gè)安裝說(shuō)明。
“竟然是編程語(yǔ)言編譯器!”
看到這里的內(nèi)容,林鴻頓時(shí)眼睛一亮。
他正在為這個(gè)問(wèn)題而煩惱,因?yàn)橹八谑煜inix操作系統(tǒng)的時(shí)候,根本沒(méi)有看到可以用來(lái)編程的軟件,這樣一來(lái),他就無(wú)法在里面進(jìn)行編程開(kāi)發(fā)。
因?yàn)椴僮飨到y(tǒng)平臺(tái)不同,在另外一個(gè)平臺(tái)上開(kāi)發(fā)的軟件,除非是特別定制模擬,否則根本無(wú)法在另外一個(gè)操作系統(tǒng)中正常運(yùn)行。
的全稱是“gnuc語(yǔ)言編譯器”,這是一套以gpl許可證所發(fā)行的自由軟件。在許多類unix操作系統(tǒng)中都可以看到它的身影,功能非常強(qiáng)大。
linus將其進(jìn)行了修改,使其可以順利移植到minix操作系統(tǒng)中,這樣一來(lái),就可以成功的在這個(gè)操作系統(tǒng)下直接開(kāi)發(fā)軟件,而不用專門(mén)切換到另外的平臺(tái)上。
編譯器的移植成功,和bash程序一樣,有著非常重要的意義。
林鴻對(duì)此也覺(jué)得非常激動(dòng),他立刻按照文檔中的說(shuō)明,將編譯器順利地集成到了原來(lái)的minix系統(tǒng)中。
他并沒(méi)有停止,而是再次重啟切換到dos平臺(tái)下,將自己之前編寫(xiě)的cqcq源代碼拷貝到軟盤(pán)中,再重啟進(jìn)入minix系統(tǒng),從軟盤(pán)中將源代碼讀取出來(lái),他要立刻將cqcq移植到這個(gè)平臺(tái)上來(lái)!
在dos下,為了方便菲麗絲的使用,他在原來(lái)的基礎(chǔ)上增加了一層圖形界面,讓其顯得更加方便操作。
但是在minix下,暫時(shí)還不支持鼠標(biāo)等操作,圖形化界面完全被拋棄了,只剩下了內(nèi)部的核心代碼。由于cqcq的源代碼本身就是用c語(yǔ)言編寫(xiě)的,所以林鴻的移植過(guò)程很順利,針對(duì)界面進(jìn)行重新設(shè)計(jì)之后,他使用將這個(gè)平臺(tái)下的程序成功給編譯出來(lái)了。
林鴻輸入賬號(hào)和密碼,進(jìn)行登錄,結(jié)果發(fā)現(xiàn)出線了一些由于粗心急促而造成的細(xì)微錯(cuò)誤,進(jìn)行修正,然后重新編譯。
再次啟動(dòng)之后,終于一切正常。輸入賬號(hào)和密碼,林鴻順利地上線了。
……
第一百九十章移植
第一百九十章移植,到(圣王txt下載)去
,