簡體   English   中英

在路由器上掛載 USB 設備 - OpenWrt

[英]Mount USB device on router - OpenWrt

我是 OpenWrt 和 Linux/Unix shell 的新手。 在此之前,已使用 dd-wrt ​​2 年。 最近切換到 OpenWrt 並完成了基本設置(wifi/互聯網工作)。 我需要安裝傳輸我的路由器。 但是,USB 設備不會掛載。

路由器的詳細信息如下:

路由器型號:華碩 RT-N13U B1

圖片閃現: chaos_calmer 15.05.1 (openwrt-15.05.1-ramips-rt305x-rt-n13u-squashfs-sysupgrade.bin)

USB 詳細信息: Crusier Blade 16GB usb 2.0 使用 GParted 可啟動 cd 格式化為 ext4

安裝的驅動程序:

  • 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 sdasda1文件夾消失,然后重新連接 USB 時重新出現,所以我猜設備被成功檢測到。

怎么了,我不見了?

編輯:添加了評論中建議的編輯。

dmesg 輸出(輸出很大,所以鏈接它)

編輯 2:切換到 LEDE 17。更穩定,並且在過去一周中出現了零問題。

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 存儲 1-1:1.0:檢測到 USB 大容量存儲設備

[10.010000]SCSI主機0:USB存儲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]過程:-早期-

[ 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 GB/14.5 GiB)

[ 11.070000] sd 0:0:0:0: [sda] 寫保護關閉

[ 11.070000] sd 0:0:0:0: [sda] 模式感知: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 缺少 crc32c 模塊上的 softdep

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)

要獲取返回值,請在 shell 中鍵入命令

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錯誤代碼 在 shell 中打印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-mountkmod-scsi-core ,...)因為 USB 記憶棒(USB 大容量存儲類)是還有一個 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並將其發布

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM