Подключите USB-устройство к роутеру - OpenWrt

Я новичок в оболочке OpenWrt и Linux / Unix. До этого 2 года пользовался dd-wrt. Недавно перешел на OpenWrt и выполнил базовую настройку (работает Wi-Fi / Интернет). Мне нужно установить передачу на мой роутер. Но USB-устройство не подключается.

Детали маршрутизатора следующие:

Модель маршрутизатора: Asus RT-N13U B1

Изображение мигало: chaos_calmer 15.05.1 (openwrt-15.05.1-ramips-rt305x-rt-n13u-squashfs-sysupgrade.bin)

Сведения об USB: Crusier Blade, 16 ГБ, usb 2.0, отформатирован в ext4 с использованием загрузочного компакт-диска GParted.

Установленные драйверы:

  • kmod-usb-core (предустановлено)
  • kmod-usb-dwc2 (предустановлено)
  • kmod-usb2
  • kmod-usb-хранилище
  • kmod-fs-ext4
  • kmod-scsi-core (предустановлено)

Вот разрешения для dev / sda, / dev / sda1 и / mnt (установите 777 вручную):

~#ls -l /dev
brwxrwxrwx    1 root     root        8,   0 Jan 17 21:56 sda
brwxrwxrwx    1 root     root        8,   1 Jan 17 21:56 sda1

~#ls -l ..
drwxrwxrwx    2 root     root             0 Jan 16 21:28 mnt

Ошибка при монтировании:

~# mount -t ext4 /dev/sda1 /mnt
mount: mounting /dev/sda1 on /mnt failed: No such file or directory

echo $?
255

sda1 присутствует внутри dev и существует каталог / mnt. Тем не менее он показывает ошибку.

Я пробовал установить / переустановить, а затем смонтировать, но результат тот же. Кроме того, когда я отсоединяю USB, папки sda и sda1 исчезают, а затем снова появляются при повторном подключении USB, поэтому я предполагаю, что устройство обнаруживается успешно.

Что мне не хватает?

Изменить: добавлены правки, как предложено в комментариях.

вывод dmesg (вывод очень большой, поэтому связал его)

Редактировать 2: переключился на LEDE 17. Работает более стабильно, за последнюю неделю не было проблем.


person Saurabh Harwande    schedule 17.01.2017    source источник
comment
Проверьте еще раз, действительно ли /mnt существует.   -  person Ipor Sircer    schedule 17.01.2017
comment
Да я даже пробовал cd / mnt. Путь изменится на / mnt #   -  person Saurabh Harwande    schedule 17.01.2017
comment
[11.550000] EXT4-fs (sda1): не удается загрузить драйвер crc32c.   -  person Ignacio Vazquez-Abrams    schedule 17.01.2017
comment
@ IgnacioVazquez-Abrams Значит ли это, что драйвер отсутствует или возникла другая проблема?   -  person Saurabh Harwande    schedule 17.01.2017


Ответы (1)


критическая часть выхода dmesg

[9.410000] mount_root: загрузка kmods из внутреннего оверлея

[9.940000] Подсистема SCSI инициализирована

[9.960000] ehci_hcd: драйвер хост-контроллера USB 2.0 с расширенными возможностями (EHCI)

[9.980000] ehci-platform: драйвер универсальной платформы EHCI [9.990000] usb-storage 1-1: 1.0: no of_node; не разбирает pinctrl DT

[9.990000] usb-storage 1-1: 1.0: обнаружено запоминающее устройство USB.

[10.010000] scsi host0: usb-storage 1-1: 1.0

[10.020000] usbcore: зарегистрирован новый драйвер интерфейса usb-storage

[10.100000] блок: попытка загрузить / tmp / jffs_cfg / upper / etc / config / fstab

[10.120000] блок: extroot: не настроен

[10.130000] mount_root: переход на оверлей jffs2

[10.180000] procd: - ранний -

[11.020000] scsi 0: 0: 0: 0: Прямой доступ SanDisk Cruzer Blade 1.27 PQ: 0 ANSI: 6

[11.030000] SD 0: 0: 0: 0: нет of_node; не разбирает pinctrl DT

[11.050000] sd 0: 0: 0: 0: [sda] 30529536 512-байтовые логические блоки: (15,6 ГБ / 14,5 ГБ)

[11.070000] sd 0: 0: 0: 0: [sda] Защита от записи отключена

[11.070000] sd 0: 0: 0: 0: [sda] Mode Sense: 43 00 00 00

[11.090000] sd 0: 0: 0: 0: [sda] Запись в кэш: отключена, чтение из кеша: включена, не поддерживает DPO или FUA

[11.120000] sda: sda1

[11.130000] sd 0: 0: 0: 0: [sda] Подключенный съемный диск SCSI

[11.550000] EXT4-fs (sda1): не удается загрузить драйвер crc32c

о нет, похоже, это ошибка

Ошибка № 819725: в ext4 отсутствует softdep в модуле crc32c

https://lists.debian.org/debian-kernel/2016/04/msg00013.html

следующий обходной путь неприменим, поскольку initramfs является собственной файловой системой во время запуска (https://en.wikipedia.org/wiki/Initramfs) и не влияет, когда система полностью загружена (rootfs смонтирован):

Пока это не будет исправлено в пакете ядра, вы можете обойти это следующим образом:

  • Установка base-installer / initramfs-tools / driver-policy на "most" вместо "dep"
  • Установка base-config / late_command для сценария, который добавляет crc32c в / etc / initramfs-tools / modules

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

это слишком сложный материал ...

вот, возможно, решение https://forum.openwrt.org/viewtopic.php?id=69175

скачать kmod-lib-crc32c и kmod-crypto-crc32c

если это не работает, возможно, самое простое решение - отформатировать стек USB как VFAT и дождаться нового ядра ...


это не ошибка разрешений. ошибка разрешения вернет EPERM -> код ошибки 1 Операция запрещена

Было бы интересно узнать, какой код выхода возвращает mount. «Поведение при выходе сильно отличается в версии с несколькими монтировками», т.е. mount(2) и mount(8)

для получения возвращаемого значения введите в оболочке команду

mount /dev/sda1 /mnt

тогда

echo $?

число - это возвращенный код выхода mount (255 означает "статус выхода вне допустимого диапазона" в данном случае "-1", http://www.tldp.org/LDP/abs/html/exitcodes.html#EXITCODESREF )

список кодов выхода mount (8) находится, например, в http://www.stackoverflow.com/questions/33167585/what-are-the-return-codes-values-of-linux-umount

http://www.becane.com/2014/09/02/understanding-exit-codes-and-how-to-use-them-in-a-bash-script

рядом с возвращаемым значением mount (2) также устанавливает код ошибки в errno (http://man7.org/linux/man-pages/man3/errno.3.html). печать errno в оболочке немного сложна, проще получить ссылку типа http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Errors/unix_system_errors.html и найдите строку ошибки, в данном случае Нет такой файл или каталог

строка Нет такого файла или каталога является системной ошибкой ENOENT

В качестве системной ошибки ENOENT означает, что путь пуст или содержит несуществующий компонент. (http://man7.org/linux/man-pages/man2/mount.2.html)

попробуйте sudo mount -t ext4 /dev/sda1 /mnt, потому что флешка отформатирована в ext4

если это не работает dmesg вывод был бы интересен

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

https://wiki.openwrt.org/doc/howto/usb.storage говорит, что вам нужно еще несколько драйверов (block-mount, _15 _, ...), потому что USB-накопитель (класс USB Mass Storage) также является SCSI и блочным устройством ...

(коды ошибок системы Linux находятся в http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Errors/unix_system_errors.html)

распечатать трассировку стека sudo strace -f mount -t ext4 -o default /dev/sda1 /mnt и опубликовать

person ralf htp    schedule 17.01.2017
comment
Большое спасибо за указатели, которые многому научились из этого. Пробовал с опцией -t ext4, результат тот же. Возвращенный код выхода был 255 (что, я думаю, плохая новость). Также пробовал монтировать блок, даже если он не монтирует привод. scsi был предустановлен. Также прошел тему разрешений, и поставил 777 для sda, sda1, mnt. - person Saurabh Harwande; 17.01.2017
comment
Я отредактировал ответ, так как у меня была ошибка из-за возвращаемых значений и кодов ошибок. существует большая разница между возвращаемыми значениями mount (2) [-1 в случае неудачи, 0 в случае успеха, установка errno] и mount (8) [0 в случае успеха, ...]. распечатайте трассировку стека с помощью sudo strace -f mount -t ext4 -o default /dev/sda1 /mnt и опубликуйте ее - person ralf htp; 18.01.2017
comment
Я действительно установил USB-устройство. Установлен пакет с именем 'kmod-lib-crc32c', не знаю, для чего предназначен этот пакет. Проверено на странице USB openwrt только для того, чтобы найти kmod-crypto-crc32c. Сейчас много путаницы. Я обновлю детали, когда у меня будет время. Возможно, опубликую еще вопрос о пакете crc32c. Также голосование за полезный контент в ответе. - person Saurabh Harwande; 18.01.2017
comment
kmod-lib-crc32c помогает. Это очень поздний выбор ответа, но я сам был сбит с толку тем, что делал тогда, и не хотел выбирать неправильный ответ как правильный. Это должен быть один из лучших ответов, которые можно найти в Интернете. - person Saurabh Harwande; 22.09.2017