Android Service - EntropyService

来源:互联网 发布:linux修改文件内容bash 编辑:程序博客网 时间:2024/05/21 10:18

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

 

原创粉丝点击