- 原因
问题出现的原因是手机的一个启动脚本/init.qcom.sh中有这么一段:
#
# Suppress default route installation during RA for IPV6; user space will take
# care of this
#
for file in /proc/sys/net/ipv6/conf/*
do
echo 0 > $file/accept_ra_defrtr
done
/proc/sys/net/ipv6/conf/*/accept_ra_defrtr文件中的值如果为1,则接受ipv6路由器发出的默认路由设置,如果为0,则不接受。这段话把它设置为了0。所以小米手机不会接受来自路由器的默认路由公告,于是就无法上网了。
- 解决方法
原因找到了,也就好解决了,就是要把/proc/sys/net/ipv6/conf/*/accept_ra_defrtr文件中的值设置为1即可。有以下两种方法,你可以随便选一种:
1. 修改rom包中boot.img中的/init.qcom.sh文件,把echo 0 > $file/accept_ra_defrtr修改为echo 1 > $file/accept_ra_defrtr。然后更新此rom包。修改ROM包可以利用“android kitchen”这个工具来修改,需要有一定的linux基础和动手能力。我这儿有一个已经修改好的,适用于M1标准版,是基于MIUI 3.38修改的。下载链接:http://yunpan.cn.sixxs.org/Q9uLckp6JwuKH
2. 方法1有个缺点,就是如果需要升级系统的话,每次都需要修改rom包,比较麻烦。另外我写了一个脚本,(点这里下载),利用“终端模拟器”等软件执行这个脚本后,ipv6就正常了,如果你觉得麻烦,可以安装一个”script manager”软件,把这个脚本设置为开机启动。就一劳永逸了。
以上那个方法都经过了一些网友的测试,真实可用。如果你使用不了,请多google。
最后要说一句:小米的码农真的不行!