簡體   English   中英

嵌入式Linux引導優化

[英]Embedded Linux Boot Optimization

我正在使用嵌入式Linux(UBUNTU 12.10 Server Prebuild映像)在Pandaboard上進行項目,以優化啟動時間。 我需要可以找到啟動時間的技術或工具,以及可以優化啟動時間的技術。 如果有人可以幫助。

只需從/etc/init.d/rc文件中刪除不需要的應用程序,並在每次進程初始化后放入echo,並檢查哪個進程需要花費很多時間啟動,如果您發現花費更多時間的應用程序,則對該應用程序進行調試,等等。上。

有一些程序可以幫助您了解大約的啟動時間。 檢查此鏈接時間戳

首先,您要做的最好的事情就是編譯自己的內核,在Internet上獲取源代碼並執行make xconfig ,然后在不需要的所有內容上進行選擇。 第二次使用Buildroot創建您自己的根文件系統, make xconfig選擇/取消選擇您需要或不需要的所有內容。

希望能有所幫助。

我遇到了同樣的問題,並且這樣做了,現在顯然不一樣了;)

編輯:您需要的一切都將在這里

要分析啟動過程,可以使用Bootchart2 ,它可以在github上找到: https : //github.com/mmeeks/bootchart

Bootchart ,來自Ubuntu軟件包:

sudo apt-get update
sudo apt-get install bootchart pybootchartgui

您可以大致在3個領域中減少啟動時間

  1. Bootloader:修改鏈接程序腳本以僅初始化所需的硬件。 另外,如果您使用SD卡進行引導,請合並內核和引導加載程序映像以節省時間。
  2. 內核:從內核配置中刪除不需要的模塊。 另外,請嘗試使用壓縮和未壓縮的圖像。 如果您的CPU足以處理壓縮的圖像並檢查不同壓縮類型所需的解壓縮時間。
    1. 文件系統:通過刪除不需要的垃圾箱和庫,可以大大減小FS大小。 檢查依賴項,並僅使用所需的依賴項。

有關有助於測量啟動時間的工具的更多技術和信息,請參考以下鏈接。 請參閱培訓材料

基本規則是:最快的代碼是永遠不會加載和運行的代碼,因此請刪除不需要的所有內容

  • 在U-Boot中:完全不加載並運行完整的U-Boot; 使用FALCON模式並讓SPL直接加載Linux內核和DTB
  • 在Linux中:刪除所有您不需要的驅動程序和其他內容; 將對核心應用程序不是必需的所有驅動程序作為模塊加載-並在應用程序啟動后加載它們。 如果您認真對待,您甚至可能只想首先啟動一個CPU內核(並在應用程序運行后啟動其余的CPU內核)。
  • 在用戶空間中:最小化根文件系統的大小。 清除不需要的任何東西; 配置工具(例如busybox)以僅包含真正需要的功能; 使用有效的代碼(例如,針對musl libc而不是glibc的鏈接)等。

結合所有這些措施可以達到的目的可以在本視頻中看到-是的, 此處提供了此優化的完整代碼。

優化嵌入式Linux的啟動過程,需要對嵌入式Linux設計的三個層次進行修改。

注意:您將需要Bootloader和內核的源代碼

  1. 引導:優化和減少電路板引導時間的第一步是優化引導加載程序。 首先,您應該知道什么是Bootloader。 如果您的引導程序是像u-boot這樣的開源引導程序,那么您就有機會對其進行修改和優化。 在u-boot中,我們有一個過程可以跳過不必要的系統檢查,而只是將內核映像上傳到ram並啟動。 有關文檔和說明,請訪問u-boot網站。 這樣做可以節省大約4到5秒鍾的啟動時間。

  1. 內核:為了擁有更快的內核,您應該在許多部分中優化內核。 要進行編輯,您可以使用Linux配置菜單上的。 我總是使用較低的圖形菜單。 它需要一些依賴性,您可以通過以下命令使用它:

    $ make menuconfig

    我們對Linux內核的目標是在引導時加載更小的內核映像和更少的模塊。 首先將壓縮算法從gzip更改為LZO。 該操作的要點是gzip算法將花費大量時間來提取內核。 通過使用LZO,我們可以更快地進行內核解壓縮。 第二,禁用您不需要的驅動程序或模塊,或者您不再使用它。 這樣,您將失去一些設備訪問權限,並且無法在Linux中使用它們,但是您將獲得兩個積極的方面:更少的Ram使用率,更快的啟動時間。 但是請注意,某些驅動程序對於Linux是必需的,並且禁用它們會丟失一些主要功能(例如,如果在Linux中禁用I2C驅動程序,則將不再具有HDMI接口),或者在最壞的情況下,您將擁有引導問題(例如引導循環)。 第三是禁用一些不可用的文件系統,以減少內核大小和啟動時間。 第四是刪除一些壓縮算法以具有較小的內核映像。 最后,如果您使用的是u-boot引導程序,請創建一個uImage而不是zImage。 以下步驟是常規操作和主要操作,為使電源連接后1秒鍾更快啟動,您應該更改更多選項。


  1. 經過兩次基本層修改后,現在我們應該優化用戶空間(根文件系統)中的引導過程。 取決於您使用的巫婆系統,我們有不同的操作要做。 在具有啟動Linux所需軟件包和系統的Linux抽象根文件系統中,我們應該使用systemd而不是Unix systemv,因為systemd具有多任務init。 系統,速度更快,之后是udev,您應該修改一些加載模塊。 如果您具有圖形用戶界面,我們可以使用一個簡單的技巧來減少啟動時間,方法是先啟動GUI,然后在加載GUI之后加載其他模塊。

如果執行以下所有任務,則可以縮短啟動時間並快速使用系統。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM