Debian Bookworm – Как предотвратить поиск и зондирование блочного устройства при подключении?

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

У меня есть маленькая загрузочная система, которая требует доступа к устройствам хранения, но не на уровне данных (т.е. только команды встроенного ПО), за исключением USB-дискеты, данные которой считываются в сыром виде (без файловой системы, просто dd).

Из-за этого поведения возникают проблемы:

  • Некоторые устройства хранения заблокированы, что вызывает ошибки встроенного ПО при попытке чтения
  • Поиск USB-дискеты не требуется и продлевает процесс загрузки

Я попробовал следующие команды:

systemctl disable systemd-udev-trigger.service
systemctl disable systemd-udevd.service

systemctl mask systemd-udev-trigger.service
systemctl mask systemd-udevd.service

systemctl stop systemd-udev-trigger.service
systemctl stop systemd-udevd.service

Однако это приводит к тому, что при подключении любых устройств не создается блочное устройство. Я понимаю, что udisks2 возможно когда-то использовался, но его нет в моей системе. Похоже, что blkid может быть ответственным за доступ к блочным устройствам, так как я читал, что он пытается “найти/распечатать атрибуты блочного устройства”. Если это причина, то я не знаю, как это отключить.

Решения, требующие жесткого кодирования блочных устройств (например, /dev/sda), невозможны, так как я не знаю, какое обозначение будут иметь устройства.

Похоже, что этот вопрос может быть связан с проблемами, с которыми я сталкиваюсь, но его решения связаны с модификацией ядра, а если дело дойдет до этого, мне лучше просто смириться с лишними десятью секундами и раздражающими повторяющимися звуками поиска дискеты!

Как можно предотвратить эти операции чтения, оставаясь при этом способным получить доступ к устройству как к блочному устройству? Спасибо

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

Как предотвратить слив и зондирование блок-устройств в Debian Bookworm при подключении?

Введение

В операционной системе Debian Bookworm могут возникать проблемы с несанкционированным доступом к блочным устройствам во время загрузки. Вам необходимо обеспечить доступ к устройствам на уровне прошивки, исключая операции чтения, которые могут привести к ошибкам — особенно с устройствами, которые заблокированы от чтения. Более того, длительные операции зондирования затрудняют загрузку системы и создают лишние звуки при обращении к USB-дисководам. В этом руководстве мы рассмотрим, как устранить эти проблемы, не прибегая к модификации ядра и сохраняя возможность управления устройством.

Понимание проблемы

Когда система инициируется, службы управления устройствами, такие как systemd-udevd, кожуют блоковые устройства и запускают множество сценариев и утилит, включая blkid, целью которых является обнаружение и перечисление атрибутов блочных устройств. Это вызывает запросы на чтение данных с устройств, что может обратить внимание на ошибки или долгие задержки, особенно с USB-флоппи-дисководом.

Решение проблемы

  1. Настройка systemd-udev:

    Чтобы предотвратить сканирование блочных устройств во время загрузки, можно рассмотреть возможность создания правила для udev, которое минимизирует зондирование:

    $ echo 'ACTION=="add", KERNEL=="sd[a-z]*", ENV{UDISKS_IGNORE}="1"' | sudo tee /etc/udev/rules.d/99-no-media.rules

    Это правило игнорирует блочные устройства, предотвращая их зондирование.

  2. Отключение blkid:

    Необходимо отключить автоматическое использование blkid. Вы можете сделать это, изменив конфигурацию системы. Один из способов — через fstab. Просто создайте запись, чтобы отключить автоматическое монтирование:

    UUID=none none auto noauto

    Обратите внимание, что требуется заменить UUID на актуальный или игнорировать blkid полностью с помощью его конфигураций.

  3. Настройки загрузчика:

    Вы можете дополнительно настроить параметры загрузчика, чтобы уменьшить нежелательное поведение. Например, в GRUB можно добавить параметры quiet и nomodeset, чтобы минимизировать выдачу сообщений в процессе загрузки и уменьшить время задержки.

  4. Использование uBlock (если установлен):

    Если у вас есть утилита uBlock, можно её сконфигурировать для игнорирования определённых действий при использовании USB.

  5. Выявление проблем:

    Для диагностики проблем с устройствами стоит использовать:

    journalctl -xe | grep udev

    или

    dmesg | grep sd

    Это поможет вам понять, какие устройства могут вызывать проблемы и какое поведение вызывает задержки.

Заключение

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

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

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