Несколько раз UUID в /dev

Следующее предложение простое, но, вероятно, могло бы быть более эффективным и надежным.

#!/bin/bash

tab=(one three five)

# grep_all's return status indicates if all patterns have at least
# one matching result in the text file specified as argument.

grep_all()
{
    local -n patterns=$1      # allows to refer to an array
    local file=$2

    # abort if a pattern is not found
    for pattern in "${patterns[@]}"; do
        if ! grep -q -e "$pattern" "$file"; then
            return 1
        fi
    done
}

grep_all tab file.txt
echo $?
2
01.06.2021, 19:21
1 ответ

Похоже, что в списке /proc/partitionsпримерно 256 пар целых -дисков + разделов.

Это может означать, что устройство игнорирует поле Logical Unit Number (LUN )набора команд SCSI, используемого с USB-накопителями, и просто отвечает на запросы по каждому возможному номеру LUN. Это известная проблема с некоторыми устройствами хранения.

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

Bus 002 Device 005: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2

Шестнадцатеричные числа после ID— это именно то, что вам нужно. В следующем примере я предполагаю, что ваше устройство имеет ID 1234:abcd.

Следующим шагом является отключение запоминающего устройства и сообщение подсистеме хранения USB, что это устройство имеет одну -лунную причуду.

Документацию по известным возможным странностям USB-накопителей можно найти в исходной документации ядра(<source package>/Documentation/admin-guide/kernel-parameters.txt).

Для однократного -тестирования можно сделать так:

echo "1234:abcd:s" | sudo tee /sys/module/usb_storage/parameters/quirks

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

Затем снова подключите накопитель. Если теперь он представляет только одно устройство, и устройство хранения работает правильно, обходной путь подходит для вашего устройства.

Чтобы сделать обходной путь постоянным, вам нужно будет сделать одну из двух вещей, в зависимости от того, предоставляет ли ваш дистрибутив Linux подсистему хранения USB в виде загружаемого модуля или как встроенный -в ядро. В комментариях вы упомянули Ubuntu, поэтому я предполагаю, что вы используете именно этот дистрибутив.

Создайте текстовый файл в каталоге /etc/modprobe.d/. Вы можете назвать его как угодно, но имя должно иметь суффикс .conf. Например, вы можете назвать его /etc/modprobe.d/usb-storage-fix.conf.

Содержимое файла должно состоять из одной строки текста.:

options usb-storage quirks=1234:abcd:s

Снова замените часть 1234:abcdфактическими идентификаторами вашего USB-накопителя.

Обратите внимание, что для создания или редактирования любых файлов в /etc/modprobe.d/вам потребуется root-доступ, поэтому вы можете использовать команду, например sudo nano /etc/modprobe.d/usb-storage-fix.conf, для создания файла и редактирования его содержимого.

После того, как вы создали файл, вам необходимо пересобрать файл initramfs на тот случай, если ваш дистрибутив загружает usb_storageмодуль ядра в начале процедуры запуска системы -. В Ubuntu это просто :просто запустите sudo update-initramfs -u. Теперь обходной путь должен применяться автоматически при каждом подключении USB-устройства.


Альтернативным методом определения особенностей этого USB-накопителя может быть использование параметра загрузки ядра. Для этого вы обычно редактируете строку GRUB_CMDLINE_LINUX=""в /etc/default/grub, чтобы добавить параметр usb-storage.quirks=1234:abcd:sк тому, что уже находится в двойных кавычках.

После редактирования файла вам потребуется пересобрать файл конфигурации GRUB; в Ubuntu это будет sudo update-grub; в других дистрибутивах вам, возможно, придется использовать grub-mkconfigнапрямую,или используйте другую оболочку, специфичную для дистрибутива -.


Вы также можете отправить свои выводы по электронной почте в список рассылки разработчиков драйверов для USB -(linux -usb@vger.kernel.org ), чтобы они могли создавать будущие ядра. версии автоматически применяют обходной путь при обнаружении устройства этой модели. В ядре уже есть длинный список USB-накопителей со специфическими особенностями, так что в этом нет ничего особенно нового или необычного.

4
28.07.2021, 11:27

Теги

Похожие вопросы