您当前的位置:首页 > 计算机 > 精彩资源

android的系统存储与软件安装

时间:08-16来源:作者:点击数:

S i.MX51制作启动SD卡及下载镜像

一、SD卡分区

1.1、分区要求

SD卡分区结构及镜像地址分配如下图

SD卡创建分区表如下表

Partition Type/Index Device Node File System Content
Primary 1 /dev/sdb1 VFAT. Mount as /sdcards Media file storage
Primary 2 /dev/sdb2 EXT3. Mount as /system Android system bin/libs
Extended 3 /dev/sdb3 N/A. Extended partition N/A
Logic partition in Extended /dev/sdb5 EXT3. Mount as /data Android data (e.g. installed app)
Logic partition in Extended /dev/sdb6 EXT3. Mount as /cache Android cache
Primary 4 /dev/sdb4 EXT3. Mount as / in recovery mode Root file system for recovery mode

1.2、SD卡分区操作

将一张新的SD卡装入USB读卡器插入装有linux操作系统的PC(以下为VMware安装了ubuntu 9.10的操作记录),打开一个终端窗口,操作如下所述(注:红色字体为输入信息

nfs@ubuntu:~$sudoumount /dev/sdb1//取消SD卡挂载

nfs@ubuntu:~$sudo fdisk /dev/sdb//使用fdisk工具对SD卡分区操作

Command (m for help):p//列出SD卡分区信息

Disk /dev/sdb: 1015 MB, 1015808000 bytes

255 heads, 63 sectors/track, 123 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes//每个cylinder(磁柱)的容量是8.225280M

Disk identifier: 0x6f20736b

Device Boot Start End BlocksId System

/dev/sdb1 1 123 987966b W95 FAT32

Command (m for help):d//删除现在的分区

Selected partition 1

Command (m for help):p//查看是否删除成功

Disk /dev/sdb: 1015 MB, 1015808000 bytes

255 heads, 63 sectors/track, 123 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Disk identifier: 0x6f20736b

Device Boot Start End BlocksId System

Command (m for help):n//新建一个分区

Command action

e extended

p primary partition (1-4)

p//选择主分区

Partition number (1-4):1//序号为1

First cylinder (1-123, default 1):2//该分区开始的cylinder编号为2(不是1,因为要给uboot和kernel留足空间)

Last cylinder, +cylinders or +size{K,M,G}(2-123, default 123):+500M//该分区容量为500M(修改大一点,视SD卡的容量而定)

Command (m for help):p//查看新建分区是否成功

Disk /dev/sdb: 1015 MB, 1015808000 bytes

255 heads, 63 sectors/track, 123 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Disk identifier: 0x6f20736b

Device Boot Start End BlocksId System

/dev/sdb1 2 66 522112+83 Linux

Command (m for help):n//新建一个分区

Command action

e extended

p primary partition (1-4)

p//选择主分区

Partition number (1-4):2//序号为2

First cylinder (1-123, default 1):67//该分区开始的cylinder编号为67(紧跟第一个分区,以免造成磁盘空间浪费)

Last cylinder, +cylinders or +size{K,M,G}(67-123, default 123):+128M//该分区容量为128M

Command (m for help):p//查看新建分区是否成功

Disk /dev/sdb: 1015 MB, 1015808000 bytes

255 heads, 63 sectors/track, 123 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Disk identifier: 0x6f20736b

Device Boot Start End BlocksId System

/dev/sdb1 2 66 522112+83 Linux

/dev/sdb2 67 83 136552+83 Linux

Command (m for help):n//新建一个分区

Command action

e extended

p primary partition (1-4)

e//选择扩展分区(主分区最多只能有4个,这里需要5个分区,所以需要使用扩展分区)

Partition number (1-4):3//序号为3

First cylinder (1-123, default 1):84//该分区开始的cylinder编号为84

Last cylinder, +cylinders or +size{K,M,G}(84-123, default 123):+256M//该分区容量为256M

Command (m for help):p//查看新建分区是否成功

Disk /dev/sdb: 1015 MB, 1015808000 bytes

255 heads, 63 sectors/track, 123 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Disk identifier: 0x6f20736b

Device Boot Start End BlocksId System

/dev/sdb1 2 66 522112+83 Linux

/dev/sdb2 67 83 136552+83 Linux

/dev/sdb3 84117 273105 5Extended

Command (m for help):n//新建一个分区

Command action

l logical (5 or over)

p primary partition (1-4)

p//选择主分区

Selected partition4

First cylinder (1-123, default 1):118//该分区开始的cylinder编号为118

Last cylinder, +cylinders or +size{K,M,G}(118-123, default 123)://直接回车,使用默认值,到磁盘最后端

Using default value 123

Command (m for help):n//新建一个分区(主分区已使用完,这里自动为新建逻辑分区)

First cylinder (84-117, default 84)://直接回车,使用默认值,扩展分区的开始

Using default value 84

Last cylinder, +cylinders or +size{K,M,G}(84-117, default 117):+128M//该分区容量为128M

Command (m for help):n//新建一个分区

First cylinder (101-117, default 101)://直接回车,使用默认值,剩余空间开始处

Using default value 101

Last cylinder, +cylinders or +size{K,M,G}(101-117, default 117)://直接回车,使用默认值,剩余扩展分区容量

Using default value 117

Command (m for help):p//查看分区情况

Disk /dev/sdb: 1015 MB, 1015808000 bytes

255 heads, 63 sectors/track, 123 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Disk identifier: 0x6f20736b

Device Boot Start End BlocksId System

/dev/sdb1 266 522112+ 83Linux

/dev/sdb2 67 83 136552+83 Linux

/dev/sdb3 84 117 2731055 Extended

/dev/sdb4 118 123 4819583 Linux

/dev/sdb5 84 100 13652183 Linux

/dev/sdb6 101 117 13652183 Linux

Command (m for help):t//改变分区文件系统类型

Partition number (1-6):1//选择分区编号1

Hex code (type L to list codes):b//b为FAT32类型

Changed system type of partition 1 to b(W95 FAT32)

Command (m for help):p//查看分区情况

Disk /dev/sdb: 1015 MB, 1015808000 bytes

255 heads, 63 sectors/track, 123 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Disk identifier: 0x6f20736b

Device Boot Start End BlocksId System

/dev/sdb1 2 66 522112+b W95 FAT32

/dev/sdb2 67 83 136552+83 Linux

/dev/sdb3 84 117 2731055 Extended

/dev/sdb4 118 123 4819583 Linux

/dev/sdb5 84 100 13652183 Linux

/dev/sdb6 101 117 13652183 Linux

Command (m for help):w//分区完成,保存并退出

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modifiedany DOS 6.x

partitions, please see the fdisk manualpage for additional

information.

Syncing disks.

nfs@ubuntu:~$sudomkfs.vfat /dev/sdb1//格式化分区

mkfs.vfat 3.0.3 (18 May 2009)

nfs@ubuntu:~$sudomkfs.ext3 /dev/sdb2//格式化分区

mke2fs 1.41.9 (22-Aug-2009)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

34272 inodes, 136552 blocks

6827 blocks (5.00%) reserved for the superuser

First data block=1

Maximum filesystem blocks=67371008

17 block groups

8192 blocks per group, 8192 fragments pergroup

2016 inodes per group

Superblock backups stored on blocks:

8193,24577, 40961, 57345, 73729

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystemaccounting information: done

This filesystem will be automaticallychecked every 30 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

nfs@ubuntu:~$sudomkfs.ext3 /dev/sdb4//格式化分区

mke2fs 1.41.9 (22-Aug-2009)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

12048 inodes, 48192 blocks

2409 blocks (5.00%) reserved for the superuser

First data block=1

Maximum filesystem blocks=49545216

6 block groups

8192 blocks per group, 8192 fragments pergroup

2008 inodes per group

Superblock backups stored on blocks:

8193,24577, 40961

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystemaccounting information: done

This filesystem will be automaticallychecked every 22 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

nfs@ubuntu:~$sudomkfs.ext3 /dev/sdb5//格式化分区

mke2fs 1.41.9 (22-Aug-2009)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

34136 inodes, 136520 blocks

6826 blocks (5.00%) reserved for the superuser

First data block=1

Maximum filesystem blocks=67371008

17 block groups

8192 blocks per group, 8192 fragments pergroup

2008 inodes per group

Superblock backups stored on blocks:

8193,24577, 40961, 57345, 73729

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystemaccounting information: done

This filesystem will be automaticallychecked every 31 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

nfs@ubuntu:~$sudomkfs.ext3 /dev/sdb6//格式化分区

mke2fs 1.41.9 (22-Aug-2009)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

34136 inodes, 136520 blocks

6826 blocks (5.00%) reserved for the superuser

First data block=1

Maximum filesystem blocks=67371008

17 block groups

8192 blocks per group, 8192 fragments pergroup

2008 inodes per group

Superblock backups stored on blocks:

8193,24577, 40961, 57345, 73729

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystemaccounting information: done

This filesystem will be automaticallychecked every 26 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

nfs@ubuntu:~$

分区完成

二、下载镜像

将我们所用到的镜像文件全部放在同一个目录下(这里以test为例),将做好分区的SD卡插入PC,以下为下载镜像操作

nfs@ubuntu:~$cd/home/nfs/test/

nfs@ubuntu:~/test$sudo dd if=u-boot-no-padding.bin of=/dev/sdb bs=1K seek=1//下载uboot

154+1 records in

154+1 records out

158652 bytes (159 kB) copied, 0.283056 s,560 kB/s

nfs@ubuntu:~/test$sudo sync

nfs@ubuntu:~/test$sudodd if=uImage of=/dev/sdb bs=1M seek=1

2+1 records in

2+1 records out

2520588 bytes (2.5 MB) copied, 0.8403 s,3.0 MB/s

nfs@ubuntu:~/test$sudosync

nfs@ubuntu:~/test$sudodd if=uramdisk.img of=/dev/sdb bs=4M seek=1

0+1 records in

0+1 records out

213111 bytes (213 kB) copied, 0.16925 s,1.3 MB/s

nfs@ubuntu:~/test$sudosync

nfs@ubuntu:~/test$sudodd if=system.img of=/dev/sdb2

207128+0 records in

207128+0 records out

106049536 bytes (106 MB) copied, 25.4979 s,4.2 MB/s

nfs@ubuntu:~/test$sudo sync

nfs@ubuntu:~/test$sudo dd if=recovery.img of=/dev/sdb4

9200+0 records in

9200+0 records out

4710400 bytes (4.7 MB) copied, 8.25522 s,571 kB/s

nfs@ubuntu:~/test$sudosync

nfs@ubuntu:~/test$

三、设置U-Boot变量

将下载了镜像文件的SD卡插入i.MX51 EVK ,设置拨码开关为SD卡启动,连接i.MX51 EVK于PC串口,打开超级终端设置波特率为115200,进入U-Boot命令行后输入以下命令设置启动变量

BBG U-Boot > setenv bootcmd 'runbootcmd_SD1 bootcmd_SD2'

BBG U-Boot > setenv bootcmd_SD1 'runbootargs_base bootargs_android bootargs_SD'

BBG U-Boot > setenv bootcmd_SD2 'mmcread 0 ${loadaddr} 0x800 0x1800;mmc read 0 ${rd_loadaddr} 0x2000 0x258;bootm${loadaddr} ${rd_loadaddr}'

BBG U-Boot > setenv bootargs_base'setenv bootargs console=ttymxc0,115200'

BBG U-Boot > setenv bootargs_SD 'setenvbootargs ${bootargs}'

BBG U-Boot > setenv bootargs_android'setenv bootargs ${bootargs} init=/init androidboot.console=ttymxc0 di1_primarycalibration ip=dhcp'

BBG U-Boot > setenv loadaddr 0x90800000

BBG U-Boot > setenv rd_loadaddr0x90B00000

BBG U-Boot > saveenv

分区要点:

1.各个区的容量,要视情况而定,而不能照搬,例如放多媒体文件的区要越大越好,安装系统文件的区也尽量大一些,以便以后安装软件

2.一个区的编号应该尽量紧挨另一个区的编号

3.以上是1G的卡的分区分配情况,其他卡的分区容量要自己根据实际情况分配好

分区步骤

1.最windows的磁盘管理器进行格式化,和删除分区工作。

2.到Linux下进行分区,并保存

3.格式化

4.烧写镜像

磁盘容量的计算

对应一个磁盘来说:有盘面(side)(也就是磁头数的个数,一个盘面有一个磁头(header)),磁道(track),扇区(sector)组成,相同的磁道数构成一个柱面(clinders),一个扇区有固定的字节组成,一个是512个字节。

联想到磁盘的物理结构可知:

磁盘的容量=512*扇区数*磁道数*盘面数=一个柱面的所含的字节数*柱面个数(也就是磁道数)

等效的关系:柱面的个数=磁道数

盘面数=磁头数

一个柱面所含的字节数=512*扇区数*磁头数

对应我们8G的SD卡,卡的信息参数是

Disk /dev/sdb: 7948 MB, 7948206080 bytes

245 heads, 62 sectors/track, 1021 cylinders

Units = cylinders of 15190 * 512 = 7777280bytes

Disk identifier: 0x00000000

我们的分区情况是

1.预留一个柱面用来存放MRB,uboot和kernel,uramdisk根文件系统。(即7M系统盘,类似于PC机的C盘,但是不对它进行分区,不存在文件系统)

2./dev/sdb1 基本分区用来存放多媒体文件,采用的是发热贴fat32 windows兼容的文件系统,即可以在windows里面进行访问(其他文件系统(ext3)不能再windows访问,他们是Linux特有的文件系统。我们给它分5G

3./dev/sdb2/ 基本分区是Android的系统文件,挂载成/system/目录,用来对存放Android的系统库,和安装.apk格式软件,我们给他分1G+128M=1128M

4./dev/sdb3/ 扩展分区512M

下面的逻辑分区为

/dev/sdb5/ 逻辑分区用来存放已安装的数据,如果应用程序安装过后的数据。挂载成

Mount as /data 挂载成/cache 我们分配256M

/dev/sdb5/逻辑分区 用来做Android缓存的,我们分配256M

5./dev/sdb4/ 基本分区 用来在恢复模式下使用,挂载成Mount as / in recovery mode。我们分配剩下的分区 (即384M,不需要我们手动设置)

四.程序的安装

Android程序的安装有两种方式:

1.拷贝安装法:类似于PC的程序安装法

拷贝安装法又有两种方法

一. 系统安装法,

该方法就像系统附带的程序一样安装,把.apk文件直接放到/system/app/下即可,这样我们安装的程序就跟系统自带的程序放在一起,在开机时自动安装启动。注意该方法一次性只能安装一个程序,多个程序要多次安装。

二. 手动安装法

把APK安装包放在SD卡里,系统启动后进入SD卡(可以通过SD卡浏览器来进入),让后点击该.apk安装版就可以安装该程序,类似于PC机程序的安装方法

2.使用ADB工具在线安装方法

ADB全称Android?Debug?Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机).

它的主要功能有:

  • 运行设备的shell(命令行)
  • 管理模拟器或设备的端口映射
  • 计算机和设备之间上传/下载文件
  • 将本地apk软件安装至模拟器或android设备

ADB是一个 客户端-服务器端?程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.

先说安装方法, 电脑上需要安装客户端. 客户端包含在sdk里. 设备上不需要安装, 只需要在手机上打开选项settings-applications-development-USBdebugging.

对于Mac和Linux用户, 下载好的sdk解压后, 可以放~或者任意目录. 然后修改~/.bash_profile文件,?设置运行环境指向sdk的tools目录.

具体是打开~/.bash_profile文件(如果没有此文件也可以自行添加), 在里面加入一行:

export PATH=${PATH}:<你的sdk目录>/tools

然后就可以使用adb命令了.

嫌安装麻烦的同学其实也可以省去上面安装步骤, 直接输入完整路径来使用命令

对于windows xp用户, 需要先安装usb驱动,然后如果你只打算使用adb而不想下载整个sdk的话, 可以下载这个单独的adb工具包,下载后解压, 把里面 adb.exe 和 AdbWinApi.dll 两个文件放到系统盘的 windows/system32 文件夹里就可以了

ADB常用的几个命令

1. 查看设备

  • adb devices

这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示

2. 安装软件

  • adb install <apk文件路径>

这个命令将指定的apk文件安装到设备上

3.卸载软件

  • adb uninstall <软件名>
  • adb uninstall -k <软件名>

如果加 -k 参数,为卸载软件但是保留配置和缓存文件.

4. 登录设备shell

  • adb shell
  • adb shell <command命令>

这个命令将登录设备的shell.

后面加<command命令>将是直接运行设备命令, 相当于执行远程命令

5. 从电脑上发送文件到设备

  • adb push <本地路径> <远程路径>

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

6. 从设备上下载文件到电脑

  • adb pull <远程路径> <本地路径>

用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

7. 显示帮助信息

  • adb help

这个命令将显示帮助信息

删除Android系统Rom自带的软件

Android系统没有卸载Rom自带软件的功能.可能有些同学很想删除废了武功的Youtube,想删除墙那边的Twitter.

加上Android的快捷方式没法修改没法自己排序没法分页.

安装的程序太多就会发现原来找到自己想要的东西很难.

综上所述,我觉得告知各位菜鸟同学如何删除自带的程序是很有必要的一件事情.

1.确定手机root了,取得了root权限才能删除系统文件呀.

2.下载Android_db.rar,解压到%windir/%System32下.

3.手机连接数据线,在电脑上打开cmd,然后输入命令

adb remount

adb shell

su

执行完成之后,你会看到:

* daemon not running. starting it now *

* daemon started successfully *

4.接着就是Linux命令行模式了,输入

cd system/app

你会发现没啥变化,然后输入ls回车.

这时候列表显示了system/app里面的所有文件,也就是Rom集成的一些软件了.

5.开始删除吧.比如删除Youtube,他的文件名是Youtube.odex和Youtube.apk

我们要删除这2个文件,敲入以下命令:

rm Youtube.*

重启,Youtube已经删除掉了,注意各位同学千万不要删除你不知道是啥的东西.

指定允许AVD的内存大小:

emulator -avd avdName -partition-size 256

启动一个叫avdName的模拟器,允许内存最大为256M

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门