声明1:你所需要的软件在这里可以下载的到!
声明2.app2sd虽然可以省却手机内存,但是也有许多不便的地方!操作后SDcard就是机子的一部分,不能随便摘取.我用的4G的卡,在机子挂在后存储有问题!不知道其他卡如何.所以在存储文件和音乐的时候还是需要用到读卡器,而这个时候我必须选择关机!直接卸载SDcard会造成机子程序出错!而不得不从新执行一遍app2sd的过程!并且执行过后也会存在一些不可知的问题!如果对稳定性比较看重的人这里可以飘过了!
声明3.我的sdcard已经在手机内通过!懒得再刷,所以没有用我的card抓图!本教程图片多为网上现成图片来完成!而图片不是一个地方抓取的!所以图片上的容量会有差距.但是刷机过程没有错
从新格盘,正好用自己的图!顺便说一下,ubuntu下的默认抓图真恶心!每抓一张都要从新启动一次程序!
所需要的准备的工作:
1.SDcard(必须)
2.分区软件(必须,windows下可以使用Acronis Disk Director Suite,支持vista.linux下可以直接利用终端分区!)
3.Android SDK(非必须,可以再网上下载Terminal Emulator.apk,安装后在手机上输入adb下的指令完成操作!)
首先我们要将SDcard分区,分成fat32和ext2,至于ext3是否可行我没有测试过,有兴趣的可以试试并且留言告诉我测试报告!
我选择的是在ubuntu的终端执行,这样操作比较靠谱.而在windows下的分区软件不是很稳定!会造成诸多不可见的错误!
windows下的分区软件有Acronis Disk Director Suite以及PartitionManager,至于分区魔术师可以略过,因为它不支持分区SDcard.Acronis Disk Director Suite软件分区可以移步到此查看!
以USB内存卡方式插上电脑,或者用读卡器插上电脑
像我的ubuntu,它会自动挂载你的卡。
把东西备份好,然后卸载。一定要卸载,不然无法分区

启动ubuntu或者您的linux系统,在终端内输入如下代码:
dmesg //查看所连接的设备!

可以看到sdb或者sdc之类的设备名称!假设我以下操作都为sdc设备!
sudo fdisk /dev/sdc //这里需要说明,如果linux下非root,必须要输入sudo来取得root权限进行操作.以下类同!
p是显示当前分区
n是创建
d是删除
w是应用你的操作
doo@ubuntu:~# sudo fdisk /dev/sdc
Command (m for help): d < ==删除当前分区
Command (m for help): p <==显示一下,确定已删除
Disk /dev/sdc: 3965 MB, 3965714432 bytes
122 heads, 62 sectors/track, 1024 cylinders
Units = cylinders of 7564 * 512 = 3872768 bytes
Disk identifier: 0x9dfd42a5
Device Boot Start End Blocks Id System
Command (m for help):

Command (m for help): m < ==查看帮助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n <==新建分区,选择主分区
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1 <==指定该主分区为1号
First cylinder (1-1024, default 1): <==敲回车,直接使用SD卡的最开头
Using default value 1
Last cylinder or +cylinders or +sizeK(K,M,G) (1-1024, default 1024): +3300M <==填入分区的大小
Command (m for help): n <==新建分区,选择扩展分区(所有逻辑分区加起来就是扩展分区)
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2 <==扩展分区的序号是2
First cylinder (895-1024, default 895): <==敲回车,直接接着剩余空间的最开头
Using default value 895
Last cylinder or +cylinders or +sizeK(K,M,G) (895-1024, default 1024): <==敲回车,用默认的,使用全部剩余空间
Using default value 1024
Command (m for help):

Command (m for help):p
Disk /dev/sdc: 3965 MB, 3965714432 bytes
122 heads, 62 sectors/track, 1024 cylinders
Units = cylinders of 7564 * 512 = 3872768 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 894 733792+ 83 Linux
/dev/sdc2 729 1024 272128+ 83 Linux
创建好两个分区后, 我们还需要用命令t修改分区卷标, 选择分区1改卷标为c
命令为
Command (m for help):t t < ==修改卷标
partition number (1-4): 1 <==输入1来制定第一个分区.
Hex code (type L to List codes): c <==输入C来制定卷标
Changed system type of partition 1 to c (W95 FAT32 (LBA))
Command (m for help): w <==将缓冲写入SD卡,应用你的操作
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.X
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
doo@ubuntu:~#

doo@ubuntu:~# sudo ls /dev/sdc* < ==查看分区情况
/dev/sdc /dev/sdc1 /dev/sdc2
doo@ubuntu:~#sudo mkfs.vfat /dev/sdc1 <==格式化第一个主分区。
mkfs.vfat 3.0.1 (23 Nov 2008)
doo@ubuntu:~# sudo mkfs.ext2 /dev/sdc2 <==格式化第二个分区
mke2fs 1.41.4 (27-Jan-2009)
warning: 139 blocks unused
Filesystem laber=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
123360 inodes, 491521 blocks
24583 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesyetem blocks=67633152
68 block groups
8192 blocks per group, 8192 fragments per group
2856 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or 180 days.whichever comes first. Use tune2fs -c or -i to override.
doo@ubuntu:-$

分区完毕后ubuntu会自动挂在两个盘符.表示成功!

然后需要手机必须为app2sd版本的rom,在windows 命令提示符下输入命令查看:
以下步骤必须安装android sdk.(其实一下步骤不一定需要在windows cmd下进行,在网上下载一个android的终端Terminal Emulator.apk,然后启动此程序在手机内输入以下指令是一样的!只是在sdcard的系统盘下建立app文件夹并挂载到android rom上! )
C:\Documents and Settings\doo>cd c:\sdk\tools < ==cd到sdk adb.exe
C:\sdk\tools>adb devices < ==查看连接的硬件和设备
List of devices attached
000000000000 device <==分区过硬盘以后连接会显示000000000000 的硬件号
C:\sdk\tools>adb shell
# su < ==如果你还没有取得root权限,那么这一步通不过.
su
# ls /system <==查看一下system目录下的文件夹
ls /system
lib
framework
media
fonts
etc
customize
build.prop
usr
bin
xbin
app
sd
lost+found

# busybox df -h < ==查看系统盘情况!如果分区成功,那么会在android的系统下显示分区.如下我的385.8M的分区在android的系统内!再往下是sdcard的系统!如果没有那表示分区失败.当然还有一种可能就是你的手机不是app2sd rom
busybox df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 48.3M 0 48.3M 0% /dev
tmpfs 4.0M 12.0k 4.0M 0% /sqlite_stmt_journals
/dev/block/mtdblock3 67.5M 67.5M 0 100% /system
/dev/block/mtdblock5 74.8M 30.4M 44.3M 41% /data
/dev/block/mtdblock4 67.5M 1.2M 66.3M 2% /cache
/dev/block/mmcblk0p2 385.8M 2.0k 366.5M 0% /system/sd < ==由于在ubuntu下分区后手机内读取sdcard出错,所以后便又分了一次!但是没有抓图,所以容量上和上图有差距.再者本身linux和windows读取SDcard的容量上就有不同!
/dev/block//vold/179:1
3.3G 4.0k 3.3G 0% /sdcard
# mkdir /system/sd/app <==建立sdcard分区上的app文件夹!如果以前sdcard曾做过app2sd,那么这个文件夹是存在的!会有命令符提示文件夹存在!
mkdir /system/sd/app
# cd /data
cd /data
# cp -a app /system/sd/app
cp -a app /system/sd/app
# rm -r app
rm -r app
# ln -s /system/sd/app /data/app
ln -s /system/sd/app /data/app
# reboot
reboot

手机自动重启后就OK了.放心安装你所想要的apk程序吧!
顺便说一句:ubuntu的9.04快要放出正式版了!欢迎大家下载试用.