strace shows what happens:
14:04:49.135589 getrandom(0x7ffdc3857ecf, 1, GRND_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable) 14:04:49.135620 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 0}, ru_stime={0, 8000}, ru_maxrss=8344, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=509, ru_majflt=17, ru_nswap=0, ru_inblock=4048, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=969, ru_nivcsw=20}) = 0 14:04:49.135640 getrandom("\20@\251\341k\216T!\215\230\23\5\236\r\v~\253\360\321d\370_\263\227\364\376\20;}\314\271\217", 32, 0) = 32 14:05:16.540470 getrandom("FQ\212\356\17\17\17\323\316\230\7\275X1\3557\226\373U4F\\ sHOz\3\244$\226\270", 32, 0) = 32 14:05:16.540565 getrandom("+\262\232k\304\234\375R", 8, 0) = 8
So it's blocking on the getrandom() call. dmesg shows that the RNG pool only gets initialized 30 seconds into the boot.
This happens even before NM gets to write its first "NetworkManager .. is starting" log message.
strace shows what happens:
14:04:49.135589 getrandom( 0x7ffdc3857ecf, 1, GRND_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable) "\20@\251\ 341k\216T! \215\230\ 23\5\236\ r\v~\253\ 360\321d\ 370_\263\ 227\364\ 376\20; }\314\271\ 217", 32, 0) = 32 "FQ\212\ 356\17\ 17\17\323\ 316\230\ 7\275X1\ 3557\226\ 373U4F\ \ sHOz\3\ 244$\226\ 270", 32, 0) = 32 "+\262\ 232k\304\ 234\375R" , 8, 0) = 8
14:04:49.135620 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 0}, ru_stime={0, 8000}, ru_maxrss=8344, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=509, ru_majflt=17, ru_nswap=0, ru_inblock=4048, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=969, ru_nivcsw=20}) = 0
14:04:49.135640 getrandom(
14:05:16.540470 getrandom(
14:05:16.540565 getrandom(
So it's blocking on the getrandom() call. dmesg shows that the RNG pool only gets initialized 30 seconds into the boot.
This happens even before NM gets to write its first "NetworkManager .. is starting" log message.