中国青基会

查看完整版本: 在嵌入式Linux系统中挂载 jffs2 根文件系统

zqxyeda 2008-12-3 11:21

在嵌入式Linux系统中挂载 jffs2 根文件系统

[align=center][size=14pt][b][font=宋体]在[/font][/b][/size][size=14pt][b][font=宋体]嵌入式[/font][/b][/size][size=14pt][b]Linux[/b][/size][size=14pt][b][font=宋体]系统中挂载 jffs2 根文件系统[/font][/b][/size][size=10.5pt][/size][/align]
[size=10.5pt][font=宋体]我已经在《[/font][/size][size=10pt][b][font=宋体]构建基本的[/font][/b][/size][size=10pt][b][font=宋体]嵌入式[/font][/b][/size][size=10pt][b]Linux[/b][/size][size=10pt][b][font=宋体]根文件系统[/font][/b][/size][size=10pt][font=宋体]》介绍了[/font][/size][size=10.5pt][font=宋体]如何建立基本的[/font][/size][size=10.5pt][font=宋体]嵌入式[/font][/size][size=10.5pt]Linux[/size][size=10.5pt][font=宋体]根文件系统,并用NFS挂载成功。如果要以挂载JFFS2格式的根文件系统,其基本方法就是[/font][/size][size=12pt][font=宋体]将这个建立好的根文件系统制作成jffs2镜像,烧到FLASH中,改改[/font][/size][size=12pt]Linux[/size][size=12pt][font=宋体]的启动参数即可。[/font][/size][size=10.5pt][/size]

[size=10.5pt][/size]
[size=10.5pt][font=宋体]具体做法如下:[/font][/size][size=10.5pt][/size]
[size=14pt][font=宋体]一、宿主机HOST编译制做MTD工具[/font][/size][size=10.5pt][/size]

[size=10.5pt][/size]
[size=10.5pt][font=宋体]从[/font][/size][size=10.5pt]http://www.linux-mtd.infradead.org/[/size][size=10.5pt][font=宋体]下载mtd-utils 的tarball,可以下载最新的。然后解压,并在其目录下 make 就好![/font][/size][size=10.5pt][/size]

[size=10.5pt][/size]
[size=14pt][font=宋体]二、制作根文件系统的JFFS2镜像。[/font][/size][size=10.5pt][/size]

[size=10.5pt][/size]
[size=10.5pt][font=宋体]使用MTD工具中的mkfs.jffs2命令,具体做法如下: [/font][/size][size=10.5pt][/size]
[table][tr][td=1,1,568][size=10.5pt]mkfs[/size][size=10.5pt].[/size][size=10.5pt]jffs2 [/size][size=10.5pt]-[/size][size=10.5pt]r [/size][size=10.5pt]/[/size][size=10.5pt]home[/size][size=10.5pt]/[/size][size=10.5pt]tekkamanninja[/size][size=10.5pt]/[/size][size=10.5pt]working[/size][size=10.5pt]/[/size][size=10.5pt]nfs[/size][size=10.5pt]/[/size][size=10.5pt]rootfs [/size][size=10.5pt]-[/size][size=10.5pt]o rootfs[/size][size=10.5pt].[/size][size=10.5pt]jffs2 [/size][size=10.5pt]-[/size][size=10.5pt]e 0x4000 [/size][size=10.5pt]--[/size][size=10.5pt]pad[/size][size=10.5pt]=[/size][size=10.5pt]0x500000 [/size][size=10.5pt]-[/size][size=10.5pt]s 0x200 [/size][size=10.5pt]-[/size][size=10.5pt]n[/size][size=10.5pt][/size]
[/td][/tr][/table]
[size=10.5pt][/size]
[size=10.5pt][font=宋体]各参数的意义:[/font][/size][size=10.5pt][/size]
[size=10.5pt](1)-r [font=宋体]: 指定要做成image的源資料夾.[/font][/size]
[size=10.5pt](2)-o : [font=宋体]指定輸出image檔案的文件名.[/font][/size]
[size=10.5pt](3)-e : [font=宋体]每一塊要抹除的block size,預設是64KB.[/font][/size][size=10.5pt][font=宋体]要注意,不同的flash, 其block size會不一樣.我的是三星的K9F1208U0B.[/font][/size]
[size=10.5pt](4)--pad [font=宋体](-p): 用16進制來表示所要輸出檔案的大小,也就是root.jffs2的size。很重要的是, 為了不浪費flash空間, 這個值最好符合flash driver所規劃的區塊大小.以我的板子來說,就是5MB.[/font][/size]
[size=10.5pt](5)[font=宋体]如果挂载后会出现类似:CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0  的警告,则加上 -n 就会消失。[/font][/size]
[size=10.5pt](6) [font=宋体]还有的选项,自己看帮助!-h[/font][/size][size=10.5pt][/size]

[size=10.5pt][/size]
[size=14pt][font=宋体]三、烧写JFFS2镜像到NAND FLASH。[/font][/size][size=10.5pt][/size]
[size=10pt][font=宋体]将 rootfs.jffs2拷贝到NFS共享目录,然后启动开发板。具体操作看我的开发板信息就好了:[/font][/size][size=10pt][/size]
[table][tr][td=1,1,568][size=10.5pt]U[/size][size=10.5pt]-[/size][size=10.5pt]Boot 1[/size][size=10.5pt].[/size][size=10.5pt]3[/size][size=10.5pt].[/size][size=10.5pt]1 [/size][size=10.5pt]([/size][size=10.5pt]Feb 7 2008 [/size][size=10.5pt]-[/size][size=10.5pt] 16[/size][size=10.5pt]:[/size][size=10.5pt]41[/size][size=10.5pt]:[/size][size=10.5pt]05[/size][size=10.5pt])[/size]

[size=10.5pt]DRAM[/size][size=10.5pt]:[/size][size=10.5pt] 64 MB[/size]
[size=10.5pt]Flash[/size][size=10.5pt]:[/size][size=10.5pt] 1 MB[/size]
[size=10.5pt]NAND[/size][size=10.5pt]:[/size][size=10.5pt] NAND flash probing at 0x4E000000[/size]
[size=10.5pt]  64 MB[/size]
[size=10.5pt]In[/size][size=10.5pt]:[/size][size=10.5pt] serial[/size]
[size=10.5pt]Out[/size][size=10.5pt]:[/size][size=10.5pt] serial[/size]
[size=10.5pt]Err[/size][size=10.5pt]:[/size][size=10.5pt] serial[/size]
[size=10.5pt]Hit any key to stop autoboot[/size][size=10.5pt]:[/size][size=10.5pt] 0[/size]

[size=10.5pt][[/size][size=10.5pt]Tekkaman2440[/size][size=10.5pt]]#[/size][size=10.5pt]nfs 0x30008000 192[/size][size=10.5pt].[/size][size=10.5pt]168[/size][size=10.5pt].[/size][size=10.5pt]1[/size][size=10.5pt].[/size][size=10.5pt]22[/size][size=10.5pt]:/[/size][size=10.5pt]home/tekkamanninja/working/nfs/rootfs[/size][size=10.5pt].[/size][size=10.5pt]jffs2[/size]
[size=10.5pt]dm9000 i/o[/size][size=10.5pt]:[/size][size=10.5pt] 0x20000300[/size][size=10.5pt],[/size][size=10.5pt] id[/size][size=10.5pt]:[/size][size=10.5pt] 0x90000a46[/size]
[size=10.5pt]MAC[/size][size=10.5pt]:[/size][size=10.5pt] 08[/size][size=10.5pt]:[/size][size=10.5pt]08[/size][size=10.5pt]:[/size][size=10.5pt]08[/size][size=10.5pt]:[/size][size=10.5pt]08[/size][size=10.5pt]:[/size][size=10.5pt]12[/size][size=10.5pt]:[/size][size=10.5pt]27[/size]
[size=10.5pt]operating at 100M full duplex mode[/size]
[size=10.5pt]File transfer via NFS from server 192[/size][size=10.5pt].[/size][size=10.5pt]168[/size][size=10.5pt].[/size][size=10.5pt]1[/size][size=10.5pt].[/size][size=10.5pt]22[/size][size=10.5pt];[/size][size=10.5pt] our [/size][size=10.5pt]IP[/size][size=10.5pt] address is 192[/size][size=10.5pt].[/size][size=10.5pt]168[/size][size=10.5pt].[/size][size=10.5pt]1[/size][size=10.5pt].[/size][size=10.5pt]2[/size]
[size=10.5pt]Filename [/size][size=10.5pt]'/home/tekkamanninja/working/nfs/rootfs.jffs2'[/size][size=10.5pt].[/size]
[size=10.5pt]Load address[/size][size=10.5pt]:[/size][size=10.5pt] 0x30008000[/size]
[size=10.5pt]Loading[/size][size=10.5pt]:[/size][size=10.5pt] #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         ##################################################[/size]
[size=10.5pt]done[/size]
[size=10.5pt]Bytes transferred [/size][size=10.5pt]=[/size][size=10.5pt] 5242880 [/size][size=10.5pt]([/size][size=10.5pt]500000 hex[/size][size=10.5pt])[/size]
[size=10.5pt][[/size][size=10.5pt]Tekkaman2440[/size][size=10.5pt]]#[/size][size=10.5pt]nand erase 0xa00000 0x500000[/size]
[size=10.5pt]NAND erase[/size][size=10.5pt]:[/size][size=10.5pt] device 0 offset 10485760[/size][size=10.5pt],[/size]
[size=10.5pt]size[/size][size=10.5pt] 5242880 [/size][size=10.5pt]...[/size]
[size=10.5pt]OK[/size]
[size=10.5pt][[/size][size=10.5pt]Tekkaman2440[/size][size=10.5pt]]#[/size][size=10.5pt]nand write 0x30008000 0xa00000 0x500000[/size]

[size=10.5pt]NAND write[/size][size=10.5pt]:[/size][size=10.5pt] device 0 offset 10485760[/size][size=10.5pt],[/size]
[size=10.5pt]size[/size][size=10.5pt] 5242880 [/size][size=10.5pt]...[/size]
[size=10.5pt]5242880 bytes written[/size][size=10.5pt]:[/size][size=10.5pt] OK[/size]
[size=10.5pt][[/size][size=10.5pt]Tekkaman2440[/size][size=10.5pt]]#[/size][size=10.5pt]setenv bootargs noinitrd root[/size][size=10.5pt]=/[/size][size=10.5pt]dev/mtdblock4 rootfstype[/size][size=10.5pt]=[/size][size=10.5pt]jffs2 rw console[/size][size=10.5pt]=[/size][size=10.5pt]ttySAC0[/size][size=10.5pt],[/size][size=10.5pt]115200 init[/size][size=10.5pt]=/[/size][size=10.5pt][color=#0000ff]Linux[/color][/size]rc mem[size=10.5pt]=[/size][size=10.5pt]64M[/size][size=10.5pt][[/size][size=10.5pt]Tekkaman2440[/size][size=10.5pt]]#[/size][size=10.5pt]boot[/size][size=10.5pt]dm9000 i/o[/size][size=10.5pt]:[/size][size=10.5pt] 0x20000300[/size][size=10.5pt],[/size][size=10.5pt] id[/size][size=10.5pt]:[/size][size=10.5pt] 0x90000a46[/size]
[size=10.5pt]MAC[/size][size=10.5pt]:[/size][size=10.5pt] 08[/size][size=10.5pt]:[/size][size=10.5pt]08[/size][size=10.5pt]:[/size][size=10.5pt]08[/size][size=10.5pt]:[/size][size=10.5pt]08[/size][size=10.5pt]:[/size][size=10.5pt]12[/size][size=10.5pt]:[/size][size=10.5pt]27[/size]
[size=10.5pt]operating at 100M full duplex mode[/size]
[size=10.5pt]File transfer via NFS from server 192[/size][size=10.5pt].[/size][size=10.5pt]168[/size][size=10.5pt].[/size][size=10.5pt]1[/size][size=10.5pt].[/size][size=10.5pt]22[/size][size=10.5pt];[/size][size=10.5pt] our [/size][size=10.5pt]IP[/size][size=10.5pt] address is 192[/size][size=10.5pt].[/size][size=10.5pt]168[/size][size=10.5pt].[/size][size=10.5pt]1[/size][size=10.5pt].[/size][size=10.5pt]2[/size]
[size=10.5pt]Filename [/size][size=10.5pt]'/home/tekkamanninja/working/nfs/zImage.img'[/size][size=10.5pt].[/size]
[size=10.5pt]Load address[/size][size=10.5pt]:[/size][size=10.5pt] 0x30008000[/size]
[size=10.5pt]Loading[/size][size=10.5pt]:[/size][size=10.5pt] #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #################################################################[/size]
[size=10.5pt]         #####################################################[/size]
[size=10.5pt]done[/size]
[size=10.5pt]Bytes transferred [/size][size=10.5pt]=[/size][size=10.5pt] 1600564 [/size][size=10.5pt]([/size][size=10.5pt]186c34 hex[/size][size=10.5pt])[/size]
[size=10.5pt]## Booting image at 30008000 [/size][size=10.5pt]...[/size]
[size=10.5pt]   Image [/size][size=10.5pt]Name[/size][size=10.5pt]:[/size][size=10.5pt] tekkamanninja[/size]
[size=10.5pt]   Created[/size][size=10.5pt]:[/size][size=10.5pt] 2008[/size][size=10.5pt]-[/size][size=10.5pt]02[/size][size=10.5pt]-[/size][size=10.5pt]15 2[/size][size=10.5pt]:[/size][size=10.5pt]16[/size][size=10.5pt]:[/size][size=10.5pt]28 UTC[/size]
[size=10.5pt]   Image [/size][size=10.5pt]Type[/size][size=10.5pt]:[/size]
[size=10.5pt][color=#0000ff]ARM[/color][/size] [size=10.5pt][color=#0000ff]Linux[/color][/size] Kernel Image [size=10.5pt]([/size][size=10.5pt]uncompressed[/size][size=10.5pt])[/size]
[size=10.5pt]   Data [/size][size=10.5pt]Size[/size][size=10.5pt]:[/size][size=10.5pt] 1600500 Bytes [/size][size=10.5pt]=[/size][size=10.5pt] 1[/size][size=10.5pt].[/size][size=10.5pt]5 MB[/size]
[size=10.5pt]   Load Address[/size][size=10.5pt]:[/size][size=10.5pt] 30008000[/size]
[size=10.5pt]   Entry Point[/size][size=10.5pt]:[/size][size=10.5pt] 30008040[/size]
[size=10.5pt]   Verifying Checksum [/size][size=10.5pt]...[/size][size=10.5pt] OK[/size]
[size=10.5pt]   XIP Kernel Image [/size][size=10.5pt]...[/size][size=10.5pt] OK[/size]

[size=10.5pt]Starting kernel [/size][size=10.5pt]...[/size]

[size=10.5pt]Uncompressing [/size][size=10.5pt][color=#0000ff]Linux[/color][/size]........................................................................................................[size=10.5pt] done[/size][size=10.5pt],[/size][size=10.5pt] booting the kernel[/size][size=10.5pt].[/size]
[size=10.5pt][color=#0000ff]Linux[/color][/size] version 2[size=10.5pt].[/size][size=10.5pt]6[/size][size=10.5pt].[/size][size=10.5pt]24 [/size][size=10.5pt]([/size][size=10.5pt]tekkamanninja@Tekkaman[/size][size=10.5pt]-[/size][size=10.5pt]Ninja[/size][size=10.5pt])[/size]
[size=10.5pt]([/size][size=10.5pt]gcc version 4[/size][size=10.5pt].[/size][size=10.5pt]1[/size][size=10.5pt].[/size][size=10.5pt]1[/size][size=10.5pt])[/size][size=10.5pt] #1 Fri Feb 15 10[/size][size=10.5pt]:[/size][size=10.5pt]15[/size][size=10.5pt]:[/size][size=10.5pt]36 CST 2008[/size]
[size=10.5pt]CPU[/size][size=10.5pt]:[/size]
[size=10.5pt][color=#0000ff]ARM[/color][/size]920T [size=10.5pt][[/size][size=10.5pt]41129200[/size][size=10.5pt]][/size][size=10.5pt] revision 0 [/size][size=10.5pt]([/size][size=10.5pt][color=#0000ff]ARM[/color][/size]v4T[size=10.5pt]),[/size][size=10.5pt] cr[/size][size=10.5pt]=[/size][size=10.5pt]c0007177[/size]
[size=10.5pt]Machine[/size][size=10.5pt]:[/size][size=10.5pt] Tekkaman2440[/size]
[size=10.5pt]Memory policy[/size][size=10.5pt]:[/size][size=10.5pt] ECC disabled[/size][size=10.5pt],[/size][size=10.5pt] Data cache writeback[/size]
[size=10.5pt]CPU S3C2440A [/size][size=10.5pt]([/size][size=10.5pt]id 0x32440001[/size][size=10.5pt])[/size]
[size=10.5pt]S3C244X[/size][size=10.5pt]:[/size][size=10.5pt] core 405[/size][size=10.5pt].[/size][size=10.5pt]000 MHz[/size][size=10.5pt],[/size][size=10.5pt] memory 101[/size][size=10.5pt].[/size][size=10.5pt]250 MHz[/size][size=10.5pt],[/size][size=10.5pt] peripheral 50[/size][size=10.5pt].[/size][size=10.5pt]625 MHz[/size]
[size=10.5pt]S3C24XX Clocks[/size][size=10.5pt],[/size]
[size=10.5pt]([/size][size=10.5pt]c[/size][size=10.5pt])[/size][size=10.5pt] 2004 Simtec Electronics[/size]
[size=10.5pt]CLOCK[/size][size=10.5pt]:[/size][size=10.5pt] Slow mode [/size][size=10.5pt]([/size][size=10.5pt]1[/size][size=10.5pt].[/size][size=10.5pt]500 MHz[/size][size=10.5pt]),[/size][size=10.5pt] fast[/size][size=10.5pt],[/size][size=10.5pt] MPLL on[/size][size=10.5pt],[/size][size=10.5pt] UPLL on[/size]
[size=10.5pt]CPU0[/size][size=10.5pt]:[/size][size=10.5pt] D VIVT write[/size][size=10.5pt]-[/size][size=10.5pt]back cache[/size]
[size=10.5pt]CPU0[/size][size=10.5pt]:[/size][size=10.5pt] I cache[/size][size=10.5pt]:[/size][size=10.5pt] 16384 bytes[/size][size=10.5pt],[/size][size=10.5pt] associativity 64[/size][size=10.5pt],[/size][size=10.5pt] 3[/size]
页: [1]
查看完整版本: 在嵌入式Linux系统中挂载 jffs2 根文件系统
Baidu