Yocto學習筆記(三)配置Busybox

1 Busybox介紹

BusyBox 是一個開源的、輕量級的 Unix 工具箱,它集成了許多標準 Unix 工具的精簡版本。它被設計用來運行在資源受限的環境中,例如嵌入式系統或者啟動盤。BusyBox 將多個標準 Unix 實用工具整合到一個可執行文件中,這些工具包括文件操作、進程管理、網絡配置、文本處理等。
BusyBox 的主要特點包括:

  1. 精簡性:BusyBox 的設計理念是在小型的可執行文件中集成盡可能多的功能,以節省系統資源。
  2. 可配置性:可以根據需要選擇性地編譯包含或排除特定功能,以滿足不同系統的要求。
  3. 可移植性:BusyBox 可以運行在各種不同的 POSIX 系統上,包括 Linux、BSD、Solaris 等。
  4. 開源性:BusyBox 是自由開源軟件,采用 GPL 授權協議發布。

在嵌入式 Linux 系統中,BusyBox 被廣泛應用于構建小型和高效的根文件系統。通過將多個功能整合到一個可執行文件中,BusyBox 可以顯著減小系統的磁盤占用和內存占用。此外,BusyBox 也被用作啟動腳本或者系統初始化腳本的工具箱,用于配置系統和啟動服務。
總的來說,BusyBox 是一個功能強大、高效且靈活的工具箱,適用于各種嵌入式和資源受限的環境,為系統提供了基本的 Unix 命令行工具和腳本功能。

2 Yocto與busybox

嵌入式軟件開發中,BusyBox 是一個輕量級的 Unix 工具箱,它集成了許多標準 Unix 實用工具的精簡版本。通過在 Yocto 中配置 BusyBox,可以在嵌入式 Linux 系統中實現更小的文件系統和更低的資源消耗。
要在 Yocto 中使用 BusyBox,需要在 Yocto 的配置文件中將其包含到系統中,并指定要包含的 BusyBox 工具。下面是一些配置 BusyBox 的一般步驟:

  1. 打開 local.conf 或者其他配置文件,通常位于 /build/conf/ 目錄下。
  2. 確保 busybox 被添加到 CORE_IMAGE_EXTRA_INSTALL 變量中,以確保 BusyBox 被包含在根文件系統中。
  3. 確保 BusyBox 中包含所需的工具。可以通過設置 BUSYBOX_FEATURES 變量來指定要包含的功能。例如,BUSYBOX_FEATURES 可以包含 “feature1 feature2 …” 的字符串。
  4. 重新構建你的 Yocto 映像,以包含 BusyBox。

在 BusyBox 配置中,你可以指定要包含的特定工具,以及在編譯時要啟用的功能。通過精心選擇這些選項,可以確保 BusyBox 在系統中提供所需的功能,同時保持最小的系統資源占用。

3 Yocto配置busybox

使用busybox作為linux系統啟動管理器,在distro/poky-customized.conf中添加如下代碼將busybox作為默認的系統啟動管理器,這樣我們就可以通過編輯rcS,rcK文件來決定系統啟動后和關機前執行的操作

# Use busybox as default init manager, config customized rcS, rcK
VIRTUAL-RUNTIME_init_manager = "busybox"

自定義的metalayer下的recipes-core文件夾中有imagesbusybox兩個文件夾,在busybox文件夾中添加busybox_%.bbappendbusybox-inittab_%.bbappend文件,files中添加busybox-initutils.cfgbusybox-mdev.cfginittabrcKrcS文件
.
├── busybox
│ ├── busybox_%.bbappend
│ ├── busybox-inittab_%.bbappend
│ └── files
│ ├── busybox-initutils.cfg
│ ├── busybox-mdev.cfg
│ ├── inittab
│ ├── rcK
│ └── rcS
└── images
└── core-image-customized.bb

其中,files就是我們需要自定義配置的一些文件,用他們替代poky中busybox中的默認配置文件,因此在bbappend文件中,只需要在SRC_URI中添加這些文件即可,如下:

SRC_URI += " \file://busybox-initutils.cfg \file://busybox-mdev.cfg \file://rcS \file://rcK \"SRC_URI += " \file://inittab \"

3.1 inittab文件

inittab 是 Unix 和類 Unix 操作系統中的一個配置文件,用于指定系統引導時初始化進程(init)啟動時應該執行的程序。該文件通常位于 /etc 目錄下。
在 Linux 系統中,inittab 文件的作用是定義系統啟動時要執行的初始化任務和服務,以及控制系統如何處理不同的運行級別(runlevel)。
inittab 文件的內容通常以行為單位組織,每行定義了一個任務或者服務的啟動方式。每行的格式通常為:

id : runlevels : action : process

其中:

  • id 是一個唯一的標識符,用于表示要執行的任務或服務。
  • runlevels 指定了在哪些運行級別下要執行該任務或服務。運行級別是指系統的不同狀態,通常用數字表示(如0、1、2、…、6),每個運行級別對應一組系統服務的狀態。可以使用單個運行級別或者運行級別范圍來指定,用逗號分隔。
  • action 指定了當系統運行到指定的運行級別時要執行的動作,常見的動作包括:
    ○ respawn:表示如果進程意外終止,則立即重新啟動。
    ○ wait:表示等待指定的進程結束后再執行后續操作。
    ○ once:表示只執行一次,不會自動重新啟動。
    ○ boot:表示在系統引導時執行。
  • process 是要執行的進程或者命令。

例如,一個簡單的 inittab 文件可能如下所示:

::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty -L tty1 9600 vt100
::shutdown:/etc/init.d/rcK

這個文件表示在系統啟動時執行/etc/init.d/rcS腳本(sysinit 動作),并在終端 tty1 上啟動一個 getty 進程(respawn 動作),在系統結束時執行/etc/init.d/rcK 腳本
inittab 文件的內容可以根據需要進行自定義和調整,以滿足特定系統的要求。

3.2 rcS文件

rcS 是一個用于系統初始化的腳本文件,在許多 Linux 系統中都可以找到。它通常位于 /etc/init.d 目錄下,是在系統引導過程中被執行的一個重要的初始化腳本。
rcS 腳本的作用包括但不限于以下幾個方面:

  1. 系統初始化任務的執行:rcS 腳本負責執行系統引導時需要進行的初始化任務,例如加載驅動程序、掛載文件系統、啟動網絡等。這些任務是在系統引導過程中必須要完成的操作,確保系統能夠正常運行起來。
  2. 啟動和管理系統服務:在一些 Linux 發行版中,rcS 腳本也負責啟動和管理系統的各種服務。它可能會根據配置文件中的設置,啟動指定的服務進程,并在需要時監控和重新啟動這些服務。
  3. 設置環境變量和系統參數:rcS 腳本可能會設置一些系統級的環境變量和參數,以確保系統在運行時具有正確的配置和環境。
  4. 執行其他初始化任務:根據具體的系統配置和需求,rcS 腳本可能還會執行一些其他的初始化任務,例如清理臨時文件、設置時鐘等。

rcS 腳本在系統引導過程中是在早期階段被執行的,它的作用是確保系統能夠順利啟動并達到基本可用狀態。因此,rcS 腳本的編寫和配置非常重要,直接關系到系統的啟動過程和穩定性。rcS的例子如下:

#!/bin/sh# Start all init scripts in /etc/rcS.d and /etc/rc5.d
# executing them in numerical order.
#
echo "<< rcS running scripts in /etc/rcS.d >>"for i in /etc/rcS.d/S??* /etc/rc5.d/S??* ;do# Ignore dangling symlinks (if any).[ ! -f "$i" ] && continuecase "$i" in*.sh)# Source shell script for speed.(trap - INT QUIT TSTPset start. $i);;*)# No sh extension, so fork subprocess.$i start;;esac
doneifconfig usb0 192.168.8.88start-stop-daemon -S -b -n your-app -a /usr/bin/your-appstart-debug-tools

3.3rcK文件

rcK 文件通常是 Linux 系統中的一個腳本文件,用于在系統關機或者重啟時執行一些操作。它位于 /etc/init.d 目錄下,是系統引導過程中的一個重要組成部分。
在 Linux 中,rcK 腳本的作用主要包括以下幾個方面:

  1. 停止系統服務:rcK 腳本負責停止系統中正在運行的服務。在系統關機或者重啟時,需要確保所有的服務都能夠正常停止,以避免數據丟失或者系統資源泄露等問題。
  2. 卸載文件系統:rcK 腳本可能會卸載一些臨時掛載的文件系統,釋放系統資源并確保數據的完整性。
  3. 執行其他關機前的清理操作:根據系統的配置和需求,rcK 腳本可能會執行一些其他的關機前的清理操作,例如關閉網絡連接、保存系統狀態等。

rcK 腳本在系統關機或者重啟時是在最后階段被執行的,它的作用是確保系統能夠安全地關閉并保存狀態。因此,rcK 腳本的編寫和配置非常重要,直接關系到系統的關機過程和數據的完整性。rcK的一個例子如下:

#!/bin/sh# Stop all init scripts in /etc/rc6.d
# executing them in numerical order.
#
echo "<< rcK stop all init scripts in /etc/rd6.d >>"for i in /etc/rc6.d/K??*; do# Ignore dangling symlinks (if any).[ ! -f "$i" ] && continuecase "$i" in*.sh)# Source shell script for speed.(trap - INT QUIT TSTPset stop. $i);;*)# No sh extension, so fork subprocess.$i stop;;esac
done

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12356.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12356.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12356.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何加密保護U盤?U盤加密方法盤點

U盤是目前最常用的移動存儲設備&#xff0c;可以幫助我們存儲大量數據。而為了保護數據安全&#xff0c;我們需要加密保護U盤。下面我們就來盤點一下U盤加密的方法。 BitLocker加密 BitLocker是Windows的一種磁盤保護工具&#xff0c;通過加密整個磁盤來保護數據&#xff0c;同…

基于Springboot的校園疫情防控信息管理系統(有報告)。Javaee項目,springboot項目。

演示視頻&#xff1a; 基于Springboot的校園疫情防控信息管理系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層…

react生命周期及用法

React生命周期是React組件在掛載、更新和卸載過程中的一系列方法的集合。通過生命周期方法&#xff0c;我們可以在不同階段執行特定的操作&#xff0c;例如初始化組件、更新狀態、渲染UI等。 React生命周期分為三個階段&#xff1a;掛載階段、更新階段和卸載階段。以下是React…

Vscode編輯器 js 輸入log自動補全

最近換了新電腦&#xff0c;新下載了Vscode&#xff0c;記錄一下設置項。 Vscode 版本 想要的效果 js文件中輸入log&#xff08;點擊tab鍵&#xff09;&#xff0c;自動補全為 console.log() Vscode 文件》首選項》設置 搜索&#xff1a;snippets Emmet: Show Suggestions…

暗區突圍TWITCH掉寶領測試資格后,steam激活顯示是無效激活碼

自《暗區突圍》測試啟動以來&#xff0c;吸引了大量玩家關注&#xff0c;特別是通過在Twitch平臺上觀看直播即可獲得測試資格的活動&#xff0c;更是掀起了熱潮。然而&#xff0c;部分玩家在成功獲得激活碼后&#xff0c;在Steam平臺激活時遭遇了“無效激活碼”的問題。本文將提…

nginx 配置域名SSL證書HTTPS服務

下載 上傳根目錄 /home/wwwroot/xx.com/ssl 從新執行 添加域名命令 選擇添加SSL SSL Certificate file: 填寫 完整目錄 PEM文件地址 SSL Certificate Key file:填寫 完整目錄 key文件地址

python 對矩陣與矩陣之間對應位置的元素,做softmax操作,代碼實戰

1.對矩陣中對應位置的元素&#xff0c;做softmax 對于一個向量&#xff0c;softmax函數會對其中每一個元素進行指數運算&#xff0c;然后除以所有元素指數和的結果。當將其應用到多個矩陣的相應位置上時&#xff0c;我們實際上是在對每個位置的一組數&#xff08;從各個矩陣的同…

45.WEB滲透測試-信息收集-域名、指紋收集(7)

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a; 易錦網校會員專享課 上一個內容&#xff1a;計算機王-CSDN博客 WEB指紋&#xff1a;Web指紋也叫web應用指紋。由于所使用的工具、技術…

PHP 自提時間

前端: 后臺設置: 代碼: public function getBusinessHour(){// 需求單門店$data (new StoreModel())->limit(1)->select()->toArray();$days explode(,, $data[0][shop_hours]);$businessHours $days[1];// 使用 explode 分割字符串&#xff0c;獲取開始和結束時…

ListView[new]

activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_height"match_parent"android:layout_width"match_parent"…

服務器租用中包含哪些?

服務器在目前的互聯網社會中起著十分重要的作用&#xff0c;服務器是網絡業務部署的重要載體&#xff0c;越來越多的企業和用戶選擇租用服務器業務來減少整體的成本&#xff0c;那么服務器租用中主要都包含哪些呢&#xff1f;接下來小編就來介紹一些其中的內容吧&#xff01; 首…

nginx 發布靜態資源

一. nginx 發布靜態資源 在nginx中nginx.conf配置文件中添加內容如下&#xff1a; server {listen 90;server_name localhost;# 配置靜態資源文件&#xff0c;就可以訪問了location / {root /home/fooie-shop;index index.html;}# 配置音頻和圖片資源location /imoo…

企業內部文化社區究竟有哪些好處?

首先&#xff0c;我們來了解下&#xff0c;企業內耗是什么? 在企業文化管理中&#xff0c;內耗是一個常見的問題&#xff0c;它會影響企業的團隊協作、執行效率和績效表現。在2023《哈佛商業評論》中國年會上&#xff0c;北大匯豐商學院管理實踐教授陳瑋分享了他對組織管理的…

馮喜運:5.14今日黃金原油漲跌走勢分析操作建議

【黃金消息面分析】&#xff1a;本周黃金市場將迎來關鍵的美國通脹數據&#xff0c;包括周二的生產者價格指數(PPI)和周三的消費者物價指數(CPI)。這些數據對美聯儲的政策路徑至關重要&#xff0c;可能會影響市場對利率調整的預期。目前&#xff0c;現貨黃金價格小幅上漲&#…

使用java.io庫序列化Java對象

在我們使用諸如Redis這類緩存系統時&#xff0c;我們往往會存在如下需求&#xff1a;將Java對象保存到Redis緩存中&#xff0c;然后在其他機器上還原回來。 Json方案 我們可以引入Json庫等方式&#xff0c;將Java對象序列化為Json字符串來實現這個目的&#xff0c;但是這樣的…

《四》系統模塊整體功能關聯與實現

在上一篇里&#xff0c;我們完成了動作的創建&#xff0c;那么這一次&#xff0c;我們把它加載到界面上&#xff0c;把需要是實現的動作都加上。 MyWord::MyWord(QWidget *parent): QMainWindow(parent) {mdiAreanew QMdiArea;mdiArea->setHorizontalScrollBarPolicy(Qt::S…

【Cesium解讀】Cesium中primitive/entity貼地

官方案例 Cesium Sandcastle Cesium Sandcastle 好文推薦&#xff1a;Cesium貼地設置_primitive貼地-CSDN博客 scene.globe.depthTestAgainstTerrain true; True if primitives such as billboards, polylines, labels, etc. should be depth-tested against the terrain…

釋放系統C盤的ext4.vhdx

ext4.vhdx 是個虛擬磁盤&#xff0c;默認位置為 C:\Users{用戶名}\AppData\Local\Docker\wsl\data\ext4.vhdx&#xff0c;會占用很大磁盤空間&#xff0c;可采用下列辦法將其改到其它磁盤或分區&#xff0c;如D分區。 1、查看有哪些&#xff1a; # wsl -l -vNAME …

靜態代碼掃描問題修復之--(輸入驗證 重定向[NodeJS])

問題描述: 當應用程序直接使用未經驗證的用戶輸入來控制重定向URL時,存在安全隱患。攻擊者可借此機會操縱輸入,引導用戶訪問惡意網站,實施網絡釣魚等攻擊。這在JavaScript前端代碼及Node.js后端邏輯中均需警惕。 案例分析: 應用程序允許未驗證的用戶輸入控制重定向中的UR…

MYSQL主從災難恢復

方案背景 MySQL一主一從,當主庫操作系統宕機無法啟動,vip已漂移到從庫,原從庫成為主庫單實例支撐業務。在新建主機上新建MySQL實例,配置為當前vip所在實例的從庫,恢復MySQL一主一從。 2 恢復步驟 2.1 新建MySQL實例 2.1.1 解壓安裝包 #將二進制包上傳至/usr/local/然后解…