지연 이유

지연 이유

저는 최근 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개뿐입니다. 이것이 관련이 있을 수 있습니까?

답변1

World Wide Web에는 이 주제에 관한 많은 기사가 있습니다. 간단히 말해서, /dev/randomLinux의 장비는 다른 운영 체제에 비해 다소 이상하고 문서화가 잘 되어 있지 않습니다. 이 문제를 해결하기 위해 많은 시행착오를 겪었습니다. 28년 된 운영 체제 커널의 최신 버전은바로 지난달.

지연 이유

필요한 시간1번 종자이것의사 난수 생성기Linux에서는 부팅 후 커널이 키보드, 네트워크 인터페이스, 하드웨어 난수 생성기와 같은 소스로부터 하드웨어 무작위성을 얼마나 흡수할 수 있는지에 따라 달라집니다. (가상 하드웨어 장치는 "외부 세계"로부터의 무작위 입력이 훨씬 적기 때문에 가상 머신에서는 이것이 매우 어려운 것으로 악명 높습니다. 그런 다음 하드웨어 난수 생성기의 가용성과 신뢰성 및 부트로더를 더 빠르게 만드는 부작용이 있습니다.)

/var/lib/systemd/random-seed/var/lib/urandom/random-seed이는 이전 종료(시스템 운영 체제) 또는 (시스템 운영 체제가 아닌 운영 체제)에서 일부 시드 데이터를 미리 준비하고 부팅 시 이 데이터를 로드하는 유틸리티를 통해 개선될 수 있습니다 .

그러나 이러한 유틸리티를 사용하려면 유틸리티가 실행되는 동안 이러한 시드 파일이 포함된 볼륨에 쓸 수 있어야 합니다. 의사 난수 생성기가 동일한 볼륨에 재사용되지 않도록 사용 후 즉시 시드 데이터를 제거/교체하는 것이 중요하기 때문입니다. 데이터를 두 번 뿌리십시오. 불행하게도 이는 부팅 순서 초기에 유틸리티를 실행할 수 없음을 의미합니다.

로그 메시지 이유

이는 귀하의 경우 약 1¼분 정도의 시간이 있음을 의미합니다.

  • 다음 을 사용하여 /dev/urandom의사 무작위 데이터를 얻습니다.고정된 알려진 시드에서 생성됨, 이는 임의성을 만듭니다.예측 가능한;
  • /dev/random차단 모드에서 사용하면 차단되어 프로세스 실행이 중지됩니다.
  • /dev/random비차단 모드에서 사용하면 EAGAIN"리소스를 일시적으로 사용할 수 없습니다"라는 문자열과 함께 오류 코드가 반환됩니다.

wpa_supplicant이 중 세 번째 작업을 하고 있는 것 같습니다. 자꾸. 그러나 로그에서 덜 분명한 것은 커널이 특정 프로그램을 /dev/urandom사용할 수 있기 전에 경고한 "urandom warnings"입니다. 그래서 시스템의 일부 프로그램이예측 가능한난수는 이러한 프로그램이 무엇인지에 따라 큰 문제가 될 수 있습니다.

상황을 개선하다

귀하의 OS용 Linux를 구축하는 사람들(귀하의 로그에 따르면 이는 Linux 5.3.0-28의 "공통" 구성임)은 x86-64 프로세서에서 더 나은 삶을 만드는 구성 옵션을 켤 수 있습니다(일부 이전 AMD 프로세서에는 버그가 있음 제외). 기본 프로세서 명령어에서). 커널이 프로세서를 하드웨어 무작위성의 소스로 신뢰하도록 하는 구성 CONFIG_RANDOM_TRUST_CPU옵션으로 의사 난수 생성기의 시딩을 더 빠르게 할 수 있습니다.

Debian의 Linux 커널은 작년에 Debian 10에서 이 옵션을 활성화했습니다. 하지만 저는 Ubuntu와 Mint의 Linux에 대해 잘 모릅니다.

추가 읽기

관련 정보