remount issue on android 7.0
http://blog.chinaunix.net/uid-23141914-id-5754416.html
最近在新版本的android 7.0上,发现filesystem的remount老是报“ Device or resource busy”的错误。
最终发现,android 7.0上,从原来的toolbox切换到toybox。
- :/ $ ls -al
 /system/bin/mount
- lrwxr-xr-x 1 root shell 6 2016-09-02 16:23 /system/bin/mount
 ->
 toybox
然后仔细查看了一下toybox中关于mount的相关代码,果然是一个坑。
- // For remount
 we need _last_ match (in case of
 overmounts), so traverse
- //
 in reverse order. (Yes I'm using remount as a boolean for a bit here,
- //
 the double cast is to get gcc
 to shut up about it.)
- remount = (void *)(long)comma_scan(opts, "remount",
 1);
- if (((toys.optflags
 & FLAG_a) && !access("/proc/mounts", R_OK)) || remount)
 {
- mm = dlist_terminate(mtl = mtl2
 = xgetmountlist(0));
- if (remount)
 remount = mm;
- }
关键就是这个comma_scan的最后一个参数clean
- // check all instances of opt and "no"opt
 in optlist, return true
 if opt
- //
 found and last instance wasn't no. If clean,
 remove each instance from list.
- int comma_scan(char *optlist, char
 *opt,
 int clean)
- {
- int optlen = strlen(opt), len, no, got
 = 0;
- if (optlist)
 for (;;) {
- char *s = comma_iterate(&optlist,
 &len);
- if (!s) break;
- no = 2*(*s == 'n' && s[1] == 'o');
- if (optlen == len-no && !strncmp(opt, s+no,
 optlen))
 {
- got = !no;
- if (clean &&
 optlist) memmove(s,
 optlist, strlen(optlist)+1);
- }
- }
- return got;
- }
如果remount不是-o的最后一个参数(_last_
match ),那么就会被清除掉。最终调用syscall mount的时候,这个remount的flag就没了。
把命令重新改为 mount
-t vfat -o rw,remount /firmware 就好了。
关于remount的说明在help里面根本没有,真是坑!
remount issue on android 7.0的更多相关文章
- Android 6.0 M userdebug版本执行adb remount失败
		[FAQ18076]Android 6.0 M版本默认会打开system verified boot,即在userdebug和user版本会把system映射到dm-0设备,然后再挂载.挂载前会检查s ... 
- [Bug] 解决透明 Activity 在 Android 6.0 背景不透明
		如何复现 连续启动两个 Activity ,其中 Activity 1 为 不透明 的 Activity Activity 2 为 透明 的 Activity 通常用于引导页面,例如:豌豆夹锁屏引导用 ... 
- android 7.0带来的
		Android 7.0 给开发者带来了什么 新的 Andorid N (Andorid 7.0)预览版发布了,但是新的Android预览版需要我们在已存在的APP上测试几乎全部内容,包括不同种类的屏幕 ... 
- 为 Android 8.0 添加开机启动脚本【转】
		本文转载自:https://zhuanlan.zhihu.com/p/32868074 本人对于 SELinux for Android 理解不深,下文中的各文件及安全规则虽都是我所编写,但也是一边查 ... 
- 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码
		http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ... 
- 【转】Android 6.0 Marsmallow BLE : Connection Parameters
		原文网址:http://stackoverflow.com/questions/34617061/android-6-0-marsmallow-ble-connection-parameters Th ... 
- Android 5.0 怎样正确启用isLoggable(二)__原理分析
		前置文章 <Android 5.0 怎样正确启用isLoggable(一)__使用具体解释> 概要 在上文<Android 5.0 怎样正确启用isLoggable(一)__使用具体 ... 
- Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程
		博客链接:http://blog.csdn.net/qq1084283172/article/details/52334452 折腾Android逆向的时候,经常需要给Nexus 5刷机.最近给Nex ... 
- Android 9.0 默认输入法的设置流程分析
		Android 输入法设置文章 Android 9.0 默认输入法的设置流程分析 Android 9.0 添加预置第三方输入法/设置默认输入法(软键盘) 前言 在上一篇文章 Android 9.0 ... 
随机推荐
- 虚拟机如何装LINUX
			VMware 提供了免費的虛擬機 VMware player 5.0.2 供使用者下載. 從 VMware 官網http://www.vmware.com/. 的頁面進入 “Products”  “ ... 
- Redhat系列使用ISO或者光盘制作yum本地安装源
			适用系统:redhat系列 示例系统:CentOS 6x86_64 环境:虚拟机 有时候做实验又不能联网的情况下想装一款软件时,经常会搞的头大:难道要去系统镜像中一个个拷出来再用rpm安装?各种依 ... 
- Android TextView实现跑马灯
			TextView实现跑马灯的效果:例子一: 这个例子可以解决给一个TextView实现跑马灯的效果,但是不能解决给所有的TextView实现跑马灯的效果. <TextView android:l ... 
- OpenStack三个节点icehouse
			一.环境准备 1.架构 创建3台虚拟机,分别作为controll节点.network节点和compute1节点. Controller节点:1processor,2G memory,5G storag ... 
- 【Base64】用 js 编 解 码 base64
			理论补充: Base64是一种基于64个可打印字符来表示二进制数据的表示方法. 由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符. 三个字节有24个比特,对应于4个Base64单 ... 
- fabric入门
			author: headsen chen date: 2018-08-12 23:13:16 1,安装 yum -y install epel-releaseyum -y install fabr ... 
- 详解Javascript中prototype属性
			转自:https://www.jb51.net/article/91826.htm 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Jav ... 
- mybatis按姓名或手机号搜索
			1.AND ((USER_NAME LIKE '%'||#{searchKey}||'%') OR (MOBILE_PHONE LIKE '%'||#{searchKey}||'%'))2. < ... 
- onethink重新安装后,还原数据库后,登陆不了解决办法!
			在用onethink开发的时候,为了防止修改出错,我会在开发下一个功能的对上一个功能代码整体进行备份,如果出错就返回上一个版本再次修改. 但是会发现一个问题,如果如果返回到上一个版本,重新安装完成之后 ... 
- 单源最短路(spfa),删边求和
			http://acm.hdu.edu.cn/showproblem.php?pid=2433 Travel Time Limit: 10000/2000 MS (Java/Others) Mem ... 
