您的位置:首页 > 运维架构 > Linux

嵌入式linux的flash分区

2015-03-12 15:26 120 查看
这两天玩了下开发板,装了个android系统,2.3.3的系统。

但是装软件只能装到文件系统,所谓的内部空间中,但这板子的File System仅有120M,装完系统就用去了90M,省下的空间装不了几个软件就没空间了,于是研究怎么扩大的办法。

先尝试在sd卡上建了个文件夹,删除了/data/app并将app以符号链接方式指向/sdcard/app,但似乎因权限什么的问题没搞定

在启动记录中看到了

S3C NAND Driver is using hardware ECC.

NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V 8-bit)

Creating 4 MTD partitions on "NAND 2GiB 3,3V 8-bit":

0x000000000000-0x000000100000 : "Bootloader"

0x000000100000-0x000000600000 : "Kernel"

0x000000600000-0x000007e00000 : "User"

0x000007e00000-0x000080000000 : "File System"

的字样,开始还以为这是boot中指定的,在boot代码中搜啊搜的就是搜不到。

看了看上下文,这都已经是内核在启动了,肯定是内核中指定的。上述的user就是6M-126M,即120M的空间。而File System的大小则是余下的近2G的空间了,

busybox df看了下,其实这第三块并没有挂载上。按我的理解,User跟File System实际该换一下名字,

其对应的设备分别为

/dev/block/mtdblock0-->BootLoader

/dev/block/mtdblock1-->Kernel

/dev/block/mtdblock2-->File System

/dev/block/mtdblock3-->Unused

其大小定义见Mach-smdk6410.c

/*

* Configuring Nandflash on SMDK6410

*/

struct mtd_partition ok6410_nand_part[] = {

{

.name = "Bootloader",

.offset = 0,

.size = (1 * SZ_1M),

.mask_flags = MTD_CAP_NANDFLASH,

},

{

.name = "Kernel",

.offset = (1 * SZ_1M),

.size = (5*SZ_1M) ,

.mask_flags = MTD_CAP_NANDFLASH,

},

{

.name = "User",

.offset = (6 * SZ_1M),

.size = (120*SZ_1M) ,

},

{

.name = "File System",

.offset = MTDPART_OFS_APPEND,

.size = MTDPART_SIZ_FULL,

}

};

试着修改了block2的大小为1500*SZ_1M。然后编译并usb线更新了内核,启动成功!!!

Uncompressing Linux... done, booting the kernel.

Linux version 2.6.36ZhuJinhua (root@linux-zjh) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #461 PREEMPT Tue May 17 22:29:30 CST 2011



Kernel command line: root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc nconsole=tty1 console=ttySAC0,115200

PID hash table entries: 1024 (order: 0, 4096 bytes)

Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)

Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)

Memory: 256MB = 256MB total

Memory: 232880k/232880k available, 29264k reserved, 0K highmem

Virtual kernel memory layout:

vector : 0xffff0000 - 0xffff1000 ( 4 kB)

fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)

DMA : 0xff600000 - 0xffe00000 ( 8 MB)

vmalloc : 0xd0800000 - 0xe0000000 ( 248 MB)

lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)

pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)

modules : 0xbf000000 - 0xbfe00000 ( 14 MB)

.init : 0xc0008000 - 0xc0032000 ( 168 kB)

.text : 0xc0032000 - 0xc06ff000 (6964 kB)

.data : 0xc0728000 - 0xc0775760 ( 310 kB)

SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1



Creating 4 MTD partitions on "NAND 2GiB 3,3V 8-bit":

0x000000000000-0x000000100000 : "Bootloader"

0x000000100000-0x000000600000 : "Kernel"

0x000000600000-0x00005e200000 : "User" //这里已经变味了6M到1506M了

0x00005e200000-0x000080000000 : "File System"

PPP generic driver version 2.4.2

查看

/ # df

Filesystem Size Used Free Blksize

/ 1G 112M 1G 4096

/ 1G 112M 1G 4096

/dev 113M 44K 113M 4096

/dev 113M 44K 113M 4096

/mnt/asec 113M 0K 113M 4096

/mnt/obb 113M 0K 113M 4096

/var 2M 0K 2M 4096

只有1G? 怀疑不能超过1G,但实验时却是挂成功过原来的block3,近2G呢

使用busybox df 看到了

/ # busybox df

Filesystem 1K-blocks Used Available UseMounted on

/dev/root 1536000 115052 1420948 7/

devtmpfs 116524 44 116480 0/dev

tmpfs 116524 44 116480 0/dev

tmpfs 116524 0 116524 0/mnt/asec

tmpfs 116524 0 116524 0/mnt/obb

tmpfs 2048 0 2048 0/var

/dev/block/vold/179:1 2701624 168260 2533364 6/mnt/sdcard

/dev/block/vold/179:1 2701624 168260 2533364 6/mnt/secure/asec

后续再研究:

【1】内存

【2】启动过程



另外这/mnt/secure/asec是啥,咋跟sdcard一样呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: