/ dev / sdb * недоступно после загрузки - initramfs не загружает модули uas и usb_storage

Очевидно, проблема заключалась в нескольких объявлениях IFS = $ '\ t' . Удаление их и наличие одного объявления для IFS , похоже, решило проблему.

(Хотя, хоть убей, я не понимаю , почему это было проблемой. Должно быть, была тонкая опечатка.)

4
31.07.2016, 23:13
2 ответа

ОК, это дикое предположение и обходной путь (а не правильное понимание проблемы), но это должно сработать.

Создайте файл правил udev, скажем, /etc/udev/rules.d/z30-seagate-disk.rules и добавьте следующее правило:

ATTRS{manufacturer}=="Seagate", ATTRS{product}=="BUP Slim BK", SYMLINK+="seagate"

Это должно заставить udev сделать второй проход и добавить диск как /dev/seagate блочное устройство. Вам также нужно будет добавить этот файл в переменную FILES в /etc/mkinitcpio.conf, чтобы он попал в initramfs. (И запустите mkinitcpio -p linux для восстановления initramfs)

Предупреждение: Проверено на Arch, не на Debian, и без использования USB 3.0.


Другим обходным решением будет заставить uas (USB SCSI) всегда загружаться ядром. Добавьте в файл, скажем, /etc/modules-load.d/seagate-disk.conf имя модуля:

uas
usb_storage
usbcore
scsi_mod
usb_common

Теоретически нужен только uas, но я не могу воспроизвести вашу проблему, поэтому я бы попробовал переборщить все, что нужно для управления USB HDD. Опять же, добавьте этот файл в FILES в /etc/mkinitcpio.conf.

Это заставит ядро иметь uas всегда загруженным. Возможно, пока udev работает с шинами, он ошибочно полагает, что USB-концентраторы/шины ничем не загружены, поскольку в ядре нет загруженных USB-модулей.

3
27.01.2020, 20:55

Отредактируйте / etc / modules и добавьте строку, содержащую uas .

Затем запустите update-initramfs (например, update-initramfs -u -k $ (uname -r) , чтобы обновить initramfs для текущего работающего ядра. Или - k all для всех установленных ядер).

Модули, перечисленные в / etc / modules , загружаются автоматически независимо от того, обнаруживает ли udev или что-то еще, что они необходимы.

Это также полезно, если вам нужно или вы хотите принудительно установить определенный порядок загрузки модулей, чтобы модуль foo всегда загружался перед модулем bar (за исключением Конечно, ранее загруженный модуль зависит от bar ).

Как и для любых модулей, загружаемых с помощью modprobe , вы можете установить параметры времени загрузки в файле в /etc/modprobe.d/ .

например. У меня есть spl и zfs , перечисленные в / etc / modules , а /etc/modprobe.d/zfs.conf содержит:

# use minimum 4GB and maxmum of 8GB RAM for ZFS ARC
options zfs zfs_arc_min=4294967296 zfs_arc_max=8589934592

Если вы хотите знать, какие параметры времени загрузки известны модулю, используйте modinfo [module] | grep parm . Модуль uas не имеет.

3
27.01.2020, 20:55

Теги

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