Очень раздражающая проблема с udev на Slackware: иногда загрузка занимает 5 минут и более.

Вопрос или проблема

Иногда при загрузке я читаю эти сообщения

Jan 17 10:06:02 slack64 udevd[209]:  worker [219] /devices/pci0000:00/0000:00:08.1/0000:08:00.3/usb3/3-4/3-4.4/3-4.4:1.0/host8/target8:0:0/8:0:0:0/block/sr0 timeout; kill it
Jan 17 10:06:02 slack64 udevd[209]:  seq 1878 '/devices/pci0000:00/0000:00:08.1/0000:08:00.3/usb3/3-4/3-4.4/3-4.4:1.0/host8/target8:0:0/8:0:0:0/block/sr0' killed
Jan 17 10:06:46 slack64 udevd[209]:  worker [219] failed while handling '/devices/pci0000:00/0000:00:08.1/0000:08:00.3/usb3/3-4/3-4.4/3-4.4:1.0/host8/target8:0:0/8:0:0:0/block/sr0'

Загрузка зависает и может длиться более 5 минут без загрузки.
Единственное решение такое: отключить USB-кабель моей WiFi-карты (использую драйвер 8852bu) и подключить его заново (!) после загрузки.

Мой вопрос: как этот USB-драйвер может мешать блочному устройству? sr0 не является настоящим диском, это фальшивый драйвер, созданный пакетом vhba-module.

Система – Slackware 15.0, оборудование не важно, так как то же самое происходит на трех разных компьютерах.

Я пробовал этот метод, но он не работает.

Я нашел хорошее решение на этом форуме.

crontab -e

@reboot sleep 10 && modprobe -r 8852bu && modprobe 8852bu

Работает только на некотором оборудовании, на других я ищу другое решение

Ответ или решение

Проблемы с загрузкой системы Slackware, связанные с udev и USB-устройствами, как описано в вашем вопросе, являются довольно распространенной головной болью для администраторов Linux. Рассмотрим более детально природу вашей проблемы и возможные решения.

Теория

udev — это устройство управления устройствами в Linux, которое управляет динамическими устройствами. Оно обеспечивает весь процесс обнаружения и настройки оборудования на уровне ядра. Задача udev — создать и удалить устройства в файловой системе /dev, а также создать соответствующие ссылки и настроить разрешения для этих устройств.

Когда вы видите сообщения об ошибках, такие как:

worker [219] /devices/.../block/sr0 timeout; kill it
worker [219] failed while handling '/devices/.../block/sr0'

Это указывает на то, что процесс, связанный с устройством /dev/sr0, не завершился вовремя, и udev был вынужден прервать его выполнение. Это может привести к задержке загрузки, так как другие службы или устройства, ожидающие завершения этого процесса, не могут продолжать работу.

Ваши проблемы с загрузкой вызваны конфликтом между драйвером для вашего USB WiFi адаптера, использующего драйвер 8852bu, и модулем vhba-module, который создает виртуальное устройство CD-ROM /dev/sr0. Проблема может быть вызвана несколькими факторами:

  1. Конфликт драйверов: Драйверы могут стоять в конфликте из-за того, что системы пытаются одновременно обрабатывать USB-устройства и виртуальные устройства.
  2. Ошибка udev или ядра: Существующие баги в определённых версиях ядра или udev могут приводить к некорректной обработке устройств.
  3. Аппаратные конфликты: Хотя описывается, что проблема проявляется на нескольких разных ПК, существует вероятность, что на определённой аппаратной конфигурации эта ошибка проявляется ярче.

Пример

Ваша текущая временная мера, заключающаяся в физическом подключении и отключении устройства после загрузки, позволяет временно избежать проблемы, но она явно не является долгосрочным решением. Пример частичного решения через настройку crontab:

crontab -e

@reboot sleep 10 && modprobe -r 8852bu && modprobe 8852bu

Этот скрипт выполняет перезагрузку драйвера WiFi после множества других процессов инициализации, что уменьшает вероятность конфликта во время первоначальной загрузки. Тем не менее, это решение работает не всегда.

Применение

Чтобы найти более стабильное решение, рассмотрите следующие шаги:

  1. Обновление драйверов и ядра: Проверьте наличие обновлений для ядра и драйвера 8852bu. Новые версии могут содержать исправления, которые решат текущие проблемы.

  2. Изменение приоритетов udev: Попробуйте создать пользовательское правило для udev, которое изменит порядок загрузки устройств. Вы можете создать правило в /etc/udev/rules.d/ и назначить устройству с драйвером 8852bu низший приоритет по сравнению с /dev/sr0.

  3. Черный список драйвера: Если вам не требуется немедленная работа с WiFi адаптером, можно добавить драйвер 8852bu в черный список модулей и загружать его вручную через скрипт после завершения загрузки всех других сервисов, включая vhba-module.

    Добавление в черный список делается через редактирование файла /etc/modprobe.d/blacklist.conf и добавление строки blacklist 8852bu.

  4. Проверка сторонних модулей: Если вы используете дополнительные модули для расширения функциональности сети или виртуальных CD-ROM устройств, убедитесь, что они актуальны и правильно настроены.

  5. Заменить виртульное устройство: Если sr0 не требуется для ваших текущих задач, рассмотреть возможность удаления или отключения этого виртуального устройства.

Через эти шаги вы сможете либо минимизировать время задержки при загрузке, либо устранить проблему целиком. В сложных ситуациях может потребоваться детальная диагностика, которая подразумевает изучение журналов системы и выполнение тестов в контролируемом окружении.

Это обширная и сложная тема, и мы рекомендовали бы обратить внимание на специфические системные журналы и диагностические утилиты Slackware и Linux в целом, чтобы понять, как именно взаимодействуют между собой драйверы и устройства.

Оцените материал
Добавить комментарий

Капча загружается...