Linux 檔案系統實驗
V1.1
email: mesmerli@hotmail.com
Linux 檔案系統
Linux 支援許多不同種類的檔案系統,檔案系統透過區塊類型驅動程式操作磁碟或快閃記憶體。本文介紹如何設定 JFFS2 檔案系統與 MTD 區塊驅動程式。
RAM disk
燒 RAMDISK image 至 NAND Flash
什麼是 MTD driver
MTD 是 Memory Technology Devices 的縮寫,是一種為 Flash File System 設計的區塊驅動程式。每組 MTD 驅動程式包含一個字元類型與區塊類型的驅動程式。
MTD RAMDISK 實驗步驟
Host 端
- 使用 make xconfig 設定 MTD 驅動程式 與 JFFS2
- 選取 Memory Technology Deiver (MTD) -> Self-contained MTD devier drivers -> Test driver using RAM
- Test driver using RAM 設定為 y。(編譯驅動程式進入核心)
- MTDRAM device size in KiB 設定為 4096
- MTDRAM erase block size in KiB 設定為 128
- SRAM Hexadecimal Absolute position or 0 設定為 0
- 選取 File Systems -> Journalling Flash File System v2 (JFFS2) support
- Journalling Flash File System v2 (JFFS2) support 設定為 y
- 選取 Network device support -> Ethernet (10 or 100Mbit) -> CS89x0 support 設定為 y
重新編譯 Linux 核心
- make dep
- make clean
- make zImage
root file system 組態設定。
建構新的 root file system (RAMDISK)
- dd if=/dev/zero of=ext2new bs=1k count=8192
- mke2fs -F -m0 -i 2000 ext2new
- mkdir /mnt/loop
- mkdir /mnt/looporg
- mount -w -o loop ext2new /mnt/loop
- mount -w -o loop ext2org /mnt/looporg
- cp -dpR /mnt/looporg/. /mnt/loop/.
- cd /mnt/loop/dev (在 /dev 檔案夾下,建立 MTD 裝置節點)
- mknod -m 777 mtd0 c 90 0
- mknod -m 777 mtdblock0 b 31 0
- cd /
- umount -l /mnt/loop
- gzip -9 ext2new
重新燒錄 Linux 核心與 root file system。
準備 JFFS2 檔案系統影像檔
- mkfs.jffs2 -r rootfs/ -o /usr/src/creator/nfs/rootfs-jffs2.img
Taget 端
- 使用 NFS 的方式,mount host 端的目錄,以存取剛剛建立的 JFFS2 檔案系統影像檔。
- mount 192.168.0.200:/usr/src/creator/nfs /mnt
- 寫入 JFFS2 檔案系統影像檔至 MTD 所管理的記憶體
- cat /mnt/rootfs-jffs2.img > /dev/mtd0
- mount JFFS2 檔案系統
- mount -t jffs2 /dev/mtdblock0 /mnt
- 讀寫 /mnt 目錄,此時 /mnt 目錄的內容即為透過 MTD 操作的 JFFS2 檔案系統。
修改 MTD driver
/usr/src/creator/s3c2410/linux/drivers/mtd/maps/cfi_flagadm.c
修改 JFFS2 的 MTDBLOCK 設備編號 (for non-root FS)
/usr/src/creator/s3c2410/linux/include/linux/mtd/mtd.h
0 意見:
張貼留言