中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現1秒啟動Linux

發布時間:2021-09-26 16:56:39 來源:億速云 閱讀:170 作者:iii 欄目:系統運維

本篇內容介紹了“如何實現1秒啟動Linux”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

盡可能快的啟動系統,對于自動化設備是非常重要的。系統能夠在用戶無法感知的時間內啟動,也就意味著在不需要工作時,可以完全切斷電源,而不是掛起進入休眠狀態。本文基于Atmel AT91系列片上系統和NAND閃存,經過一系列的優化,將Linux系統啟動時間,從最初的11秒,降低到最終的656毫秒

如何實現1秒啟動Linux

背景知識

系統從上電到完全啟動,需要經過許多過程。一個簡化的啟動流程大概包含:

• 硬件重置

• 啟動引導程序(bootloader)

• 操作系統初始化

• 應用程序執行

其中硬件非常關鍵,但是硬件一般難以更改。后續的優化,主要針對引導程序、Linux內核和應用程序展開。

引導程序優化

引導程序主要完成對CPU的基礎設置,處理ARM標記(ATAGS,ARM TAGS)或設備樹(device trees),切換存儲管理單元(MMU,Memory Management Unit)等工作。

對于U-Boot,常用的優化方式有:

• 刪除不不要的功能:如網絡加載等,如果不需要,那么直接移除這些代碼吧

• 關閉不需要的功能

• 關閉內核鏡像驗證

• 關閉引導程序輸出

• 關閉啟動延遲

將通用功能的引導程序修改成一個優化后的初始程序加載器(Initial Program Loader,IPL),對于U-Boot,可以通過SPL(Second Program Loader,第二階段程序加載器)來實現。

內核優化

Linux內核被設計的非常靈活,可以針對需要的功能做各種配置優化。因此,優化內核對于系統啟動速度是至關重要的。

首先,移除一切不要的驅動,盡可能的減少內核加載的內容,能夠大大縮短系統啟動時間。其次,還有很多內核選擇可能需要進一步嘗試,比如內核壓縮方式,對于嵌入式系統來說,LZO壓縮方式,通常會是一個不錯的選擇。最后,還可以通過定制一些啟動參數,達到加快啟動的目的。例如可以通過“lpj=”參數,預設每個循環需要的節拍數(loops per jiffy,lpj)的值,避免系統在啟動時自動推算。這樣在基于ARMv5的系統中,可以節省100ms以上的時間。

對于內核啟動的優化,可以通過bootgraph.pl腳本(位于內核源碼的 script/bootgraph.pl)來繪制內核啟動耗時圖表,用以分析啟動最耗時的地方。這個腳本使用非常簡單,直接將dmesg的輸出作為其輸入,即可生成svg圖表:

dmesg perl scripts/bootgraph.pl > output.svg

生成的圖表如下圖:

如何實現1秒啟動Linux

圖中每一個色段表示一個功能的初始化耗時。可以簡單的關閉不需要的功能,或者針對功能進行特定的優化。

除了內核本身之外,內核所在的文件系統也對系統啟動有著非常大的影響。對于使用閃存芯片作為存儲的系統來說,UbiFS 是一個很好的選擇。它能夠容忍意外斷電,有著出色的掛載速度,以確保系統快速啟動。

應用程序優化

內核完成系統啟動之后,接來下就是執行應用程序。對于應用程序的優化,主要有兩部分,一部分是由應用程序來接管啟動的INIT進程,另一部分是優化應用程序的鏈接方式。

標準的SystemV INIT程序,需要執行一堆啟動腳本。對于嵌入式系統來說,大部分是沒有意義的。另一部分(比如掛載文件系統),可以由應用程序自己來實現。然后,可以在內核啟動參數中通過“init=”參數,將INIT進程直接指定為應用程序。

應用依賴的動態鏈接庫,會按照以下順序查找:

• LD_PRELOAD環境變量指定的路徑(一般對應文件/etc/ld.so.preload);

• ELF .dynamic節中DT_RPATH入口指定的路徑,若DT_RUNPATH入口不存在的話;

• 環境變量LD_LIBRARY_PATH指定的路徑,但如果可執行文件有setuid/setgid權限,則忽略這個路徑;編譯時指定–library-path會覆蓋這個路徑;

• ELF .dynamic節中DT_RUNPATH入口指定的路徑;

• ldconfig緩存中的路徑(一般對應/etc/ld.so.cache文件),若編譯時使用了-z nodeflib的鏈接選項,則此步跳過;

• /lib,然后/usr/lib路徑,若使用了-z nodeflib鏈接選項,則此步亦跳過;

因此,盡可能的將應用程序依賴的動態鏈接庫放到優先查找的路徑,可以加快鏈接速度對于交叉編譯環境特別需要注意,主機上的動態鏈接庫位置和目標系統上的位置可能不一致,這會增加應用程序執行時動態鏈接庫的加載時間。

“如何實現1秒啟動Linux”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴安盟| 天等县| 鄂温| 南投县| 高碑店市| 五大连池市| 绥芬河市| 依兰县| 安新县| 和静县| 开平市| 界首市| 安龙县| 嘉禾县| 体育| 安宁市| 鹤岗市| 屯昌县| 元朗区| 建阳市| 兴仁县| 渭南市| 昌黎县| 鲁山县| 长汀县| 昌邑市| 电白县| 蕲春县| 建始县| 宁波市| 左权县| 鹰潭市| 黔东| 拉孜县| 新竹市| 邛崃市| 郯城县| 九台市| 扶风县| 沭阳县| 靖远县|