當我登錄時,它會掛起,直到 crng init 完成
當我在執行 Debian Unstable 的筆記型電腦上使用 LightDM 登錄時,它最近開始掛起大約 2 分鐘,直到
journalctl
顯示消息kernel: random: crng init done
。當我在鍵盤掛起時按隨機鍵時,它會更快地登錄(大約 10 秒)。在我沒有這個問題之前,有什麼辦法可以解決它嗎?編輯:使用
linux-image-4.15.0-3-amd64
而不是linux-image-4.16.0-1-amd64
工作,但我不想使用較舊的核心。
由於可用的熵(隨機性)不足,在嘗試從核心獲取隨機數據(即讀取/dev/urandom
或呼叫)時,看起來像系統的某些組件。getrandom()
對於為什麼問題取決於特定核心版本或系統上的哪個組件實際阻塞,我沒有現成的解釋,但無論根本原因如何,事實上,正如 Bigon 在他的回答中指出的那樣,這似乎是 4.16 中引入的核心錯誤:
此錯誤是由此送出中的“crng_init > 0”到“crng_init > 1”更改引入的: https ://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ?id=43838a23a05fbd13e47d750d3dfd77001536dd33
此更改無意中影響 urandom_read,導致 crng_init==1 狀態被視為未初始化並導致 urandom 阻塞,儘管此狀態存在專門用於支持啟動時的非加密需求: https ://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863
恢復 43838a23a05f (“random: fix crng_ready() test”) 修復了錯誤(用 4.16.5-1 測試),但這可能會導致安全問題(43838a23a05f 中提到了 CVE-2018-1108)。我正在測試一個更本地化的修復,它應該更適合上游。
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572#82)