init.rc: Fix entropy pool initialization
Init is responsible for initializing the /dev/[u]random entropy pool, to ensure that high quality random numbers are available to all Android processes. Previously Android mixed in data from /system/etc/prop.default, which included properties which differed on a device-by-device basis. That file no longer exists, and init generates the following error at boot: init: Command 'copy /system/etc/prop.default /dev/urandom' action=init (/system/etc/init/hw/init.rc:106) took 0ms and failed: Could not read input file '/system/etc/prop.default': open() failed: No such file or directory Instead of reading a property file, this change modifies init.rc to read from /proc/bootconfig. The bootconfig file contains per-device data which was previously on the command line, such as androidboot.serialno. Additionally, it contains device-class information such as androidboot.hardware, androidboot.hardware.platform, and data which frequently churns such as androidboot.vbmeta.digest. These help ensure that the random number initialization is at least unique on a per device-class basis. Relying on /proc/bootconfig accomplishes the same goal that relying on /system/etc/prop.default was intended to accomplish. And /proc/bootconfig is in a more stable location than /system/etc/prop.default, hopefully preventing future regressions. Bug: 361624398 Test: Device boots and error above goes away Change-Id: Id5c891e871217d62ff6517c5804b4acc2d723622
Loading
Please register or sign in to comment