android system ro

无法Re(或者AndRootFile)掉系统文件的根本原因,其实是对"/system"操作的权限问题,因为只有读权而没有写权,用"remount"时
总是提示没有许可,可在手机上又没有显示确认许可的提示,才造成每次“remount”都失败。
    加入以下操作问题就解决了:
    1、进Recovery->mounts and storage;
    2、将mount /system,mount /data,unmount /cache,mount /sdcard,mount /sd-ext全部改成unmount后退出重启;
    3、进入adb;
    4、修改system只读权限:remount ;
     由于/system/app是只读的,需要先通过remount将其设置为rw。
    具体操作:
>adb devices
List of devices attached
emulator-5554    device
>adb shell
$su(注意:此时手机提示是否允许授su权,选允许,原先在这步手机总是没提示,按上面的1、2条操作后才手机有提示!!!)
su
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
#mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 rw 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
# exit
$exit
>
mount完就可以任意修改删除拉~~~~
<think>好的,我现在需要帮助用户解决如何在Android中自定义ro.serialno的问题。首先,我需要回忆一下之前提供的引用内容。根据引用[1],ro.serialno通常是通过SystemProperties.get方法获取的,而引用[2]提到,ro.开头的属性通常不能直接自定义,因为它们来自内核启动参数中的ro.boot.serialno。 用户可能正在尝试修改设备的序列号,可能用于测试或特定应用场景。但根据Android的安全机制,ro.开头的属性是只读的,不能直接通过常规方法修改。因此,我需要考虑系统级的方法,比如修改内核参数或系统属性文件。 首先,用户可能需要root权限,因为修改系统属性通常需要超级用户权限。然后,检查设备是否解锁了Bootloader,因为修改启动参数可能需要解锁。接下来,可能的步骤包括修改bootloader的启动参数,或者在系统初始化脚本中设置属性。例如,在init.rc文件中添加setprop命令,或者在编译ROM时预先定义该属性。 另外,引用中提到ro.boot.serialno是内核传递的参数,所以可能需要修改内核的启动参数。这涉及到编译内核或修改boot镜像。对于普通用户来说,这可能比较复杂,但对于ROM开发者来说,可能是可行的。 需要注意的是,不同Android版本和厂商可能有不同的机制,比如某些设备可能通过/proc/cmdline或其他方式传递序列号。因此,用户需要根据具体设备型号和Android版本进行调整。 最后,要提醒用户修改系统属性可能违反设备的安全策略,甚至导致设备不稳定或保修失效。需要谨慎操作,并确保符合法律法规。</think>在Android系统中自定义$ro.serialno$属性需要系统级修改,具体实现方法如下: ### 一、实现原理 1. $ro.serialno$属性值来源于内核启动参数$ro.boot.serialno$[^2] 2. Android系统初始化阶段通过解析/proc/cmdline获取序列号 3. 该属性属于只读系统属性(ro.开头),常规setprop命令无法修改 ### 二、实现方法 #### 方法1:内核启动参数修改(推荐) ```bash # 在bootloader启动参数添加 androidboot.serialno=自定义序列号 ``` 需重新编译boot镜像,适用于ROM开发者 #### 方法2:init阶段注入(需root) 在设备初始化脚本中添加: ```rc # /system/core/rootdir/init.rc on early-init setprop ro.serialno "自定义值" ``` #### 方法3:属性重载(临时修改) ```bash # 需要SELinux权限调整 setprop ro.boot.serialno "临时值" stop;start ``` ### 三、验证方法 ```java // Java代码验证 SystemProperties.get("ro.serialno", ""); ``` ### 四、注意事项 1. Android 8.0+版本加强了属性保护,需修改system/sepolicy相关.te文件 2. 部分厂商设备使用独立SN存储芯片(如QCOM的TA分区) 3. 修改后可能影响OTA升级和DRM认证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值