精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式Linux文件系統(tǒng)管理的工具選擇

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Troy Kitch,Joe Gree ? 2022-06-22 11:15 ? 次閱讀

隨著預(yù)算的減少、產(chǎn)品生命周期的縮短以及更多的功能被集成到電子設(shè)備中,開發(fā)人員感受到了交付高級(jí)軟件的壓力。雖然 Linux 和開源通常是嵌入式開發(fā)的正確選擇,但它們不能發(fā)揮神奇的作用。一些成本仍然與選擇開源開發(fā)工具相關(guān)。在決定使用哪些工具時(shí),開發(fā)人員必須考慮他們是否將時(shí)間花在真正具有創(chuàng)新性和差異化的東西上,還是花在諸如集成和支持之類的繁忙工作上。

工具選擇可以幫助或阻礙開發(fā)人員獲得項(xiàng)目控制權(quán)的努力。真正有價(jià)值的工具的試金石是它們是否可以幫助開發(fā)人員在產(chǎn)品的短暫生命周期內(nèi)啟用正確的功能。

遭受這種失控的嵌入式 Linux 開發(fā)的一個(gè)領(lǐng)域是構(gòu)建 Linux 所依賴的通常復(fù)雜的文件系統(tǒng)的過程。平臺(tái)開發(fā)人員需要集成和安裝數(shù)十個(gè)甚至數(shù)百個(gè)獨(dú)立的軟件組件,但手動(dòng)創(chuàng)建目標(biāo)文件系統(tǒng)既耗時(shí)、困難又復(fù)雜。如果沒有合適的工具,這個(gè)過程很容易出錯(cuò)。這些時(shí)間和精力可以更好地用于開發(fā)使產(chǎn)品與競爭對手區(qū)分開來的功能。Linux 文件系統(tǒng)配置是最困難且在某種意義上回報(bào)最少的活動(dòng)。

傳統(tǒng)Linux開發(fā)

Linux 的第一個(gè)版本是在目標(biāo)位于主機(jī)本身或類似機(jī)器上的環(huán)境中開發(fā)的。正因?yàn)槿绱?,伴隨的工具傳統(tǒng)上是針對主機(jī)開發(fā)環(huán)境量身定制的。從根本上說,開發(fā)人員更容易為與他們正在開發(fā)的機(jī)器類似的機(jī)器進(jìn)行開發(fā)。隨著目標(biāo)環(huán)境離宿主環(huán)境越來越遠(yuǎn),開發(fā)者面臨的挑戰(zhàn)也越來越大。

為主機(jī)或類似環(huán)境進(jìn)行開發(fā)不需要太多額外的工作。事實(shí)上,一些嵌入式系統(tǒng)與 PC 非常相似,開發(fā)人員可以運(yùn)行他們選擇的實(shí)際 Linux 發(fā)行版,例如 SuSe 或 Fedora。但是,針對當(dāng)今市場上的一種不同處理器架構(gòu)進(jìn)行開發(fā)可能是一項(xiàng)挑戰(zhàn)。

嵌入式Linux開發(fā)和交叉開發(fā)

當(dāng)資源受到限制并且目標(biāo)處理器正在運(yùn)行許多可用的非 x86 處理器之一時(shí),環(huán)境會(huì)變得更加復(fù)雜。在這種環(huán)境中,在具有許多資源的主機(jī)上進(jìn)行開發(fā),然后交叉編譯為特定處理器架構(gòu)開發(fā)二進(jìn)制文件會(huì)更有效率。

由于其模塊化設(shè)計(jì),Linux 可以在小型設(shè)備上高效運(yùn)行。開發(fā)人員可以選擇他們想要實(shí)現(xiàn)的功能并刪除他們不需要的功能。完成此任務(wù)并微調(diào)特定設(shè)備的功能和用戶界面需要真正的技巧。

但僅僅因?yàn)樗悄K化的,并不意味著有一條明確的成功之路。開發(fā)人員必須考慮兩種方法:遵循基于包的安裝,利用大多數(shù)可用的 Linux 發(fā)行版,或者將包集成到構(gòu)建系統(tǒng)環(huán)境中。構(gòu)建系統(tǒng)的一個(gè)問題是它與 Linux 的分發(fā)方式不一致,通常是像 .deb 或 .rpm 這樣的包。另一個(gè)挑戰(zhàn)是任何特定構(gòu)建系統(tǒng)所需的學(xué)習(xí)曲線。以下討論將介紹包管理器并解釋它們?nèi)绾螏椭驌p害開發(fā)人員構(gòu)建嵌入式 Linux 文件系統(tǒng)的能力。

選擇嵌入式 Linux 文件系統(tǒng)管理器

Debian GNU/Linux 發(fā)行版的創(chuàng)始人 Ian Murdock 將包管理描述為“Linux 為行業(yè)帶來的最大進(jìn)步?!彼J(rèn)為包管理模糊了操作系統(tǒng) (OS) 和應(yīng)用程序之間的界限,使其“更容易”推動(dòng)新的創(chuàng)新,“??進(jìn)入市場”,“??和發(fā)展操作系統(tǒng)?!?,?ù

可用于構(gòu)建嵌入式 Linux 文件系統(tǒng)的工具在跨平臺(tái)和資源受限的環(huán)境中變得更加有用。開發(fā)人員在選擇特定工具或集成開發(fā)環(huán)境 (IDE) 之前提出幾個(gè)問題非常重要。考慮一下:您從哪里獲得 Linux 源代碼,以及它是如何打包交付的?您將文件系統(tǒng)用于什么目的,如何針對特定目標(biāo)對其進(jìn)行優(yōu)化?開發(fā)人員選擇的軟件包安裝程序可以在優(yōu)化的文件系統(tǒng)和嵌入式設(shè)備的糟糕借口之間產(chǎn)生差異。

管理嵌入式 Linux 文件系統(tǒng)的常用方法是使用 RPM 或 dpkg 之類的包管理器來安裝和刪除非 root 目錄,fakeroot 用于偷偷摸摸地執(zhí)行不需要 root 權(quán)限的 chroot,或者使用虛擬目標(biāo)進(jìn)行開發(fā),例如Linux QEMU 處理器仿真器或 Virtutech,??s Simics 虛擬平臺(tái)。這些不同的選項(xiàng)中的每一個(gè)都有優(yōu)點(diǎn)和缺點(diǎn),可以通過替代解決方案來彌補(bǔ):平臺(tái)圖像構(gòu)建器。

包管理器

文件系統(tǒng)管理的衛(wèi)冕冠軍是 RPM 包管理器。RPM 很有用,因?yàn)樗菢?biāo)準(zhǔn)的并且在大多數(shù) Linux 系統(tǒng)上都可用。與其他同類產(chǎn)品一樣,RPM 具有安裝到非系統(tǒng)根目錄的內(nèi)置功能,這是有利的,因?yàn)槁斆鞯拈_發(fā)人員不希望意外破壞其主機(jī)文件系統(tǒng)的能力。但是 RPM 并沒有解決包依賴問題;它只是確定是否滿足依賴關(guān)系。它要求開發(fā)人員已經(jīng)知道依賴關(guān)系,因此不會(huì)去檢查各種包以確定需要解析哪些包來構(gòu)建文件系統(tǒng)。

要解決依賴關(guān)系,開發(fā)人員必須添加另一個(gè)工具,例如 Yellowdog Updater (yum) 或 Advanced Packaging Tool (apt)。作為一個(gè) C++ 函數(shù)庫,創(chuàng)建 apt 是為了在升級(jí)期間處理依賴關(guān)系和處理配置文件時(shí)有效地安裝包。但是,apt 和 yum 僅限于命令行。如果開發(fā)人員不熟悉 Linux 或這些工具,他們可能會(huì)面臨相對陡峭的學(xué)習(xí)曲線。此外,所有信息都是文本的,并且相對于圖形文件系統(tǒng)管理器通常難以導(dǎo)航。

偽裝根

Linux 可以適當(dāng)?shù)卦O(shè)置權(quán)限,以保護(hù)系統(tǒng)免受與修改或刪除文件相關(guān)的惡意意圖、無知或健忘。Linux 有一個(gè)包含所有子目錄的基本根目錄。這個(gè)基本根,通常稱為 ??ú/??ù(發(fā)音為斜線),受到 Linux 系統(tǒng)用戶的保護(hù)。管理員限制對“?ú/”?ù 的訪問,并在其下為每個(gè)用戶提供可修改的主子目錄。這使用戶能夠訪問系統(tǒng)并以適當(dāng)?shù)臋?quán)限和能力完成他們的任務(wù)。

但是,某些文件系統(tǒng)創(chuàng)建操作需要 root 權(quán)限。如果沒有 root 權(quán)限,開發(fā)人員無法創(chuàng)建其他用戶擁有的文件、創(chuàng)建設(shè)備節(jié)點(diǎn)或提交更改 root 操作。這些限制限制了配置文件系統(tǒng)的能力。

一種選擇是使用像 fakeroot 這樣的工具,它可以在用戶主機(jī)系統(tǒng)的目錄中創(chuàng)建一個(gè)虛擬的“?ú/”文件系統(tǒng)樹。它通過重新定義主機(jī)系統(tǒng)庫中的標(biāo)準(zhǔn)函數(shù)來提供一個(gè)假的“?ú/”?ù 環(huán)境。通過這種方式,它更改了引用文件的實(shí)用程序并捕獲有關(guān)文件的特權(quán)信息,而無需 root 特權(quán)來創(chuàng)建它們。此外,它可以與標(biāo)準(zhǔn)實(shí)用程序一起使用,而無需特殊工具。與 RPM 一樣,fakeroot 不解決依賴關(guān)系,將這項(xiàng)艱巨的任務(wù)留給了開發(fā)人員。

在這里,RPM 和 fakeroot 都面臨一個(gè)額外的挑戰(zhàn):開發(fā)人員可能希望在目標(biāo)目錄中執(zhí)行代碼,如果該代碼用于與主機(jī)不同的架構(gòu),它根本無法運(yùn)行。

虛擬開發(fā)

構(gòu)建文件系統(tǒng)的第三種替代方法是使用虛擬環(huán)境,如 QEMU、Simics 或 VMware Workstation。這解決了包管理器和 fakeroot 工具都面臨的挑戰(zhàn),即無法在與目標(biāo)架構(gòu)不同的主機(jī)上運(yùn)行代碼。虛擬環(huán)境還提供了使用主機(jī)上所有可用資源(例如內(nèi)存、存儲(chǔ)和快速處理器)為虛擬目標(biāo)進(jìn)行開發(fā)的能力,享受 PC 上自托管開發(fā)的許多優(yōu)勢。

使用虛擬環(huán)境通常比在目標(biāo)本身上進(jìn)行開發(fā)要快,但它會(huì)增加復(fù)雜性,相對于交叉開發(fā)降低處理器能力。

平臺(tái)鏡像生成器

如本文開頭所述,平臺(tái)開發(fā)人員需要集成和安裝數(shù)十個(gè)(如果不是數(shù)百個(gè))單獨(dú)的軟件組件,但手動(dòng)創(chuàng)建目標(biāo)文件系統(tǒng)既耗時(shí)、困難又復(fù)雜。創(chuàng)建文件系統(tǒng)后,必須將其轉(zhuǎn)換為目標(biāo)圖像(參見側(cè)欄)。更高級(jí)的工具可以簡化組裝、調(diào)整和創(chuàng)建文件系統(tǒng)映像的任務(wù)。

平臺(tái)映像生成器通過提供系統(tǒng)的可視化地圖來實(shí)現(xiàn)這一點(diǎn),用于選擇 Linux 目標(biāo)包、集成自定義包和內(nèi)核、動(dòng)態(tài)確定文件系統(tǒng)大小、自動(dòng)解決依賴關(guān)系和沖突,以及生成多種標(biāo)準(zhǔn)格式的文件系統(tǒng)。

平臺(tái)圖像構(gòu)建器對于從最終圖像中修剪組件很有用,無論它們是單個(gè)文件還是整個(gè)層次結(jié)構(gòu)(例如,文檔和示例配置文件)。能夠?qū)黠@地分類為文檔、字體、圖形或解釋器等組,可以讓開發(fā)人員快速訪問和更快地消除不必要的包(參見圖 1)。

圖1

pYYBAGKyipmAXU-kAAFxhaf3Qco893.png

此功能還使用戶能夠通過樹層次結(jié)構(gòu)對文件和目錄進(jìn)行下鉆和排序。要?jiǎng)h除文件,只需取消選中相鄰的框(圖 2)。除了刪除單個(gè)文件外,開發(fā)人員還可以選擇將整個(gè)所需的支持包標(biāo)記為“?úphantom”。?ù 這樣的包是構(gòu)建其他包所必需的,但不是最終構(gòu)建所必需的,因此在運(yùn)行時(shí)不包括在內(nèi)。

圖 2

pYYBAGKyiqCASMFDAAGZYcgww4M511.png

在設(shè)置平臺(tái)映像項(xiàng)目 (.pib) 時(shí),開發(fā)人員可以包含和集成自定義包和內(nèi)核。這種靈活性提供了競爭差異化和控制嵌入式開發(fā)人員在如此快節(jié)奏的市場中的需求。

平臺(tái)映像生成器提供了許多影響映像文件大小的選項(xiàng)。它通過以下方式做到這一點(diǎn):

優(yōu)化庫占用空間并減小一些共享庫的大小

預(yù)鏈接可執(zhí)行文件,加快啟動(dòng)速度

從最終的二進(jìn)制文件中刪除調(diào)試符號(hào),使它們更小更快

這些措施不僅是為了減小圖像的大小,而且是為了提高性能。

平臺(tái)映像生成器使用 RPM 包中包含的依賴信息來根據(jù)需要自動(dòng)包含支持包(圖 3)。這與 Linux 通常的分發(fā)方式是一致的,并且消除了手動(dòng)計(jì)算依賴項(xiàng)的平凡任務(wù)。但是,在進(jìn)行包選擇時(shí),可以選擇相互沖突的包。由于這會(huì)導(dǎo)致錯(cuò)誤并阻止項(xiàng)目成功構(gòu)建,因此開發(fā)人員必須在創(chuàng)建映像之前解決沖突。平臺(tái)映像生成器通過將所有沖突標(biāo)記和列出為錯(cuò)誤來提供幫助,從而可以輕松查看和更改它們,直到所有沖突都被消除。

圖 3

poYBAGKyiqiAciu0AAFq7HxhBR8629.png

最后,借助平臺(tái)鏡像生成器等文件系統(tǒng)管理工具,平臺(tái)開發(fā)人員可以生成常用的文件格式,包括 ext2、JFFS2、cpio、CRAMFS 和 ext3。根據(jù)格式,可以使用不同的選項(xiàng)來配置映像和設(shè)置掛載點(diǎn)。

與前面提到的為嵌入式 Linux 開發(fā)創(chuàng)建和管理文件系統(tǒng)的方法相比,平臺(tái)映像生成器具有圖形用戶界面,不需要模擬環(huán)境,因此不會(huì)使用與虛擬機(jī)相關(guān)的資源。平臺(tái)映像生成器將文件系統(tǒng)轉(zhuǎn)換為映像,沒有復(fù)雜性和較慢的處理能力,為開發(fā)人員提供嵌入式 Linux 交叉開發(fā)項(xiàng)目所需的生產(chǎn)力。

工具試金石

嵌入式 Linux 開發(fā)人員可以使用平臺(tái)映像生成器等工具獲得對構(gòu)建復(fù)雜文件系統(tǒng)的更多控制,這使得組裝、調(diào)整和創(chuàng)建文件系統(tǒng)映像更容易完成。這使開發(fā)人員能夠花時(shí)間開發(fā)使產(chǎn)品與競爭對手區(qū)分開來的功能。請記住,真正有價(jià)值的工具的試金石是它們是否可以幫助開發(fā)人員在產(chǎn)品的短生命周期內(nèi)啟用更多正確的功能。

作者:Troy Kitch,Joe Green

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19165

    瀏覽量

    229129
  • 嵌入式
    +關(guān)注

    關(guān)注

    5068

    文章

    19019

    瀏覽量

    303291
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11229

    瀏覽量

    208927
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式Linux文件系統(tǒng)管理

      嵌入式 Linux 開發(fā)人員可以使用平臺(tái)映像生成器等工具獲得對構(gòu)建復(fù)雜文件系統(tǒng)的更多控制,這使得組裝、調(diào)整和創(chuàng)建文件系統(tǒng)映像更容易完成。
    發(fā)表于 08-12 09:23 ?708次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>文件系統(tǒng)管理</b>

    嵌入式Linux入門(二、Linux文件系統(tǒng)、文件類型及權(quán)限管理

    嵌入式 Linux入 門第二課, linux 文件系統(tǒng)文件類型及權(quán)限管理。 ...... 矜
    的頭像 發(fā)表于 06-20 11:44 ?1981次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>入門(二、<b class='flag-5'>Linux</b><b class='flag-5'>文件系統(tǒng)</b>、<b class='flag-5'>文件</b>類型及權(quán)限<b class='flag-5'>管理</b>)

    嵌入式文件系統(tǒng)構(gòu)建

    文件系統(tǒng),因此非常適合嵌入式系統(tǒng)。要注意的是,不同的文件系統(tǒng)都有相應(yīng)的制作工具,但是其主要的原理和制作方法是類似的。 在
    發(fā)表于 09-02 14:25

    Linux文件系統(tǒng)管理

    Linux文件系統(tǒng)管理作者:吳新武,華清遠(yuǎn)見嵌入式學(xué)院講師。Unix業(yè)界有句話叫“一切皆文件”,Linux作為一個(gè)優(yōu)秀的類Unix操作
    發(fā)表于 09-13 09:48

    適合嵌入式Linux應(yīng)用的文件系統(tǒng)—— JFFS

    介紹一種適合嵌入式Linux應(yīng)用的文件系統(tǒng)—— JFFS。JFFS是一種在開源模式下開發(fā)的文件系統(tǒng), 為嵌入式
    發(fā)表于 04-16 11:07 ?4次下載

    適合嵌入式Linux應(yīng)用的文件系統(tǒng)—— JFFS

    介紹一種適合嵌入式Linux應(yīng)用的文件系統(tǒng)—— JFFS。JFFS是一種在開源模式下開發(fā)的文件系統(tǒng), 為嵌入式
    發(fā)表于 05-14 15:27 ?12次下載

    用Busybox制作嵌入式Linux文件系統(tǒng)

    文件系統(tǒng)Linux 的運(yùn)行提供最基本的工具、庫、腳本和一些特殊文件的支持Busybox 是制作嵌入式
    發(fā)表于 06-12 16:05 ?19次下載

    構(gòu)造嵌入式Linux文件系統(tǒng)

    文件系統(tǒng)Linux 系統(tǒng)最基本的資源。本文介紹了一種嵌入式Linux 文件系統(tǒng)的構(gòu)造過程,較為
    發(fā)表于 08-07 09:11 ?10次下載

    嵌入式Linux文件系統(tǒng)的研究與應(yīng)用

    隨著嵌入式系統(tǒng)的發(fā)展,使用Linux操作系統(tǒng)搭建的嵌入式平臺(tái)得到了越來越廣泛的應(yīng)用。文件系統(tǒng)
    發(fā)表于 08-13 08:59 ?16次下載

    Linux系統(tǒng)管理命令

    Linux系統(tǒng)管理命令 Linux系統(tǒng)管理命令  wall命令  功能:這個(gè)命令的功能是對全部已登錄的用戶發(fā)送信息,用戶可以先把要發(fā)送的信息寫好存入一個(gè)
    發(fā)表于 01-18 12:47 ?801次閱讀

    Linux嵌入式文件系統(tǒng)如何構(gòu)建

    Linux支持多種文件系統(tǒng),同樣,嵌入式Linux也支持多種文件系統(tǒng)。雖然在嵌入式
    發(fā)表于 06-18 09:23 ?984次閱讀

    嵌入式】構(gòu)建嵌入式Linux系統(tǒng)(uboot、內(nèi)核、文件系統(tǒng)

    嵌入式Linux系統(tǒng)知識(shí)架構(gòu)及層次嵌入式Linux系統(tǒng)構(gòu)成及啟動(dòng)略析
    發(fā)表于 10-20 18:20 ?42次下載
    【<b class='flag-5'>嵌入式</b>】構(gòu)建<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>(uboot、內(nèi)核、<b class='flag-5'>文件系統(tǒng)</b>)

    嵌入式Linux系統(tǒng)移植開發(fā)-(1)基于Yocto構(gòu)建嵌入式u-boot,內(nèi)核,文件系統(tǒng)

    基于Yocto構(gòu)建嵌入式u-boot,內(nèi)核,文件系統(tǒng)Yocto是什么?簡單地概括,它是一個(gè)工具,可以用來構(gòu)建u-boot,kernel,文件系統(tǒng),交叉編譯
    發(fā)表于 11-01 17:38 ?14次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>移植開發(fā)-(1)基于Yocto構(gòu)建<b class='flag-5'>嵌入式</b>u-boot,內(nèi)核,<b class='flag-5'>文件系統(tǒng)</b>

    嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng)

    嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng)嵌入式文件系
    發(fā)表于 11-02 12:51 ?16次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>移植-(<b class='flag-5'>Linux</b><b class='flag-5'>文件系統(tǒng)</b>)

    Linux高級(jí)文件系統(tǒng)管理詳解

    階的文件系統(tǒng)就得要學(xué)習(xí),本章我們會(huì)介紹磁盤陣列 (RAID),及邏輯卷軸文件系統(tǒng) (LVM),這些工具都可以幫助你管理與維護(hù)使用者可用的磁盤容量.
    的頭像 發(fā)表于 07-16 16:31 ?321次閱讀