kboot 移动设备启动加载器

程序名称:kboot

授权协议: 未知

操作系统: 嵌入式

开发语言: C/C++

kboot 介绍

kboot本質上是個小型Linux作業系統,但功能卻是個boot
loader,何解?kboot本身提供簡單的系統工具,支援檔案與網路操作,可自外界取得kernel
image或其他檔案,進而kboot利用了kexec的機制,讓Linux kernel可快速重新啟動,於是具備boot loader的功能。

kexec是一組新的系統呼叫,包含在2.6 kernel中 (視支援架構而定),搭配其user-space的工具kexec-
tools,則可在既有的Linux kernel (支援kexec系統呼叫) 中載入其他的kernel
(不需要有kexec支援),並給予必要之參數或檔案,如kernel command line與initrd等,這方面的資訊可參考以下文章:

目前,kexec的硬體支援不限定x86,包含ARM與PPC都已有patch現身。那麼,如此的機制到底有什麼價值呢?以往的boot程序是很單純,清一色就是boot
loader載入kernel,然後跳到user-
mode或者是特定的工作,但現在的系統設計往往不是單一硬體、單一架構就可勝任的,諸如RAID或高負載的備援系統設計,都需要相當繁複的規劃,很顯然就非普通的boot
loader可以應付,也很難修改Etherboot去圓滿符合需求,這時候,我們聯想到Linux,搭配到上述的kexec,不就是最美妙的boot
loader嗎?在載入新的kernel之前,我們可作任何Linux能做的事情,像是載入firmware並進行設定、掛載NFS、掛載NTFS
(透過Linux-NTFS)、… 等等,只要能提供新kernel給kexec-
tools工具作載入,最後再透過kexec系統呼叫,就可完成這個「功能強大的boot loader」的終極任務。

kboot就是這樣的概念驗證實做品,使用的情境相當多元。舉例來說,kboot想進行遠端開機 (Diskless),但只有Wireless LAN或3G
network可用,這時候就掛載對應的kernel module (包附在kboot中),然後透過user-
space的應用程式進行設定,等待連線建立並確保檔案擷取成功,接著就在裝置上執行自遠端取得核心。另一種情境也很有趣,以往Linux
distribution都得作通用性與最佳化的妥協,前者往往得將系統劃分諸多核心模組與大量的設定程式,後者往往得針對硬體作多次嘗試,那麼,透過kboot可先啟動generic
kernel,然後進行硬體偵測,參考所需的硬體與最佳化組態,重新編譯核心,最後將該核心載入,而這個過程可透過一些設計得當的效能評估工具,一次又一次的重複自動微調,有別於以往的boot
loader。關於kboot的應用,可參考以下簡報:

後者給予我們極大的想像空間,當我們在新的硬體進行核心與週邊移植時,的確可先把能運作的最低限度核心置入kboot,然後再從不同的開發分支取得新核心並啟動,而這些過程都是透明的,而且不需要燒錄到傳統儲存裝置中,只要資源允許,可在RAM中做到繁瑣的事情。

kboot 官网

http://kboot.sourceforge.net/

相关编程语言

OpenFunix 是由我从零开始写的一个内核项目。 OpenF...
女娲内核,用中文版C"习语言"写的简单操作系统内...
Linux-Insides 是一系列 Linux 内核的展示。它通过分...
Alibaba Kernel起源于亚洲最大的电子商务网站——阿...
Genode操作系統框架擴展現有的內核(如微內核或程序...
TencentOS Kernel 是腾讯针对云的场景研发的服务器操...