這篇筆記,不記錄應用軟件,不測評遊戲,專門討論一下這個問題:deepin到底算不算“國產系統”?
總有人說不是。
他們的理由很簡單:
【因為 deepin 是基於 linux 內核的,而他們認為 linux 內核是“別人的東西”,不屬於中國,所以基於 linux 內核而開發出來的操作系統就“不配、也不應該自稱、或者被稱作國產操作系統”。】
看起來好像“很有道理”的樣子。
但這裡實際上有幾個隱藏問題需要解決、或者說得先了解清楚:
第一,什麼是操作系統內核,它起什麼作用?
這裡直接援引度娘百科的解釋:
內核是操作系統最基本的部分。它是為眾多應用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,並且內核決定一個程序在什麼時候對某部分硬件操作多長時間。內核的分類可分為單內核和雙內核以及微內核。嚴格地說(或者從理論上來講,編者注),內核並不是計算機系統中必要的組成部分。
重點強調一遍:內核並不是計算機系統中必要的組成部分!
在早期的計算機(電腦)中,程序可以直接地被調入計算機中執行,不需要任何硬件抽象和操作系統的支持。後來,一些輔助性程序,例如程序加載器和調試器,被設計到機器核心當中,或者固化在只讀存儲器裡——這些變化發生時,操作系統內核的概念就漸漸明晰起來了。
所以,電腦操作系統的產生與發展,其實是排在應用程序之後的。
即——先有了可以運行在電腦上的應用程序,接著才出現了操作系統!
當然,現在的電腦或者其它智能設備的用戶已經完全離不開操作系統了,畢竟發展到現在這個時代,幾乎所有的應用都必須依賴於操作系統才能運行。可以說,如今這個時代,若是沒有操作系統,用戶什麼應用都實現不了。
那麼,操作系統內核到底起什麼作用呢?
簡單理解,內核的作用是:負責管理電腦系統的進程、內存、設備驅動,管理文件系統和網絡系統。
第二,自己開發一個操作系統內核有多難?它是核心技術嗎?
答案是——並不難,甚至可以說是很簡單!
參考魚丸在2018年12月27日轉發的頭條內容,幾乎任何能看懂的人,都能自己寫出一個操作系統內核來……而所謂“能看懂”所需的條件也不高,別說相關專業的大學生了,大概一個對這方面有興趣、肯鑽研、並具備了一定水平的高中生都能搞的定!
鏈接地址:
所以“自己開發內核”什麼的,根本不是多難的項目,它甚至還很基礎,根本不是什麼“核心技術”,甚至離這個概念還差了N個筋斗雲的距離。
別忘了,linux 的創始人 Linus 當年寫出第一版 linux 操作系統內核的時候,還是個年僅21歲的大學生。那時候他還沒登上神壇成為大神,大概也沒想到他創造的 linux 系統後來能改變世界。他當初寫出第一版 linux 操作系統內核的原因十分簡單:他經常要用他的終端仿真器(Terminal Emulator)去訪問大學主機上的新聞組和郵件,為了方便讀寫和下載文件,他自己編寫了磁盤驅動程序和文件系統,這些在後來成為了 Linux 第一個內核的雛形。
綜上所述,完全可以得出這樣的結論:
從理論上來講,“自主研發”操作系統內核並不難,甚至還很簡單。
Linus 能在21歲時編寫出 linux 操作系統的雛形,現在20出頭的大學生也可以,甚至還有可能比他當年做得更好。
這裡還要提及一點:有人人為 linux 內核是美國的,但事實上並非如此。
Linus 是芬蘭人,他編寫出最早的 linux 內核的雛形的時候,在位於芬蘭首都赫爾辛基的赫爾辛基大學就讀。所以,linux 是誕生在 芬蘭的。
第三,既然“自主研發”操作系統內核並不難,那為什麼國產系統還非要用 linux 內核?
自己獨立自主研發一個不行麼?難道是他們都是“拿來主義”者,全都懶得自己動手?
答案是——並非如此。
事實上,編寫一個操作系統、並讓它具有通用性,難點根本不在編寫系統內核上。
這裡只提一點:操作系統必須得有硬件支持,這裡的支持包括但不限於各種硬件的驅動程序。
前面已經提到過,系統內核的作用之一,便是管理硬件驅動。
linux 之所以具有通用性,最重要的原因之一便是它幾乎可以在所有的硬件設備上運行。
無論是基於 x86 架構處理器的電腦。
還是基於 ARM 架構處理器的樹莓派開發板。
甚至連基於 RISC 架構的龍芯電腦,使用的操作系統也是基於 linux 內核的。
保證 linux 操作系統具備通用性的基礎,便是 linux 內核中集成了幾乎所有的硬件驅動。
從這個意義上來說,linux 內核本身就是一個超級大的硬件驅動包!
而這是需要廣大硬件廠商的支持的,或者說,linux 內核的通用性,是在廣大硬件廠商的支持下實現的!
這,才是國產操作系統非要基於 linux 來做的、真正的、最重要的原因之一!
前面也已經提到過——從理論上來講,想要”自主研發“自己編寫出一套最基礎的操作系統內核一點都不難。
可是接下來要如何才能集成到足夠的硬件驅動呢?
既然已經有很成熟的 linux 存在了,一個全新的、毫無根基的操作系統內核,得拿什麼來請全世界的硬件廠商提供驅動支持?這……不是開玩笑嗎?
所以,某些網友所希望的”完全自主研發通用操作系統“其實是沒有可能實現的——實際上實現不了,甚至理論上都沒可能。
做夢倒是可以。
或者寫一部爽文小說來YY一下……
能力逆天的主角成立了一間公司,從採集沙子煉製單晶硅開始,自立門戶製造出全套硬件,並自己從機器語言開始寫代碼,做出了操作系統及所有的應用軟件。
呵呵噠……
然後那些噴“用了 linux 內核就不是國產操作系統”的噴子們的自豪感就可以得到滿足了。
第四,早期的 linux 系統並沒有什麼通用性。
它只是一個大學生為了滿足自己的使用需求而編寫的一套磁盤管理程序及文件管理系統。
後來,Linus 在自由軟件之父理查德·斯托曼(Richard Stallman)的感召之下,以 linux 這個名字,將他編寫的這套磁盤管理程序及文件管理系統加入到了自由軟件基金( FSF)的 GNU 計劃中,並通過 GPL 的通用性授權,允許用戶銷售、拷貝並且改動程序,但你必須將同樣的自由傳遞下去,而且必須免費公開你修改後的代碼。
簡單理解——Linus 創造了 linux 操作系統的雛形,並開放了它的源代碼,自那以後,linux 就是自由軟件。只要堅持自由軟件的精神、遵守開放源代碼協議,任何組織和個人都可以免費的獲取到 linux 的源代碼,並有權對它進行改造、複製和銷售。
所以,是 Linus 自己放棄了 linux 內核源代碼的所有權,並將它交給了全世界。
所以,linux 內核並不專屬與任何組織和自然人。
linux 內核不是美國的、也不是芬蘭的,它不專屬於人和國家;它不屬於紅帽子公司,也不屬於武漢深之度科技有限公司,它不屬於任何公司。
它是全世界、全人類的共同財富!
事實上,幾乎所有基於 linux 而開發出來的 linux 發行版操作系統都遵守著開放源代碼協議,無論任何公司的任何產品,任何用戶都可以獲取到它的源代碼,並有權加以改動,重製成全新的發行版。
正是因為開源,linux 才會得到全世界的軟硬件廠商、得倒全世界眾多支持開源社區的程序員們的支持,並以此為基礎發展到了今天。
換個角度來看 linux 內核——內核並不是應用軟件,它更像是一套規範化的標準。
不太恰當的用小汽車來做類比。
先說一下小汽車的共同特徵。
幾乎所有的小汽車,無論它是什麼牌子,基本結構幾乎都差不多。
它們都擁有四個使用橡膠製成的輪子。
它們都有發動機、都有方向盤。
它們的車廂裡都有沙發。
它們的車窗都是用玻璃製成的。
無論左舵還是右舵,它們絕大部分時間都行駛在水泥製成的公路上,理論上都得遵循內容差不多的交通法規、遵守紅綠燈的指示通行……
linux 內核定義了基本的文件系統結構,規範了相對統一的軟件運行環境,明確了硬件及硬件驅動以什麼方式組織、又怎樣運行……
這樣的說法並不很準確,但也容易理解。
全世界的小轎車,無論是BBA還是奇瑞吉利比亞迪,基本結構都是差不多的,我們不能因為現代汽車的始祖奔馳轎車是一隻方向盤四隻車輪、而奇瑞吉利比亞迪的轎車也是一樣,就說他們“都不是國產轎車”;同樣的,我們也不能因為 deepin 應用了 linux 內核,大體上遵循了所有 linux 操作系統都遵循的共同標準而說它“不是國產操作系統”。
第五,linux 內核≠linux 發行版。
linux 的內核和系統是互相獨立的。
內核有專門的維護升級團隊(www.kernel.org)。
linux 發行版是各廠商,社區組織利用 linux 內核,在上面組織自己的軟件架構做出可用的操作系統。
第六,華人(華裔)對 linux 內核所做出的貢獻。
到底是誰在為 linux內核提供代碼?
他們來自哪裡?
見下圖:
原地址:http://www.remword.com/kps_result/all_whole_country.html
排在第一位的是 Unknown,意思是無法確定代碼提供者的國籍。
排在第四位的是 Chinese——這裡的“Chinese”所指是“華裔”的意思。
即,無論代碼提供者的國籍是不是中國人(包括法人和自然人)、無論他是否定居在中國,只要他聲稱自己是“Chinese ”,那麼他對 linux 內核代碼所做的貢獻就會被歸類在“Chinese ”之下。
接著點開“Chinese”項目明細,我們可以看到 huawei !
是華為!
來自華為的代碼提供者 Wei Yongjun,在 linux 內核代碼提供排名第四的“Chinese”項目下是NO.2!
總結
毫無疑問,儘管 linux 並非“國產”,但基於linux 內核而生的 deepin 就是國產操作系統。
以上!
閱讀更多 魚丸君的日常 的文章