android文件系统空间预留-往内置存储填充,导致手机重启,且一直停在开机界面

首先,使用

 # stat -f /data
stat -f /data
  File: "/data"
    ID: c8ba634573858d55 Namelen: 255    Type: ef53
Block Size: 4096    Fundamental block size: 4096
Blocks: Total: 13626988 Free: 10493326  Available: 10438030

Inodes: Total: 3465216  Free: 3441059

看一下手机data分区空间,发现 free与available大小不一致,说明手机有预留空间,


然后在*.rc文件中搜索/system/bin/tune2fs,发现

exec /system/bin/tune2fs -O has_journal -u 10010 -r 51200 /dev/block/platform/bootdevice/by-name/userdata

这句话,是说明为data分区    且uid < 10010的进程保留 51200个块大小的存储空间,也就是192M


但为什么,明明已经做了限制,为什么还能够往内部存储里面写东西呢,


这里就要搞清楚一个问题,这里做的限制是针对uid < 10010的,如果是应用自己填充,也就是填充到/data/data/XXX下,自然会有限制,但是现在的问题是写入到内部存储,也就是写入地址为/sdcard这个空间中,


实际上写入这个空间的真正uid为1023,也就是AID_MEDIA_RW

所以上面的这个预留空间,并不能够让内部存储受到限制,


那怎么怎么改呢,


这就要到/system/core/sdcard/sdcard.c 这个文件下面,

因为我们现在用到的文件系统为sdcardfs,所以直接改的是sdcardfs_setup:

原来:

    snprintf(opts, sizeof(opts),
            "fsuid=%d,fsgid=%d,%smask=%d,userid=%d,gid=%d",

            fsuid, fsgid, multi_user?"multiuser,":"", mask, userid, gid);

改为:

    snprintf(opts, sizeof(opts),
            "fsuid=%d,fsgid=%d,%smask=%d,userid=%d,gid=%d,reserved_mb=192",
            fsuid, fsgid, multi_user?"multiuser,":"", mask, userid, gid);


为什么是192呢,因为之前预留的也是192M,所以在这里内部存储也给预留192M




  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android系统中,文件系统空间预留是指系统为了保证正常运行和避免因存储空间不足而导致系统程序或应用程序出现问题而预留一定比例的存储空间。这个预留空间通常用于存储系统核心文件、系统日志以及一些临时文件等。 Android系统会将存储空间划分为几个不同的分区,包括系统分区、数据分区和缓存分区等。其中,系统分区用于存储操作系统的核心文件和应用程序,数据分区用于用户数据的存储,而缓存分区则用于临时文件和应用程序的缓存数据。 在Android系统中,文件系统空间预留是非常重要的,因为如果系统存储空间不足,可能会导致系统运行缓慢、应用程序崩溃或者无法正常安装新的应用程序。因此,Android系统会在设备初始化时就预留一定比例的存储空间,以确保系统能够正常运行。 在一些情况下,用户也可以通过清理缓存、删除不必要的文件或者安装存储空间管理应用来释放一些存储空间,从而避免系统存储空间不足的问题。另外,一些新版的Android系统还提供了存储空间智能管理的功能,可以帮助用户自动清理临时文件和无用数据,以最大限度地释放存储空间。 总而言之,Android系统中的文件系统空间预留是为了保证系统的正常运行和用户数据的安全存储,同时也提醒用户要合理利用存储空间,避免因存储空间不足而导致的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值