Android(安卓)Service - EntropyService
偶然发现Android启动一直停留在开机动画阶段,无法正常进入系统。于是跟踪发现其居然在EntropyService.java->loadInitialEntropy函数read /system/data/entropy.dat时被block住了,导致system server后面的其他service也无法启动。虽然还没有知道root cause,这里还是记录Entropy Service相关知识。
Entropy Service是system server启动的第一个Service,它周期性(每3小时)的加载和保存熵池(/dev/urandom)。但是由于/dev/urandom本身就有的安全性要被/dev/random相对差些,所以每隔三小时,Android系统在kernel的熵池中增加了一些附加信息,这些信息对提高随机数的质量上还是有些帮助的。
Android添加的额外的信息如下:
out.println("Copyright (C) 2009 The Android Open Source Project");
out.println("All Your Randomness Are Belong To Us");
out.println(START_TIME);
out.println(START_NANOTIME);
out.println(SystemProperties.get("ro.serialno"));
out.println(SystemProperties.get("ro.bootmode"));
out.println(SystemProperties.get("ro.baseband"));
out.println(SystemProperties.get("ro.carrier"));
out.println(SystemProperties.get("ro.bootloader"));
out.println(SystemProperties.get("ro.hardware"));
out.println(SystemProperties.get("ro.revision"));
out.println(System.currentTimeMillis());
out.println(System.nanoTime());
其他参考:
http://www.kernel.org/doc/man-pages/online/pages/man4/random.4.html
更多相关文章
- Android启动第三方应用程序
- Android:如何将位置信息模式默认设置为高精确度
- 初识Activity
- ActivityLaunchMode
- mac系统连接Android手机
- android 线程更新view及数据传送
- 【Android(安卓)初学】9、Activity生命周期
- Android(安卓)启动Activity而不显示界面的问题解决
- android实现两个页面跳转