jffs2解壓
① 如何製作和使用Jffs2文件系統
嵌入應用:如何製作和使用Jffs2文件系統 (zhuan)本文主要介紹如何在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 Moles 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聯盟收集整理 ,轉貼請標明原始鏈接
② 電信光貓如何進入超級管理員賬戶
電信光貓HS8546V的超級管理員賬戶密碼獲取步驟如下:
1. 打開「控制面板」,進入「程序和功能」。勾選「Telnet客戶端」項,點擊「確定」。
2. 在「命令提示符」界面中輸入「Telnet 192.168.1.1」並按回車鍵以登錄電信光貓後台。登錄用戶名:root;密碼:admin。
3. 成功登錄電信光貓後台後,輸入「shell」命令並按回車鍵進入Linux命令行執行界面。
4. 在jffs2目錄中,通過輸入命令「cd /mnt/jffs2」進入相應目錄,然後輸入命令「cp hw_ctree.xml myconf.xml.gz」來復制配置文件hw_ctree.xml並重命名為myconfig.xml.gz。
5. 由於「myconfig.xml.gz」是經過AES加密的壓縮文件,需對其執行解密操作。輸入命令「aescrypt2 1 myconfig.xml.gz tmp」並按回車鍵。
6. 然後對「myconfig.xml.gz」文件執行解壓操作。輸入命令「gzip -d myconfig.xml.gz」並按回車鍵。
7. 解壓後的配置文件名為「myconfig.xml」。電信光貓超級管理員賬戶和密碼信息存儲在此文件中,使用「vi」命令消高查看文件內容。
8. 在「myconfig.xml」文件編輯界面中向下移動游標,找到「1050」行,即可看到超級管理員賬戶和密碼。
9. 成功獲取電信光貓超級管理員賬戶後,即可登錄其後台Web管理界面。