国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • 前言
    • ?rootfs打包
    • 制作UBI文件系統(tǒng)鏡像
    • 制作 Ext4文件系統(tǒng)
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

ZLG嵌入式筆記(連載33) | rootfs鏡像制作其實沒那么難

04/04 10:55
1804
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

嵌入式Linux開發(fā)中,文件系統(tǒng)的打包和鏡像制作是關(guān)鍵步驟。本文介紹了Linux核心板文件系統(tǒng)的打包與鏡像制作方法,適合嵌入式開發(fā)人員快速上手。

前言

致遠電子Linux核心板提供的系統(tǒng)固件里,除了鏡像文件之外,通常還會提供文件系統(tǒng)壓縮包。鏡像文件可以直接用于燒寫到目標板,而文件系統(tǒng)壓縮包則可以進行部分修改,修改后重新制作鏡像文件燒寫。

這里只講直接用編譯好的二進制文件對文件系統(tǒng)打包的問題。一般來說,如果自己能從源碼開始編譯文件系統(tǒng),打包文件系統(tǒng)也不會存在什么問題。

?rootfs打包

解開壓縮包,可以看到通常包含如下目錄。

/bin /boot /dev /etc /home /lib /media /opt /proc /root /sbin /tmp /usr /var

對根文件系統(tǒng)進行修改后,再次打包成鏡像文件,由于沒有了buildroot這樣的自動化文件系統(tǒng)制作工具,這就需要特別注意:

    打包文件系統(tǒng)時的目錄位置、權(quán)限等,要用root權(quán)限打包,普通用戶打包會出現(xiàn)錯誤,文件系統(tǒng)不完整。不能將Linux下的tar包解壓在Windows格式的硬盤并打包。

對于文件系統(tǒng)打包位置問題,舉個例子:

$?cd?myrootfs$?ls$?/bin /boot /dev /etc /home /lib /media /opt /proc /root /sbin /tmp /usr /var$?sudo tar cvf ../myrootfs.tar * ? ?#將當前文件系統(tǒng)全部文件打包到上一級目錄

制作UBI文件系統(tǒng)鏡像

使用UBI文件系統(tǒng)時,有ubifs.img和ubi.img兩種不同鏡像。其中ubifs.img用于U-Boot下燒寫,而ubi.img鏡像則用于進入Linux系統(tǒng)后的更新。

1. 制作ubi燒寫鏡像

制作ubi鏡像的工具為mkfs.ubifs,有下列參數(shù):

-r:制定文件內(nèi)容的位置;

-m:頁面大小;

-e:邏輯擦除塊大??;

-p:物理擦除塊大??;

-c:最大的邏輯擦除塊數(shù)量;

-s:最小的硬件輸入輸出頁面大小,如:k9f1208為256。

特別提示,頁面大小等參數(shù)要根據(jù)內(nèi)核加載Flash分區(qū)時ubifs輸出的信息一致,否則不能啟動系統(tǒng)。

示例:

$?sudo mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 1948 -o ubifs.img

2. 制作ubifs鏡像

制作ubifs鏡像用到的工具為ubinize。例:

$?sudo ubinize -o ubi.img -m 2048 -s 512 -p 131072 ubifs.conf

ubifs.conf的內(nèi)容如下:

[ubifs]mode=ubiimage=ubifs.imgvol_id=0vol_size=200MiBvol_type=dynamicvol_name=rootfs ? ? ? ? ? ? ? ?#建議與uboot創(chuàng)建的卷標一致vol_alignment=1vol_flags=autoresize

進入Linux后可通過ubiformat命令燒寫ubi.img,例如:

#?ubiformat /dev/mtd4 -s 512 -f ubi.img

制作 Ext4文件系統(tǒng)

制作Ext4文件系統(tǒng),一般方法是先準備好根文件系統(tǒng)內(nèi)容,然后創(chuàng)建一個鏡像文件,格式化成Ext4格式,然后將鏡像文件掛載到一個目錄并復制根文件系統(tǒng)的內(nèi)容到里面,之后卸載,最后進行一些處理。

$sudo?mkdir?fs?$sudo?dd?if=/dev/zero of=fs.img bs=1M count=4096?#創(chuàng)建初始大小的鏡像文件$sudo?mkfs.ext4 fs.img ? ? ? ? ? ? ? ? ? ? ? ? ??#格式化鏡像文件為Ext4文件系統(tǒng)$sudo?mount fs.img fs/ ? ? ? ? ? ? ? ? ? ? ? ? ??#掛載鏡像文件到fs目錄$sudo?cp?-rfp myrootfs/* fs/ ? ? ? ? ? ? ? ? ? ??#復制根文件系統(tǒng)文件$sudo?umount fs/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#卸載$sudo?e2fsck -p -f fs.img ? ? ? ? ? ? ? ? ? ? ? ?#檢查文件系統(tǒng)分區(qū)是否正常$sudo?resize2fs -M fs.img <blk-size> ? ? ? ? ? ??#調(diào)整文件系統(tǒng)鏡像大小

也可以寫成腳本將幾步操作合成一步操作,例如MX2000文件系統(tǒng)制作腳本內(nèi)容如下:

#!/bin/bashOUTPUT_FILE=data.ext4TARGET_DIR=./usrdata/ROOTFS_EXT4_REV=1ROOTFS_EXT4_LABEL="data"ROOTFS_EXT4_SIZE=3069ROOTFS_EXT4_SIZE_MB=${ROOTFS_EXT4_SIZE}MROOTFS_EXT4_INODES=0ROOTFS_EXT4_RESBLKS=5ROOTFS_EXT4_MKFS_OPTIONS="-O ^64bit -O ^has_journal"dd?if=/dev/zero of=${OUTPUT_FILE}?bs=1M count=${ROOTFS_EXT4_SIZE}mke2fs -d?${TARGET_DIR}?? ? -r?${ROOTFS_EXT4_REV}?? ? -N?${ROOTFS_EXT4_INODES}?? ? -m?${ROOTFS_EXT4_RESBLKS}?? ? -L?"${EXT4_LABEL}"?? ??${EXT4_MKFS_OPTS}?  ??${OUTPUT_FILE}
致遠電子

致遠電子

廣州致遠電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術(shù)認證企業(yè),廣州市高端工控測量儀器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。

廣州致遠電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術(shù)認證企業(yè),廣州市高端工控測量儀器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄
永吉县| 平定县| 吉隆县| 铅山县| 泗阳县| 商水县| 缙云县| 泗水县| 略阳县| 洞口县| 白玉县| 齐齐哈尔市| 潮安县| 安达市| 康平县| 咸宁市| 洛浦县| 讷河市| 柘城县| 海阳市| 安达市| 阜平县| 胶南市| 房山区| 张北县| 白河县| 东乡县| 荥经县| 山阳县| 潢川县| 新田县| 阿克| 柘城县| 南木林县| 湖南省| 丰台区| 湟源县| 政和县| 惠安县| 光山县| 靖西县|