嵌入式linux 分区挂载,嵌入式linux系统的开发——文件系统的分区和挂载
前言
當(dāng)我們新買的硬盤安裝在電腦上后,必須要對硬盤分區(qū)和文件系統(tǒng)格式化后才能使操作系統(tǒng)能夠在分區(qū)內(nèi)正常讀寫和保存文件。所謂分區(qū)即是將硬盤劃分為多個空間范圍,我們可以在不同的分區(qū)內(nèi)存放不同的文件以便于管理。而對分區(qū)后的硬盤空間格式化則是按文件系統(tǒng)格式劃分存儲單元,使操作系統(tǒng)可以識別和使用這些空間范圍。可以形象地把一個硬盤相當(dāng)于一個城市,分區(qū)則是將城市分為幾個區(qū),格式化即是在每個區(qū)內(nèi)指定相應(yīng)的街道、門牌,這樣人們就能快速的找到指定的地點(diǎn)。
嵌入式Linux中廣泛使用Flash作為存儲介質(zhì),Flash具有高可靠性、高存儲密度、低價格、非易失、擦寫方便等優(yōu)點(diǎn)。在Flash上也可以運(yùn)行文件系統(tǒng),其中針對Flash存儲器的特性而設(shè)計的jffs2(journaling flash file system version 2)文件系統(tǒng)十分合適。由于Flash中各個塊的最大擦除次數(shù)有限,jffs2文件系統(tǒng)具有磨損均衡功能,可以均勻地使用各個塊,延長Flash的整體壽命。jffs2文件系統(tǒng)還具有對存儲空間的碎片收集功能,以提高Flash存儲器的利用率。最為重要的是作為日志型文件系統(tǒng),jff2文件系統(tǒng)能夠避免意外掉電而導(dǎo)致數(shù)據(jù)丟失的情況。
在Linux中為了文件系統(tǒng)更好地訪問Flash存儲器而設(shè)計了mtd(memory technology devices), 提供了對Flash操作的一系列標(biāo)準(zhǔn)接口,這樣jffs2文件系統(tǒng)就可建立在mtd中的mtd_block模塊之上對FLash進(jìn)行操作。
一般情況下Linux的基本分區(qū)會包括uboot、kernel和rootfs,我們可以通過掛載分區(qū)的方式接入更多的分區(qū),本文主要介紹如何在Flash介質(zhì)上實(shí)現(xiàn)分區(qū)和jffs2文件系統(tǒng)格式化,并將分區(qū)掛載至Linux系統(tǒng)中。
分區(qū)與目錄樹的關(guān)系
Linux內(nèi)所有數(shù)據(jù)都以文件的形態(tài)來呈現(xiàn),而所有的文件都在目錄樹結(jié)構(gòu)下。目錄樹(directory tree)是以根目錄為主,向下呈現(xiàn)分支狀的一種文件系統(tǒng)目錄結(jié)構(gòu),系統(tǒng)指定了每個目錄的作用和其中的文件類型,最上層是根目錄(/),/dev、/etc、/mnt等其余所有的目錄都為根目錄的子節(jié)點(diǎn)。主分區(qū)掛載到了根目錄下,如果沒有其他任何分區(qū)掛載,根目錄下的所有目錄都在主分區(qū)下,在任何目錄下讀寫操作實(shí)際操作的是主分區(qū)。
當(dāng)我們想使用其他分區(qū)時,必須將這個分區(qū)掛載到一個已經(jīng)存在的目錄下(如/mnt等),或者掛載到自己建立的目錄(如/mnt/media),掛載后這個目錄成為這個分區(qū)的訪問入口,而這個目錄下以前的內(nèi)容將不再可用,因此像/lib、/dev、/etc、/usr這類存放系統(tǒng)文件的目錄不能進(jìn)行掛載,否則操作系統(tǒng)將無法找到所需的文件而引起崩潰。
文件系統(tǒng)格式
Linux系統(tǒng)中每個分區(qū)都需要有一個文件系統(tǒng),這些分屬不同分區(qū)的、單獨(dú)的文件系統(tǒng)分別掛載到目錄樹中形成一個系統(tǒng)的目錄層次結(jié)構(gòu)。可以使用flash_erase工具以jffs2文件系統(tǒng)對分區(qū)進(jìn)行格式化。
flash_erase工具的使用說明如下。
root@Yuanxiao:/sbin# flash_erase --help
Usage: flash_erase [options] MTD_DEVICE
Erase blocks of the specified MTD device.
Specify a count of 0 to erase to end of device.
-j, --jffs2 format the device for jffs2
-N, --noskipbad don't skip bad blocks
-u, --unlock unlock sectors before erasing
-q, --quiet do not display progress messages
--silent same as --quiet
--help display this help and exit
--version output version information and exit
Flash存儲器的分區(qū)信息位于dts文件中,cat /proc/mtd命令可查看分區(qū)情況。此處對mtd5分區(qū)以jffs2文件系統(tǒng)進(jìn)行格式化,由于mtd5分區(qū)的size為0xe80000,擦除大小為0x10000,因此需要232個塊操作。分區(qū)格式化后可見每個塊的前12個字節(jié)內(nèi)容由FF變?yōu)槲募到y(tǒng)的頭部信息。
分區(qū)掛載實(shí)現(xiàn)
lsblk命令可列出所有可用的塊設(shè)備的信息,從中可知Flash上分區(qū)情況和掛載點(diǎn)。mount命令將mtd5分區(qū)的文件系統(tǒng)掛載到指定的/mnt/media目錄下,-t選項(xiàng)指明了以jffs2文件系統(tǒng)類型掛載,掛載后mtd5分區(qū)和/mnt/media目錄關(guān)聯(lián)起來,我們訪問/mnt/media目錄即訪問mtd5分區(qū)。
總結(jié)
當(dāng)分區(qū)掛載完成后就可正常訪問分區(qū),我們可使用df命令查看當(dāng)前被掛載分區(qū)的空間使用情況,包括分區(qū)總?cè)萘俊⒁延萌萘俊⒖捎萌萘俊燧d點(diǎn)等信息顯示,-h 選項(xiàng)以方便閱讀方式顯示,-T選項(xiàng)會顯示文件系統(tǒng)的類型。
總結(jié)
以上是生活随笔為你收集整理的嵌入式linux 分区挂载,嵌入式linux系统的开发——文件系统的分区和挂载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle setpage,Oracl
- 下一篇: linux下修改组的密码,Linux用户