偶然发现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

更多相关文章

  1. Android启动第三方应用程序
  2. Android:如何将位置信息模式默认设置为高精确度
  3. 初识Activity
  4. ActivityLaunchMode
  5. mac系统连接Android手机
  6. android 线程更新view及数据传送
  7. 【Android(安卓)初学】9、Activity生命周期
  8. Android(安卓)启动Activity而不显示界面的问题解决
  9. android实现两个页面跳转

随机推荐

  1. 如何找到一个具有负值而另一个具有相同正
  2. 求助,关于sql带入参数的写法问题。
  3. 参数化的Insert语句,事务抛出错误
  4. linux 上安装postgresql 并配置pgadmin i
  5. 将mysql查询转换为sql server查询
  6. 待解决 WIN7下安装完sql2005后没有服务器
  7. SQL Server 批量更新字段值为ROW_NUMBER(
  8. 窥探SQL预编译内幕
  9. SQL里ROWCOUNT的使用
  10. [O]SQL SERVER下有序GUID和无序GUID作为