天天看點

一個隔開hal與langsys,使用者态專用OS的設想

本文關鍵字:efi based os,native hosting oriented OS與 APP hosting oriented OS,将OS程式設計與硬體程式設計獨立,将使用者OS變為真正的APP空間。新dbcolinux和goblinux設計。

在《一個設想基于colinux,the user mode osxaas for both realhw and langsys》中,我們開始提到了一種用特定host/guest OS組合同時作裝機和作app hosting for langsys的思路,主OS用來裝機,guest os作使用者空間的通用程式托管runtime/移殖層子系統/app容器/特定語言系統面向的開發運作langsys backend baas,—— 這種思路實際上是最初級的用雙系統方案來解決分離傳統OS和APP容器OS的思路。因為傳統的docker式獨霸業界的方式我始終無法完全接受,我想找到一個能用于本地實地遠端裝機運維,能用于開發和內建devops的虛拟化層面,這種層面要能用于legacy native方式,要以科學的內建方式在它應處在的層次,而不是現在docker和裸金屬這樣,高階,僅用于雲。

鑒于此,我一直在找這方面的案例和整合方法,一些努力在我們的後來的文章中被頻繁提到,如在《相容多OS or 融合多OS?打造實用的基于osxsystembase的融合OS管理器》《一種追求高度融合,包容軟硬方案的雲主機叢集,雲OS和雲APP的架構全設計》《去windows去PC,打造for程式員的碎片化programming pad硬體選型》中我們提到了其用于不同硬體平台融合和移殖子系統的用途部分,在《群晖+DOCKER,一個更好的DEVOPS+WEBOS雲平台及綜合雲OS選型》《hyperkit:一個full codeable,full dev support的devops及cloud appmodel》中我們談到了其用于appcontainer,devops和雲架構,appmodel的部分。在《打造一個Applevel虛拟化,内置plan9的rootfs:goblin(1)》中,我們将其用到了具體APP(将plan9 rootfs集進app,treats os logic and app logic together,把file作為APP的邏輯)層。—— 以上其實都是結合使用二種one host/one guest或多種one host/multiple guests的架構,使之職責分離成硬體OS(傳統OS)和APPOS的職責的具體過程,算是開頭提到的那個初級思路的延伸。

最後,我在《DISKBIOS:統一實機雲主機裝機的虛拟機管理器方案設想》,《DISKBIOS:一個統一的混合OS容器和應用容器實作的方案設想(2)》希望将它整合成一個PE層。于是用了diskbios這個用詞:它是從bios開始做起的。是通用進階BIOS。最後,我們在《一種追求高度融合,包容軟硬方案的雲主機叢集,雲OS和雲APP的架構全設計》《一個matepc,mateos,mateapp的goblinux融合體系設計》,《ubuntu touch: deepin pc os和deepin mobile os的天然融合》中提到了它用于第二PC的例子,—— 這都是選型研案,在整個《XAAS:the final all in one os》實踐部分,我們在一步一步實作這樣的一個系統:dbcolinux+goblinux。

新DBcolinux方向:dbcolinux based on efi

而如今,這種整合思路有了新的方向。

因為在《一個統一的bootloader efi設想:免PE,同時引導多個系統》中我們談到這項工作可以做成EFI。那篇文章中我們還談到EFI實際上可以發展為pe的替代,比如它可以發展記憶體管理相當于一個OS代替PE OS,更複雜化還可以內建hypervisor,這樣做的好處是可以在一台PC上并行boot主OS和host os。同時作主PC和第二PC也可以自由分離。且可以用于雲。同時不再需要另外的recovery。

其實在這個架構中,已經沒有了HOST OS,所有的OS都是平等的。而且它還可以有另外一個天然的附帶作用。—— 如果hypervisor足夠簡小。它可以以足夠輕量化的方式本身成為一個可用于OS也可用于APP的架構。這樣結合我們上面談到的《hyperkit:一個full codeable,full dev support的devops及cloud appmodel》《打造一個Applevel虛拟化,内置plan9的rootfs:goblin(1)》。我們完全可以集進諸如hyperkit所用的虛拟機xhyve。這樣,移殖層,融合,容器,applangsys backend baas,都可以以更簡單和自然的方式達到了。

我們當然也可以組建傳統的host/guest,我們也可以發展一個主OS。在這個主OS裡組建複雜的OS生态系統。如vpnkit,datakit那樣。做複雜的OS或容器叢集。

新作用:goblin based on efi

還有一個更重要的特色,由于所有的OS都是使用者态OS了。它分離了傳統OS的職責。hal,mm等層面可以完全從使用者态OS中分離出去,保留在那個efi os中。使用者态的OS都是單一職責的app hosting os,這樣的OS就是直接面向APP的了,可以叫APP OS。這樣就降低了APP開發者的學習難度。也降低了通用程式設計學習新手的入階難度— 因為它們從此不用再學習任何系統知識,處理任何系統程式設計。在APP os層面可以專心與一門語言綁定,或專心融入一種問題,或抽象方法,如plan9 all is file的理念,變成純粹面向domain的專用OS。

(此處不設回複,掃碼到微信參與留言,或直接點選到原文)

一個隔開hal與langsys,使用者态專用OS的設想