Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Задержка при запуске qt5-приложений сразу после рестарта
Elijah1978
Добавлено 12.03.2018 15:21
0
Сообщение: 1
Elijah1978
0

Пункты: 573
Регистрация: 01.08.2017
День добрый!

Собрал ядро с qt5&gsstreamer + linuxfb.
Почему-то qt-приложения (например affine) если их запускать сразу после рестарта, подвисают минуты на 3.
Ожидают пока ядро не накопит энтропию и выдаст "random: nonblocking pool is initialized".
Можно ли это дело обойти не сохраняя энтропию между рестартами (http://man7.org/linux/man-pages/man4/random.4.html)?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.03.2018 17:20 Редактировалось 12.03.2018 17:26 Сообщение: 2
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
На какой плате, с каком ядром ? любые приложения или только с Qt ? наблюдал подобное с udev и emmc, лечил так

в файле /etc/init.d/S10udev

закоментировать

case "$1" in
start)
printf "Populating ${udev_root:-/dev} using udev: "
printf '\000\000\000\000' > /proc/sys/kernel/hotplug
$UDEV_BIN -d || (echo "FAIL" && exit 1)
udevadm trigger --type=subsystems --action=add
# udevadm trigger --type=devices --action=add

там это никак не связано с энтропией
Спуститься к концу Подняться к началу
Персональная информация
Elijah1978
Добавлено 13.03.2018 17:44 Сообщение: 3
Elijah1978
0

Пункты: 573
Регистрация: 01.08.2017
Не помогло...
модули - imx6s(d). Платы самопальные на основе (SK-iMX6-MB-SODIMM). buildroot-2017.08-sk.

консольные приложения (например mc) сразу запускаются.
А вот с qt странно:
если автозапуском их прописывать(или из отладчика запускать), то они минуту ждут до "random: nonblocking pool is initialized".

А вот если usb-клавиатурой в командной строке, то практически мгновенно....
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.03.2018 09:35 Редактировалось 14.03.2018 09:42 Сообщение: 4
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Действительно - проверил у себя, на всех платах кроме SK-IMX6Q такой эффект. Немного улучшает ситуацию установка rng-tools

https://www.toradex.com/community/questions/18861/random-number-generator-hangs-for-a-long-time.html

но всё равно долго инициализируется. Надо посмотреть в сторону gnutls - похоже у нас тоже из-за него останавливается загрузка приложений Qt.

Цитата

I did some debugging and found out that the connmand (and rauc too) process is linked to libgnutls, which upon initialization call the kernel random() syscall, and because it's not initialized yet, just blocks.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.03.2018 15:59 Сообщение: 5
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Цитата

Ожидают пока ядро не накопит энтропию и выдаст "random: nonblocking pool is initialized".


Посмотрел - проблема решена кардинально в более свежих ядрах

https://lwn.net/Articles/691071/

бэкпортированный патч из ядра 4.9 лежит тут

https://yadi.sk/d/Z25dFw_b3TMu4D

1) создайте директорию в находясь в корне buildroot

mkdir board/starterkit/linux

и скопируйте туда патч

2) укажите буилдруту использовать эту директорию с патчами для ядра

make menuconfig

Kernel --->
(board/starterkit/linux) Custom kernel patches

3) удалите исходники собранного ядра и соберите новое ядро

rm -r output/build/linux-custom

./kernel_rebuild.sh
Спуститься к концу Подняться к началу
Персональная информация
Elijah1978
Добавлено 14.03.2018 19:11 Сообщение: 6
Elijah1978
0

Пункты: 573
Регистрация: 01.08.2017
Спасибо!
Спуститься к концу Подняться к началу
Персональная информация
garrik61
Добавлено 19.04.2018 00:53 Сообщение: 7
garrik61
0

Пункты: 5663
Регистрация: 26.03.2012
Всем привет.
У меня также останавливается загрузка приложений (~40sek)
с gstreamer-1.0 до момента появления сообщения
"random: nonblocking pool is initialized".
(Linux buildroot 4.1.15)

В ядре 3.14 было всё нормально.

Простой пример запустить в автозагрузке p.sh файл
содержащий строку :
gst-launch-1.0 imxv4l2videosrc device=/dev/video0 num-buffers=1 ! clockoverlay shaded-background=true time-format="%Y/%m/%d %H:%M:%S" ! jpegenc ! filesink location=/root/test.jpg

Первый способ закоментировать строку (# udevadm trigger --type=devices --action=add) приводит к неработоспособности
gstreamer-1.0
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.04.2018 14:56 Сообщение: 8
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Цитата

закоментировать строку (# udevadm trigger --type=devices --action=add)


это не поможет в данном случае

Цитата

останавливается загрузка приложений (~40sek)
с gstreamer-1.0 до момента появления сообщения
"random: nonblocking pool is initialized".


как исправить написано тут

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=29110&last#29115
Спуститься к концу Подняться к началу
Персональная информация
garrik61
Добавлено 19.04.2018 17:05 Сообщение: 9
garrik61
0

Пункты: 5663
Регистрация: 26.03.2012
Спасибо!
Пере собрал загрузка работает быстро.

Извините за не быстрый ответ так-как тестировал.

ВСЕМ Успехов !
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux