@@ -462,6 +466,19 @@ class ActionCreateFormat(DeviceAction):
self.device.disk.format.commitToDisk()
+ if isinstance(self.device.format, luks.LUKS):
+ # LUKS needs to wait for random data entropy if it is too low
+ current_entropy = get_current_entropy()
+ if current_entropy < luks.MINIMAL_ENTROPY:
+ if callbacks and "WaitForEntropy" in callbacks:
+ msg = "Not enough entropy to create LUKS format. "\
+ "%d bits are needed." % luks.MINIMAL_ENTROPY
+ callbacks["WaitForEntropy"](msg, luks.MINIMAL_ENTROPY)
+
+ while get_current_entropy() < luks.MINIMAL_ENTROPY:
+ # wait for entropy to become high enough
+ time.sleep(1)
+
self.device.format.create(device=self.device.path,
options=self.device.formatArgs)
# Get the UUID now that the format is created
Would it also be possible to somehow unpredictably stir things up here
to increase available entropy? That could help the loop take less time
to complete.
- Chris