個人或者小型團隊開發一個OS雛形的可能性有多大,難度是多少,困難有哪些方面?

小型團隊指5-6個人以內,不需要是完全成熟的操作系統,僅僅只是一個可以常規使用的系統雛形,當然需要具備的基本功能還是要有的,也要支持後續的開發和版本的迭代。提問:開發出來的可能性有多大,難度多少,困難有哪些?

其他問題:

為什麼國內國產操作系統那麼稀缺,市場基本空缺,卻沒有做出來幾個呢?

政策方面有沒有相應的支持?

系統完善其他部分完善之後能否獲得足夠的用戶群?

小白提問,可能問題準確性較低,還是希望能夠獲得具有思考之後的回答。


每每看到有人扯「國產操作系統」時,就滿滿地想吐槽。

要回答你的問題,首先要解決兩個問題:1.怎麼定義一個操作系統?2.怎麼定義國產?

一套自有標準內核,妥妥的是個操作系統,問題是光一個內核,在標準成為行業標準之前,幾乎沒有任何意義。自有標準的內核意味著與現有的周邊軟體的徹底割裂,且不論辦公軟體啊瀏覽器啊之類的高級玩意,就連基本的編譯器也請自行實現。既然軟體都不能用了,除了在這個神奇國度使用政策壓制的手段強制推廣外,也沒啥辦法推廣使用了。這個層面上的例子就是Windows、Unix。

一套兼容內核(甭管你打算兼容POSIX還是兼容啥標準),學術意義上來講,就是一個操作系統了,代碼完全自己寫也不是太麻煩的事(儘管坑很大),做完之後其應用環境相對完善,周邊軟體直接用開源,是可以行的。實際上macOS和GNU/Linux就是這麼做的。個人/小團隊開發者當然也能做到這些。可是生態並不屬於你自己——這是寄生在現有標準之下的操作系統環境,使用現有的周邊軟體。這個層面上的主要是Linux、BSD等。

一套完整中間層以及一套可執行標準,固然還能算OS,例子就是Android(Linux為底層)、macOS、iOS(Darwin為底層,儘管也是Apple的玩意,這個Darwin可是UNIX兼容的)。Android底層是完完全全的Linux,但是在上層應用與底層OS之間,存在一個比較完全的中間層,上層的應用被包裹起來。這樣的玩意的出現需要的往往是一些新的契機,例如移動智能設備發展帶來的Android、iOS。

這三個層次,最大的問題在於,即使做出了這部分工作,外圍應用基本沒有(畢竟各種不兼容),如何吸引開發者來做相應的軟體。不說遠了,MSOffice是個多麼偉大的龐大的複雜的玩意,至今替代品都難尋,OpenOffice和WPS之類,哪怕iWork套件,至今也只是做到MSOffice的最多一半功用。對於用戶而言,啥軟體都沒法用的系統誰去用?對於開發者而言,用戶都沒有的系統誰去做開發?Android和iOS能興起,根本還是因為彼時觸控智能手機行業一片混亂,用戶群體量極少,吸引功能機用戶遷移過來就可以,自然而然就能吸引到開發者;而入場太晚的Windows Phone,哪怕帶著官方自產的優質的Office等配套軟體,缺用戶缺開發者也成了無力翻盤的原因。

一套UI+一堆外圍件,使用現有的標準內核,從學術上來講當然算不上是個操作系統。這個層面上是絕大多數現有『國產操作系統』的現狀,從臭名昭著的NeoKylin到廣受褒獎的Deepin,以及移動端的各種xxOS/xxUI,都是這個層次上的東西。不過既然只是表層的玩意,實質上也就是個上層應用,既然底層兼容,別人用不用你做的東西就不好說了。

接下來說關於第二問,怎麼定義國產。

在上述所有例證中,除了WinNT、大部分Unix閉源,iOS、macOS對應的base framework閉源,其餘的都是開源的。那麼如果使用開源代碼,用開源編譯器,在中國人的電腦上編譯一下,算不算國產?如果是,那好辦,拿一個人過來都能給你編譯圓了;如果不是,那是否要徹底用自產源碼?開源庫用到什麼地步算是『非國產』?

這個問題類似於一輛汽車,發動機是德國的,變速器是日本的,可能車架是中國造的,但造車架用的加工流水線是美國人的產品,但整車是國內組裝的話,它到底屬不屬於國產車?

————————————————

解決完這兩個問題,我們總該有個定位了。如果想要嚴格意義純國產,從底層做起,中國需要給足夠的時間來寫內核、制定標準,需要使用強制措施強行使用,需要千百萬國內國人開發者打造生態環境,中國現有的IT行業必須因此而停滯發展數年到十數年;從中間框架做起,能省掉一些停滯時間;同定製界面做起,根本沒有所謂的國產一說,畢竟底層中間層都是一樣的東西,但成本較低,三五人團隊確實能做起來,不過換個角度,既然底層中間層一樣,別人不用這個UI你也沒啥辦法,沒有什麼獨有之處,怕是只能靠信仰吸引用戶了,忽悠好了倒也能盈利,畢竟政策方面的決策層懂技術的或許不太多,不然NeoKylin這種東西也不會通過政策強推了。


OS的Demo當然隨便搞啊,在我畢業後華南皇家理工大學就收過一個號稱高中就自己弄出個OS的學生,還能跑GUI(逃。但是搞了又有什麼用,絕大多數人的生命都是有限的,在家裡練習一下編程搞搞就好了。

一個「能用」的操作系統——意思就是你可以在上面寫軟體,但是不代表你立刻就軟體可以用——只要能讀硬碟、跑socket、畫像素就可以了。不支持C語言、單線程都沒問題。


操作系統的核心是生態。

一個操作系統的成功,既要有自我的奮鬥,也要考慮歷史的行程。

這兩句絕不是抖機靈隨便說說的。

你可以回顧一下Windows Linux Android 還有iOS的發展史,你就明白現在你這個思路毫無使用價值。

當然,你要是自娛自樂,那算我沒說。


非常可能

下面進入安利模式:

Minoca OS

Minoca OS is an open source, general purpose operating system written from scratch. It aims to be lean, maintainable, modular, and compatible with existing software. It features a POSIX-like interface towards application software and a growing suite of popular packages already built and ready to go. On the backend, it contains a powerful driver model between device drivers and the kernel. The driver model enables drivers to be written in a forward compatible manner, so that kernel level components can be upgraded without requiring a recompilation of all device drivers.

Minoca OS 是一個通用的操作系統,完全從頭開始編寫。 它適用於希望節省功耗,內存和存儲的設備。 它的目標是精簡,可維護,模塊化,並與現有軟體兼容。換句話說,它是一個為小型設備編寫的全功能的操作系統。

開發人員

Minoca OS由兩個開發人員, Evan 和 Chris 編寫。

運行

Minoca OS runs on x86, ARMv6, or ARMv7 systems that contain virtual memory support and at least a few megabytes of RAM. The OS is highly scalable, so it can also run on larger machines with multiple cores and many gigabytes of RAM.

Minoca操作系統在包含虛擬內存支持和至少幾兆位元組RAM的x86,ARMv6或ARMv7系統上運行。操作系統是高度可擴展的,所以它也可以在具有多個內核和許多千兆位元組RAM的大型計算機上運行。

優勢

  • Minimal Footprint - Minoca OS can run comfortably in just a few megabytes of RAM and image space, leaving more resources for your application or even allowing you to reduce your hardware design requirements.
  • Portability - With SMP support for both x86 and ARM architectures, Minoca OS is suitable for both small, power-conscious, embedded devices and larger, I/O intensive instruments. The POSIX application layer enables leveraging existing industry application software, and requires little to no porting effort.
  • Fully Debuggable - Minoca OS can be debugged at the source level through the firmware, kernel, and applications. Say goodbye to tedious print-statement debugging. Not only that, the Minoca Debugger reports execution and memory profiling information in real time, allowing you to monitor exactly where resources are being spent.
  • System Support - Minoca OS is supported directly by the architects and developers that wrote the system. We"re here to help you port open source packages, write device drivers, or bring Minoca OS up on a new platform.

特點

運行在x86和ARM架構上。

集成調試器可以調試完整堆棧:固件,引導,內核,驅動程序和應用程序。

簡單而熟悉的驅動程序模式意味著新設備和平台的升級是輕而易舉的。

擴展POSIX介面支持大多數流行的軟體包。

完整的API文檔。

技術支持直接來自系統的架構師和開發人員。

包括許多常用設備的驅動程序。

(部分翻譯來自谷歌)

github地址:minoca/os

滿足你說的要求

其他問題解答

因為沒市場,沒用戶,沒應用支持

政府挺支持的,具體搜索:紅旗Linux,共創Linux,凝思磐石


做個雛形OS不難。

但想做一個與其他OS有競爭力的就不簡單了。

否則這個OS就自己玩玩,沒程序員給它開發程序,成為一個實質上死掉的系統。


搞個內核很簡單,要完整的生態系統就有要求 比如兼容某個系統,如Linux,freebsd,posix等,然後利用該系統的生態系統源碼重新編譯。

現在有個osv,除了內核,還有不少軟體,可以參考下。


都江堰操作系統,我11年就看見出穩定版本了。當時應該就作者一個人搞,他老婆只是精神上支持。。


搞出來不難啊,問題是你有軟體可用嗎?


引用 @vczh輪子哥勸我不要搞ASM的名言:人的生命不是無限的,你又不是牠。輪子哥還說過一個人搞這個東西要搞到80歲。


《30天自製操作系統》


五個人足以。

下面是我作為OS League冠軍經理排出的先發五虎陣容: LinusTorvalds+RMS+BillJoy+BillGates+JohnCarmack。Linus搞內核,RMS搞編譯器和底層庫,Bill Joy搞底層硬體架構和上層企業級應用高級編程語言,另一個比爾負責從微軟redhat borland DEC等公司狂挖牆角和搞市場營銷從windowsubunturedhatdebianbsd虎口奪食和ibmintel搞關係和蘋果撕逼兼ono is not office產品經理,卡馬克搞遊戲引擎開發遊戲生態。

不過我考慮到幾個先發出場大佬之間關係可能不太融洽,為了團隊和諧,出去做項目還要加強替補的板凳深度。

替補板凳球員名單(屈尊一下了,其實他們也都是我的偶像我也是他們的小粉絲,他們也很厲害,就是普遍年紀大了點兒): David Cutler,Steve Jobs,James Gosling,Anders Hejlsberg,Michael Stonebraker,Steve Wozniak,DMR,Polge。

拉拉隊長: Steve Ballmer。

您看到上述這些牛逼閃閃的名字,就應該明白通用的desktop和server os生態的難度了吧。

既然通用os干不過別人,那我們可以從niche市場做起,比如搞搞

contiki,yocto,ucosIII,zentri之類的類似的os總行吧。

再不濟,別人寫好了coreutils,xxutils我移植個busybox,別人寫好了jquery插件一大堆那我整個移動版的underscore,別人桌面os厲害我做移動端os android,aws做雲計算牛逼那思科不死磕改做霧計算,微軟office厲害谷歌做雲端googledocs......懂我意思了吧!

不要說os,哪怕nodejs,nginx,apache,hadoop,php mvc,mesos,docker,qt,rrd,nagios的生態系統的建立,也都不是那麼容易的。

總之,就算要做os,也不是說非要和微軟/Unix(包括Linux bsd mac os)這塊生態里死磕。換個約束條件應用環境,就能玩出很多活,在這個niche小生境里,只要比微軟Unix適應環境就成功了。

比如,做os也不一定做通用os,也可以有很多出路,比如無人機os,智能手錶os,智能眼鏡os,智能耳機os(連接app,連接音箱,實時翻譯語言,帶觸摸板),eink電子書os,數位板os,智能錄音筆os,智能汽車os,運動控制器os,數控系統os,注塑機主控os,醫療儀器os,機器人os,大中型PLC二次開發os中間件,軟PLC os,無人艦隊分散式os,數據中心dc/os,物聯網iot/m2m os,霧計算網關os,超算os,超低功耗os,抗宇宙輻射os,神經網路os,分子計算os,量子計算os,石墨烯os,運營商boss,類思科網路ios,sdn os,戰場通信指揮os,最大化殺傷的智能分散式雷場os,單兵作戰os,黑客滲透攻擊os,科學計算os,兒童編程低成本os,oa辦公os,分散式光伏PV發電os,預警機分散式作戰調度os,最小化所有路口延誤時間和油耗智能交通分散式路口控制系統os(英國scoot系統,澳大利亞scats系統在帝都魔都控制幾千個路口 ),艦隊指揮系統,兒童安全上網os,暗網os,超過日本米飯電飯鍋日本智能馬桶的os,托利多電子秤os,手機虛擬機os,單片機虛擬機os,工業分散式IO os,遠距離無線傳輸抗干擾os,八大工業匯流排通訊協議轉換anybus os,智能樓宇niagara sedona os,智能樓宇ddc控制器os,共享單車調度os,計程車os,外賣調度os,物流調度os,智慧立體倉庫os,列車信號控制系統,生產線os(mes),類ge predix的物聯網PAAS平台,企業管理os(erp),社交網路os,吃貨拔草os,雲計算os,fleet management system,電廠化工廠核電站DCS............

看問題要看本質,不能因為大學裡os課只講一般的狹義的os就把os的o給理解岔了!要從更抽象層面理解os的o和s倆個字。從上面的這些不同業務領域的os來說,最重要的是要能從systematic層面解決這個行業的業務的運行調度operation問題,如果解決了,就可以說是這個行業的operating system。desktop和server os調度的是cpu,磁碟,nic,文件,io,內存,顯示,最優化的是計算資源或io或吞吐量。scoot/scats調度的是多個馬路路段緩衝區上的車隊,車子就是一個個packet,輸入是各路段感測器的流量,輸出是各路口各相位的紅綠燈時間,最優化的是延誤,也要像電腦os注意避免路口資源死鎖形成deadgrid。路由器os也是類似的,調度的是包,優化的是吞吐率延遲。

jboss原來叫ejb oss,雖然是個中間件,我覺得也可以看成是os,不然憑什麼mesos就可以叫數據中心os呢,難道僅僅因為它調度的是cpu磁碟網路嗎?那古老的作業調度系統從現代的眼光看也不能算os了吧?我大JB oss調度的企業級java服務也很重要很值錢的好不好。

這些廣義的os對於一般人哪怕很多計算機專業的來說都看不見摸不著,卻涉及到郭嘉安全,生產安全和效率,比普通電腦的os量更大,作用也更大,他們也需要中國腦。

在這些領域,我們的oses也需要努力,有做的好的,比如華為大疆浙大中控信捷騰訊阿里國防科大中科大,但大部分差距還是有的。這些細分行業,如果沒有國產對應的os,就又將被國外產品賣出壟斷價。

這些oses相對好搞些,因為不用太考慮生態,硬體對接也只需要以自己家的為主。


這個在嵌入式行業太平常了!


五六個人做出的OS有個屁用


遊戲不是這麼玩的,現在都是在拼影響力

Linus搞linux內核,但人家是芬蘭出生的;Java也不是谷歌搞出來的,但是Android卻使用了linux內核和java。

ruby是日本搞的,但是 ruby on rails 的作者 David Heinemeier Hansson卻是丹麥的。

你不去專註於解決實際問題,提高影響力,在世界上獲得一席之地和話語權,卻想著自己閉門造車搞一套,一點卵用都沒有。

不是絕對難度的問題,要說難也難不倒哪裡去,一個資料庫的體量不輸於一個內核,關鍵是上層建築,超大量的工作集中在這裡,也就是其他回答里的生態。沒有這個,即使你搞出來了,也沒人陪你玩。

致力於解決實際問題,站在領域的前沿,提高社區影響力,這樣才是一條可行的路線。


開發出來無人問津,有這個時間不如干點別的


操作系統好說本科生大作業都要寫,國產操作系統什麼的火箭上肯定是,但是桌面上沒什麼必要目前


初步雛形的工作量大概是大三學生年把的工作量,當然得參考著別人的系統(minix)來。 @Linus 有相關經驗,可以請教下。

不過從你提問的水準來看,技術上大概是倪光南院士的水準。倪院士專心國產系統幾十年,為紅旗、麒麟操作系統出生作出了不可磨滅的貢獻,似乎也是漢芯的助產士呢。最近似乎聽說他熱心國產cpu的事,題主不妨打聽打聽。

如果是純內核調度,不涉及外設的話,大概熟練工程師半個上午的工作量。


既然問這種專業問題,你就要有一定的專業素養,什麼叫「系統的雛形」?不要用太通俗的語言,你應該先了解了解操作系統由什麼構成。單純從你給出信息上來看,我無法知道你說的這個os具體要哪些功能。假設你說得雛形的就是個內核,一般來說就這幾個部分:內存管理,進程管理,文件系統,網路系統還有驅動,對於5-6個專家組成的團隊來說,不要求性能,不難。另外一方面,操作系統這個領域太大了,有桌面的,伺服器的,移動的,嵌入式的。對於最簡單的嵌入式,做個功能齊全的也不是特別難。比較難的桌面和伺服器,典型的Linux也是linus一個人寫出來的。

我說了這麼多,總結起來好像不難,是吧?對!如果只是你自己用都不難,但是一個優秀的os需要滿足的是全世界各種人的各種需求,各種設備的兼容性,還要能討好各種開發者。難!操作系統最難的就是得要有人願意用。


TempleOS


首先需要明白你開發OS的需求是什麼?換句話說就是為什麼要開發OS?不同的OS適用於不同的用途。如果題主的意思是開發 「國產linux操作系統」,那麼建議你到 distrowatch網站上看一下當下流行的linux版本有哪些,了解下這些不同的版本為什麼流行?事實上,在我個人看來,開發OS一是需要團隊對於OS的理解的角度和深度,二是需要持之以恆的投入和時間,而國人多希望的是短期能夠見到效益,這和OS的開發是背道而馳的,只是開發一套GUI界面的話並不需要多少人。


推薦閱讀:

如何移動整個 iTunes 到新電腦同時保留播放次數和評分等信息?
導致 MacBook 觸摸板手勢突然失效的原因有哪些?
Mac OS複製粘貼功能經常失效,問題出在哪裡?有何解決辦法?
iTunes 11 使用體驗如何?
OS X 和 MacBook 的缺點是什麼?

TAG:macOS | MicrosoftWindows | 操作系統 | Linux | Unix |