TPM модуль не работает
1. Проблема
Нерабочий TPM модуль из-за rngd сервиса
Статус сервиса:
rngd.service - Hardware RNG Entropy Gatherer Daemon
Loaded: loaded (/usr/lib/systemd/system/rngd.service; enabled)
Active: failed (Result: exit-code) since Thu 2014-09-11 12:48:40 UTC; 46min ago
Process: 28069 ExecStart=/sbin/rngd -f (code=exited, status=1/FAILURE)
Main PID: 28069 (code=exited, status=1/FAILURE)
systemd[1]: Started Hardware RNG Entropy Gatherer Daemon.
rngd[28069]: Unable to open file: /dev/tpm0
rngd[28069]: can't open any entropy source
rngd[28069]: Maybe RNG device modules are not loaded
systemd[1]: rngd.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Unit rngd.service entered failed state.
2. Причины проблемы:
-
Процессор может не поддерживать Intel 82802 Firmware Hub (работает от процессоров Ivy bridge и далее)
-
Сервисный файл запущен некорректно
-
Процессор или ОС не работает с rbrand в
cat /proc/cpuinfo | grep rdrand
-
Для виртуальных машин проверить состояние rngd можно по этой статье ссылка
3. Решения
3.1. Решение 1
-
Установить пакет rng-tools по ссылке ссылка или
dnf install rng-tools
-
Проверить наличие HRWNG который использует rngd
[root 07-10 15:54:53 ~]# ll /dev/hwrng crw-------. 1 root root 10, 183 Jun 8 19:09 /dev/hwrng
-
Остановить сервис rngd и запустить его:
systemctl stop rngd systemctl start rngd
-
Проверить состояние сервиса командой
systemctl status rngd
[root 07-10 15:51:46 ~]# systemctl status rngd ? rngd.service - Hardware RNG Entropy Gatherer Daemon Loaded: loaded (/usr/lib/systemd/system/rngd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-07-10 15:50:28 AEST; 1min 19s ago Main PID: 807744 (rngd) Tasks: 3 (limit: 11155) Memory: 3.3M CGroup: /system.slice/rngd.service ??807744 /usr/sbin/rngd -f --fill-watermark=0 -x pkcs11 -x nist -x qrypt -D daemon:daemon Jul 10 15:50:28 censored.com rngd[807744]: Disabling 5: NIST Network Entropy Beacon (nist) Jul 10 15:50:28 censored.com rngd[807744]: Disabling 9: Qrypt quantum entropy beacon (qrypt) Jul 10 15:50:28 censored.com rngd[807744]: Initializing available sources Jul 10 15:50:28 censored.com rngd[807744]: [hwrng ]: Initialization Failed Jul 10 15:50:28 censored.com rngd[807744]: [rdrand]: Initialization Failed Jul 10 15:50:28 censored.com rngd[807744]: [jitter]: JITTER timeout set to 5 sec Jul 10 15:50:28 censored.com rngd[807744]: [jitter]: Initializing AES buffer Jul 10 15:50:32 censored.com rngd[807744]: [jitter]: Enabling JITTER rng support Jul 10 15:50:32 censored.com rngd[807744]: [jitter]: Initialized Jul 10 15:50:32 censored.com rngd[807744]: Process privileges have been dropped to 2:2
Если решение 1 не помогло:
3.2. Решение 2
-
Переписываем для systemd , чтобы использовался по умолчанию rngd.service файл
cp /usr/lib/systemd/system/rngd.service /etc/systemd/system
-
Изменяем значения в сервисном файле
Было:
ExecStart=/sbin/rngd -f
Должно стать:
ExecStart=/sbin/rngd -f -r /dev/urandom -o /dev/random
-
Перезаписываем демон сервиса
systemctl daemon-reload
-
Запускаем сервис
systemctl start rngd.service
-
Проверяем состояние сервиса
systemctl start rngd.service