Linux-Mint

4000x ‘wpa_supplicant188518851885:隨機:無法從 /dev/random 讀取:資源暫時不可用”引導時的日誌消息

  • February 12, 2020

我最近在我的 Sony Vaio 筆記型電腦上添加了 Linux Mint (19.3) 作為我的新主作業系統。

有時啟動需要一些時間,我發現jounrnalctl

Feb 11 10:45:11 notebook kernel: microcode: microcode updated early to revision 0x2f, date = 2019-02-17
Feb 11 10:45:11 notebook kernel: Linux version 5.3.0-28-generic (buildd@lcy01-amd64-009) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UT
Feb 11 10:45:11 notebook kernel: Command line: BOOT_IMAGE=/@/boot/vmlinuz-5.3.0-28-generic root=UUID=8d4f6dfa-1d63-4507-b9e1-37d639dca309 ro rootflags=subvol=@ quiet splash vt.handoff=1
[...]
Feb 11 10:45:14 notebook dbus-daemon[1080]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.12' (
Feb 11 10:45:14 notebook systemd[1]: Starting Hostname Service...
[...]
Feb 11 10:45:18 notebook systemd[1]: Started Update Manager automatic upgrades.
Feb 11 10:45:24 notebook wpa_supplicant[1085]: random: Cannot read from /dev/random: Resource temporarily unavailable
Feb 11 10:45:39 notebook dbus-daemon[1080]: [system] Failed to activate service 'org.freedesktop.hostname1': timed out (service_start_timeout=25000ms)
Feb 11 10:45:39 notebook NetworkManager[1086]: <info>  [1581414339.4088] hostname: hostname: hostnamed not used as proxy creation failed with: Fehler beim Aufruf von StartServiceByName f
Feb 11 10:45:39 notebook NetworkManager[1086]: <info>  [1581414339.4091] hostname: hostname changed from (none) to "notebook"
Feb 11 10:45:39 notebook NetworkManager[1086]: <info>  [1581414339.4104] dns-mgr[0x555fc095e1a0]: init: dns=systemd-resolved, rc-manager=symlink, plugin=systemd-resolved
Feb 11 10:45:39 notebook NetworkManager[1086]: <info>  [1581414339.4143] rfkill0: found WiFi radio killswitch (at /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/SNY5001:00/rfk
Feb 11 10:45:39 notebook NetworkManager[1086]: <info>  [1581414339.4155] rfkill2: found WiFi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/ieee80211/phy0/rfkill2
Feb 11 10:45:39 notebook NetworkManager[1086]: <info>  [1581414339.4199] manager[0x555fc0968060]: rfkill: WiFi hardware radio set enabled
Feb 11 10:45:39 notebook NetworkManager[1086]: <info>  [1581414339.4200] manager[0x555fc0968060]: rfkill: WWAN hardware radio set enabled
Feb 11 10:45:39 notebook systemd[1]: Started Network Manager.
[...]
Feb 11 10:45:44 notebook dbus-daemon[1418]: [session uid=113 pid=1418] Successfully activated service 'ca.desrt.dconf'
Feb 11 10:45:44 notebook wpa_supplicant[1085]: random: Cannot read from /dev/random: Resource temporarily unavailable
Feb 11 10:45:44 notebook wpa_supplicant[1085]: random: Cannot read from /dev/random: Resource temporarily unavailable
Feb 11 10:45:44 notebook wpa_supplicant[1085]: random: Cannot read from /dev/random: Resource temporarily unavailable
Feb 11 10:45:44 notebook wpa_supplicant[1085]: random: Cannot read from /dev/random: Resource temporarily unavailable

…從第 1448 行到第 5199 行!

啟動完成後,我可以在讀取時獲取數據/dev/random,隨機的初始化似乎要晚得多:

Feb 11 10:46:27 notebook kernel: random: crng init done
Feb 11 10:46:27 notebook kernel: random: 7 urandom warning(s) missed due to ratelimiting

知道那裡發生了什麼嗎?

從 10:45:14 到 10:45:39 只有 2 條日誌消息 - 這可能相關嗎?

全球資訊網上有很多關於這個主題的文章。簡而言之/dev/random,與其他作業系統相比,Linux 的設備相當奇怪,而且文件也很糟糕。有大量的來回試圖修復它。最新一輪,在這個 28 歲的作業系統核心中,就在上個月

延誤的原因

在引導之後,在 Linux 中首次播種**偽隨機數生成器所需的時間完全取決於核心可以從鍵盤、網路介面和硬體隨機數生成器等資源中吸收多少硬體隨機性。(這在虛擬機上是出了名的困難,因為虛擬硬體設備從“外部世界”獲得的隨機輸入要少得多。然後是硬體隨機數生成器的可用性和可信度以及使引導程序更快的副作用。)

/var/lib/systemd/random-seed它可以通過在之前關閉時(在 systemd 作業系統上)或/var/lib/urandom/random-seed(在非 systemd 作業系統上) 預先準備一些種子數據並在引導時載入這些數據的實用程序來改進。

但是,此類實用程序要求包含這些種子文件的捲在實用程序執行時是可寫的;因為種子數據在使用後立即被刪除/替換是至關重要的,以防止偽隨機數生成器被相同的種子數據重新播種兩次。不幸的是,這意味著這些實用程序不能在引導序列的早期執行。

日誌消息的原因

這意味著在您的情況下,有一個大約 1¼ 分鐘的視窗,在此期間

  • using將獲得從固定的已知種子生成的/dev/urandom偽隨機數據,這使得隨機性可預測
  • 在阻塞模式下使用/dev/random會阻塞,停止程序執行;和
  • /dev/random在非阻塞模式下使用將導致它返回EAGAIN錯誤程式碼,其字元串為“資源暫時不可用”。

wpa_supplicant顯然是在做第三個。反复。但從您的日誌中不太明顯的是“urandom warnings”,核心在某些程序/dev/urandom可用之前就已警告它正在使用。因此,您系統中的某些程序正在獲得可預測的隨機數,這可能是一個巨大的問題,具體取決於這些程序是什麼。

讓事情變得更好

為您的作業系統建構 Linux 的人(根據您的日誌,這是 Linux 5.3.0-28 的“通用”配置)可以打開一個配置選項,使 x86-64 處理器上的生活變得更好(除了一些底層處理器指令有故障的較舊的 AMD 處理器)。配置選項使核心信任處理器作為硬體隨機性的CONFIG_RANDOM_TRUST_CPU來源,從而更快地為偽隨機數生成器提供種子。

去年,Debian 的 Linux 核心為 Debian 10 啟用了此選項。但是,我不知道 Ubuntu 和 Mint 中的 Linux。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/567160