在樹莓派設備上,軟件的多樣性令人印象深刻。樹莓派操作系統雖然適用于許多場景,但我們深知它并非萬能,尤其在一些特定用途的產品中更是如此。如果您正在開發嵌入式系統或工業控制器,您需要對設備上的軟件擁有絕對的掌控權;而家庭用戶可能希望自行構建操作系統,并根據個人偏好進行預配置。對于需要定制軟件鏡像的開發者和組織來說,擁有一個靈活且透明的構建系統至關重要。為此,樹莓派推出了 rpi-image-gen,這是一款功能強大的全新工具,旨在讓您完全掌控樹莓派鏡像的構建。
rpi-image-gen 是 pi-gen 的替代品,pi-gen 是用于創建和部署樹莓派操作系統發行版的工具。rpi-image-gen 專為生成高度定制化的樹莓派軟件鏡像而設計,能夠為您提供對文件系統構建和軟件鏡像創建的極其細致的控制。
我們為何打造 rpi-image-gen:為顧客量身定制的解決方案
目前,已經有許多由社區維護的、支持樹莓派設備的構建系統。它們提供了多種定制選項,如今許多樹莓派用戶仍在使用。您可能好奇樹莓派為何要另起爐灶。rpi-image-gen 的誕生絕非出于“非我發明”的心態,而是因為樹莓派的顧客可以從一個從零設計、滿足其部署產品軟件所需靈活性的工具中獲益。
通過支持一個具有樹莓派操作系統發行包優勢的構建系統,只需維護一套源碼。這意味著,一旦某處軟件得到改進或修復,它便會自動在所有地方生效。圍繞集中式的基于包的軟件及更新交付進行整合,意義非凡。此外,能夠減少軟件構建時間、提供對支持的所有內容的所有權、復用標準方法以確保軟件真實性,也是為樹莓派設備打造全新本土構建工具的關鍵考量。

rpi-image-gen 的運作方式:構建鏡像的新思路
與 pi-gen 類似,rpi-image-gen 也借助了為設備安裝 Debian Linux 系統的強大、可靠與可信之力。然而,與 pi-gen 不同,rpi-image-gen 引入了一些新概念,用于規定構建占用空間和安裝過程。
指定您的鏡像:配置文件、鏡像布局和配置文件
配置文件實際上是一組描述性圖層的集合,它們將 Debian 軟件包和安裝操作組合在一起。這些集合可以被選擇性地挑選并進一步定制,構成了軟件鏡像的基礎。鏡像布局描述了輸出軟件二進制鏡像將如何在磁盤上創建和布局,以便編程到設備中,包括文件系統類型、分區表條目、鏡像格式等。配置文件是一個“頂層”文本文件,采用易于理解的 .ini 語法,用于定義 rpi-image-gen 構建設備鏡像時所使用的配置文件和鏡像布局。
配置文件通常與底層設備硬件和產品相關聯,因此它可以相應地指定適用的屬性:例如,定義各個分區鏡像的大小以匹配板載 eMMC 的大小,或使用特定布局,該布局使用特定文件系統的掛載選項、微調低層暴露的選項,或選擇特定的樹莓派設備類別作為目標。同樣,不同派生的配置文件可用于根據產品的功能需求定制安裝。例如,您可以利用藍牙音頻層來引入設備支持;或使用特定層來添加一個在 kiosk 模式下運行的最小 Wayland 桌面,以安裝一組默認容器,為第三方開發者分發默認環境,等等。可能性無窮無盡。

示例構建:定制鏡像在行動
在代碼樹中有一些示例,展示了 rpi-image-gen 的不同用例。它們都創建了可引導的磁盤鏡像,展示了如何使用 rpi-image-gen 為特定目的創建量身定制的鏡像。隨著時間的推移,示例數量將會增加,讓我們挑選其中兩個來仔細看看:slim 和 webkiosk。
slim:創建小型輕量級鏡像
slim 是一個極其簡單的示例,展示了如何創建一個包含少量基本軟件包的輕量級鏡像,該鏡像將在您的樹莓派上引導。此鏡像本身并非特別有用,但它展示了如何創建和構建自定義配置,以保持文件系統的最小化。配置文件引入了一些圖層(例如 Debian 基礎、核心實用工具、Linux 內核和引導固件),然后創建了一個樹莓派操作系統風格的磁盤鏡像,并留出了一些空間來運行 apt update 和安裝一些軟件包。
webkiosk:創建一個引導至瀏覽器 kiosk 模式的鏡像
webkiosk 在一個配置文件之上進行構建,該配置文件再次引入了最少的組件。然后,它通過自定義鉤子添加了其他軟件包,以支持在 Wayland 下以 kiosk 模式運行 Chromium 網瀏覽器。此鏡像使用自定義 systemd 服務自動引導至瀏覽器,并全屏運行,禁用了 VT 切換。所使用的 Wayland 合成器(Cage)是一個單實例合成器,非常適合需要防止用戶通過鍵盤或鼠標進行干預的部署;例如,用戶不應能夠通過標準鍵盤快捷鍵從一個窗口切換到另一個窗口。
使用樹莓派成像器將其安裝到 SD 卡上;這里有一個我們之前做好的示例
除了能夠以您想要的方式配置構建和設備映像之外,能夠從基于包的安裝中排除原本會作為配置文件的一部分安裝的東西也很重要。實現這一點的一種方法是通過 dpkg 選項,這由支持 rpi-image e-gen 的工具支持。mmdebstrap 引擎驅動設備文件系統的創建,它上面的 bdebstrap 提供了一個高度可定制的框架和層的描述性文本表示。圖層是用 YAML 編寫的,這是人類可讀且易于理解的。從包安裝中排除資產就像在 YAML 中為配置文件拉入的特定圖層使用 dpkg—— 路徑 —— 排除和 / 或 —— 路徑 —— 包含選項一樣簡單。
安全性、信任與合規性:這對我們的顧客意味著什么
審計軟件以及能夠生成已部署設備的安全漏洞列表至關重要。任何軟件構建系統都應將采用標準化格式的軟件物料清單(SBOM)作為輸出工件之一。rpi-image-gen 為每次構建生成 SBOM,并為用戶提供了一個可自定義輸出格式的選項,以便用戶將其輸入到其他系統中 —— 例如,生成 CVE 列表。通過提供 SBOM 和跟蹤安全漏洞,有助于增強消費者對部署在其設備上的軟件的信心。在不久的將來,這一領域將有立法要求,我們相信樹莓派在行業中處于有利地位,能夠為顧客提供他們所需之物。
結語
從零開始創建一件事的優勢在于能夠隨心所欲地塑造它 —— 擁有它并隨時間推移對其進行調整。樹莓派自認為很了解顧客的需求,并且努力將他們置于相當一部分軟件開發工作的核心位置。
訪問 rpi-image-gen GitHub 倉庫開始使用。在那里,您會找到文檔和示例,指導您創建定制的樹莓派鏡像。我們鼓勵您探索該倉庫并提供反饋,以幫助我們進一步改進該工具。
-
操作系統
+關注
關注
37文章
7077瀏覽量
124917 -
軟件
+關注
關注
69文章
5117瀏覽量
88911 -
樹莓派
+關注
關注
121文章
1936瀏覽量
106953
發布評論請先 登錄
評論