linux-2.6.21核心中建立jffs2檔案系統(mtd分割槽的使用)
本文主要介紹如何在AT91SAM9261EK板子上製作和使用jffs2檔案系統,使用的是linux-2.6.21核心。
首先配置MTD
$ make menuconfig 進入 Memory Technology Devices (MTD) ---> <*> Memory Technology Device (MTD) support [*] Debugging [*] MTD partitioning support [*] Command line partition table parsing [*] Direct char device access to MTD devices [*] Caching block device access to MTD devices RAM/ROM/Flash chip drivers -----> <*> Detect non-CFI AMD/JEDEC-compatible flash chips <*> Support for AMD/Fujitsu flash chips Mapping drivers for chip access ---> [*] Support non-linear mappings of flash chips Self-contained MTD device drivers ---> [*] Support for AT45... DataFlash NAND Flash Device Drivers ----> [*] NAND Device Support [*] Support for NAND Flash /SmartMedia on AT91 File systems ----> <*> Second extended fs support [*] Inotify file change notification support [*] Inotify support for user space <*> Filesystem in Userspace support Miscellaneous filesystems <*> Journalling Flash File System v2 (JFFS2) support [*] JFFS2 write-buffering support <*> Compressed ROM file system support (cramfs) |
以上配置中沒有列出的,都沒選;其配置僅做參考,可根據自己的需要自行配置。
$ make all
其次製作mtd-util工具
從網上下載zlib-1.2.3.tar.gz 解壓縮 $ cd zlib-1.2.3
$ ./configure –prefix=/usr/local/arm/3.4.1/arm-linux --shared
修改Makefile如下:
CC=arm-linux-gcc
LDSHARED=arm-linux-ld -shared
$ make all
$ make install
注意:這裡是安裝在/usr/local/arm/3.4.1/arm-linux目錄下
由於交叉編譯mtd工具時需要zlib.h檔案,所以在編譯之前先安裝zlib庫檔案。
從網上下載 mtd-snapshot-20050519.tar.bz2 解壓縮 $ cd mtd/util
修改該目錄下的Makefile:
CROSS=arm-linux-
$ make all
然後將該目錄下生成的 flash_erase,flash_eraseall, mkfs.jffs2工具放在ramdisk 檔案系統中(我這裡放在/bin目錄下),另外在 ramdisk檔案系統的dev目錄下要保證有mtd0~mtd9,mtdblock0~mtdblock9這些裝置,如果沒有可參考 ramdisk檔案系統的製作,也可從pc機相同目錄下拷貝,要加上檔案屬性。
另外,需要將/arm-linux/lib目錄下的libz.so, libz.so.1, libz.so.1.2.3檔案拷貝到ramdisk檔案系統的/lib目錄下,否則mkfs.jffs2工具不能使用。
最後將新生成的uImage和ramdisk檔案下載到板子上,起動系統,使用命令 cat /proc/mtd 可以看到
dev: size erasesize name
mtd0: 00040000 00020000 "Partition 1"
mtd1: 0ffc0000 00020000 "Partition 2"
mtd2: 00420000 00000210 "spi0.0-AT45DB321x"
這裡mtd0,mtd1是nandflash上的分割槽; mtd2是dataflsh上的分割槽,該分割槽上放有u-boot,uImage.img,ramdisk.img,所以我們這裡可以使用空的nandflash上的兩個分割槽。使用之前要先用工具flash_erase或者flash_eraseall擦除nandflash,具體使用的步驟如下:
# flash_erase /dev/mtd1
製作jffs2映像
# cd /var/tmp
# mkdir jffs2 (jffs2下的目錄可以任意建)
# mkfs.jffs2 –d jffs2/ -o jffs2.img
# cp /var/tmp/jffs2/jffs2.img /dev/mtdblock1
最後# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可,使用結束可使用$ umount /mnt/mtd 解除安裝.
如果只是當作普通的jffs2 來使用dataflash或者nandflash,可不必製作 jffs2映像,只需要最後一步,# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可。
AT91sam9263EK使用JFFS2根檔案系統
在AT91sam9263EK成功配置了NFS根檔案系統後,後來又想把JFFS2也移植到AT91sam9263EK上吧,說幹就幹。
1. 呵呵,其實很簡單我使用的linux-2.6.20核心裡已經有jffs2 檔案系統支援,選上jffs2即可
File systems --->
Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support
(0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
[*] JFFS2 write-buffering support
[*] JFFS2 summary support (EXPERIMENTAL)
[*] JFFS2 XATTR support (EXPERIMENTAL)
[*] JFFS2 POSIX Access Control Lists
[*] JFFS2 Security Labels
[*] Advanced compression options for JFFS2
[*] JFFS2 ZLIB compression support
[*] JFFS2 RTIME compression support
[ ] JFFS2 RUBIN compression support
JFFS2 default compression mode (priority)
選上MTD支援
Device Drivers --->
Memory Technology Devices (MTD) --->
<*> Memory Technology Device (MTD) support
[ ] Debugging
<*> MTD concatenating support
[*] MTD partitioning support
< > RedBoot partition table parsing
[*] Command line partition table parsing
<*> ARM Firmware Suite partition parsing
--- User Modules And Translation Layers
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
<*> FTL (Flash Translation Layer) support
<*> NFTL (NAND Flash Translation Layer) support
[ ] Write support for NFTL
2. 從ttp://www.linux-mtd.infradead.org/上下載
mtd-utils-1.0.0.tar.gz 到宿主機。
解壓
tar xvzf mtd-utils-1.0.0.tar.gz
進入mtd-utils-1.0.0目錄修改Makefile進行編譯。
編譯出mkfs.jffs2,nandwrite等工具
3. 建立jffs2根檔案系統:
首先要有一個其他型別的根檔案系統,製作和獲取方式可以參見<< AT91sam9263EK使用NFS根檔案系統>>
比如可以:
mount -t cramfs rootfs_lnxdemo.cramfs tmp/ -o loop
rootfs_lnxdemo.cramfs由atmel提供當然你可以自己製作,這裡直接使用atmel的省去了製作的麻煩。
tar czvf target.tar.gz tmp/
生成jffs2根檔案系統映象:
mkfs.jffs2 –l –s 0x400 –e 0x20000 –d tmp/ -o target.jffs2
4. 燒寫jffs2根檔案系統映象到nand flash。
燒寫方法應該有多種常用的有2種(呵呵自己認為的):
a.通過nand程式設計器燒寫映象檔案到nand flash晶片然後再焊接到pcb.
b.掛載nfs檔案系統,使用nandwrite工具寫映象檔案
到mtd裝置。
第一種適合生產時使用,而我們測試時候比較適合使用第二種方式。
掛載nfs檔案系統:
nandwrite –o /dev/mtd1 target.jffs2
或者是在nfs 根檔案系統下:
mount –t jffs2 /dev/mtdblock1 /mnt
cd /mnt
tar xvzf ../target.tar.gz
umount /mnt
5. 配置核心啟動引數如下:
setenv bootargs mem=64M console=ttyS0 115200 root=/dev/mtdblock1 rootfstype=jffs2 rw
6. 重新啟動,呵呵核心使用jffs2檔案系統自動掛載根檔案系統到mtdblock1裝置上。
ls 測試一下
vi test
hello this is for test jffs2 filesystem.
儲存退出。
Sync
重新啟動
vi test
內容依舊。
Ok jffs2根檔案系統引導成功。
Linux聯盟收集整理 ,轉貼請標明原始連結
相關推薦
linux-2.6.21核心中建立jffs2檔案系統(mtd分割槽的使用)
本文主要介紹如何在AT91SAM9261EK板子上製作和使用jffs2檔案系統,使用的是linux-2.6.21核心。 首先配置MTD $ make menuconfig 進入 Memory Technology Devices (MTD)
Linux核心通訊之---proc檔案系統(詳解)
使用 /proc 檔案系統來訪問 Linux 核心的內容,這個虛擬檔案系統在核心空間和用戶空間之間打開了一個通訊視窗: /proc 檔案系統是一個虛擬檔案系統,通過它可以使用一種新的方法在 Linux核心空間和使用者間之間進行通訊。在 /proc 檔案系統中,我
linux-2-6-11核心除錯環境搭建
linux核心除錯環境分為兩部分 1)用bochs除錯彙編 2)用qemu除錯從start_kernel開始的部分 環境說明: 核心版本: 2.6.11 ubuntu: 6.10 qemu: qemu-stable-0.13 busybox: 1.10.4 安裝ubuntu
交叉編譯環境的搭建(Linux-2.6.32核心)
1、建立安裝目錄 #mkdir /usr/local/arm 如果您的PC 端linux 系統已經有這個資料夾,這步就跳過 2、將交叉編譯工具解壓到安裝目錄(注意C是大寫) #tar -xjvf arm-linux-gcc-4.3.2.tar.
初次編譯Linux—2.6.34核心
一、編譯環境:在ubuntu12.04下編譯純核心Linux-2.6.34 二、下載並解壓原始碼 三、構建編譯環境 現在我們得到的只是原始碼,只是許許多多的文字檔案,要想使這些檔案成為可以執行的程式,需要使用編譯器進行編譯以及連結。編譯器有很多,
檔案結構體struct file(Linux 2.6.23核心) (轉)
struct file結構體定義在/linux/include/linux/fs.h(Linux 2.6.11核心)中,其原型是: struct file { /* * fu_list becomes invalid after file_
linux-2.6.30 核心配置
ly one of the two stacks, unless you know what you are doing # # CONFIG_FIREWIRE is not set # CONFIG_IEEE1394 is not set # CONFIG_I2O is not set # CONFIG_M
深入理解計算機系統(原書第三版)練習題2.6 感性認識整型和浮點型別(同一個數)在機器中表示
/** * 練習題2.6 感性認識整型和浮點型別(同一個數)在機器中表示 * 由於我的機器是小端表示,將列印結果還原真實數並用二進位制表示 * 41913500 -->(還原) 0x00359141 -->(二進位制) 0000 0000 0011 0101
在Linux中建立迴環裝置(loopback device)的方法
你有沒有想過在Linux的檔案管理系統中再建立一個檔案系統,就像在Windows中建立一個新的磁碟分割槽那樣(但其實並不必非得直接那麼做)。這時你就需要用到迴環裝置(loop device)。在Linux中,迴環裝置允許使用者以一個普通磁碟檔案虛擬一個塊裝置。設想一個磁碟裝置
linux-2.6.32在mini2440開發板上移植(10)之觸控式螢幕工作原理以及驅動程式詳細分析
第二部分輸入核心的作用如下: (1) 呼叫input_register_device() used to 新增裝置,呼叫input_unregister_device() 除去裝置。(下面會結合觸控式螢幕驅動講述) (2) 在/PROC 下產生相應的裝置資訊,下面這個例子即是: /proc/bus/input
Linux-12-安裝vmware並建立虛擬機器系統(L003-26)
一、安裝VMware 傻瓜式,下一步,完成了。 二、用VMware建立虛擬機器系統 1.雙擊開啟VMware軟體,右鍵“我的計算機”,選擇新建資料夾: 建好之後如下圖: 2.點檔案-
淺談linux中的根檔案系統(rootfs的原理和介紹)
linux中有一個讓很多初學者都不是特別清楚的概念,叫做“根檔案系統”。我接觸linux前前後後也好幾年了,但是對這個問題,至今也不是特別的清楚,至少沒法給出一個很全面很到位的解釋。於是,今天我們就來理一理這個話題。 一、先交代一下檔案系統 在開始討論根檔案
2018年ElasticSearch6.2.2教程ELK搭建日誌采集分析系統(教程詳情)
domain 服務器日誌 環境 解決 對比 修改 tst 阿裏雲服務 們的 章節一 2018年 ELK課程計劃和效果演示1、課程安排和效果演示簡介:課程介紹和主要知識點說明,ES搜索接口演示,部署的ELK項目演示es: localhost:9200kibana http:
Silverlight & Blend動畫設計系列十:Silverlight中的坐標系統(Coordinate System)與向量(Vector)運動
過度 highlight 圖片 nbsp mgr ack jpg .com bsp 原文:Silverlight & Blend動畫設計系列十:Silverlight中的坐標系統(Coordinate System)與向量(Vector)運動 如果我們習慣於數學坐
Linux作業系統知識點六:作業系統的功能——檔案管理(程序管理)
回顧:作業系統的功能 1.處理器管理 2.儲存管理 3.裝置管理 4.檔案管理 5.作業管理 程序 概念 可併發執行、具有獨立功能的程式(program)關於某個資料集合的一次執行活動。是作業系統進行資源分配和排程執行的基本單位。 程序的特性: 動態性(程序的最基
SD卡中的FAT32檔案系統(二)
2.1 FAT檔案系統簡介 FAT(File Allocation Table,檔案分配表)檔案系統是windows作業系統所使用的一種檔案系統,它的發展過程經歷了FAT12、FAT16、FAT32三個階段。FAT檔案系統用“簇”作為資料單元。一個“簇”由一組連續的扇區
在linux Ubuntu16上搭建ceph分散式檔案系統(四節點)實測有效!
特別注意:如果命令直接複製粘貼出現錯誤,則手動輸入可解決參考教程:第一步~~~.準備 4個Ubuntu 16.04 Server 虛擬機器(可以使用VMware或者VirtualBox)配置好每個虛擬機器的IP 以及hostname (很重要!)我的四臺虛擬機器配置如下:(
Linux 基礎知識 之 ISCSI 檔案系統 (磁碟共享)
一、iSCSI簡介 iscsi是一種塊級別的協議,用於通過TCP/IP網路共享原始儲存裝置,即硬碟的共享。可以用已經存在的IP和乙太網如網絡卡、交換機、路由器等通過iSCSI協議共享和訪問儲存。 iSCSI target是一種由遠端iSCSI伺服器(target)提供的遠端硬碟。 二、磁
Linux 2.6核心中新的鎖機制--RCU
一、 引言 眾所周知,為了保護共享資料,需要一些同步機制,如自旋鎖(spinlock),讀寫鎖(rwlock),它們使用起來非常簡單,而且是一種很有效的同步機制,在UNIX系統和Linux系統中得到了廣泛的使用。但是隨著計算機硬體的快速發展,獲得這種鎖的開銷相對於CPU
inotify -- Linux 2.6 核心中的檔案系統變化通知機制
一、 引言 眾所周知,Linux 桌面系統與 MAC 或 Windows 相比有許多不如人意的地方,為了改善這種狀況,開源社群提出使用者態需要核心提供一些機制,以便使用者態能夠及時地得知核心或底層硬體裝置發生了什麼,從而能夠更好地管理裝置,給使用者提供更好的服務,如 hotplug、udev 和 ino