在路由器上安装USB设备 - OpenWrt

时间:2017-01-17 07:53:28

标签: linux usb mount 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-芯(预安装)
  • 的kmod-USB-dwc2(预安装)
  • 的kmod-USB2
  • 的kmod-USB-存储
  • 的kmod-FS-EXT4
  • 的kmod-SCSI-芯(预安装)

以下是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 output (输出非常大,因此将其关联起来)

编辑2: 切换到LEDE 17.更稳定,过去一周没有问题。

1 个答案:

答案 0 :(得分: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] block:extroot:not configured

     

[10.130000] mount_root:切换到jffs2 overlay

     

[10.180000] procd: - early -

     

[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] 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驱动程序

不,这似乎是个错误

Bug#819725:在crc32c模块上ext4缺少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)还在errnohttp://man7.org/linux/man-pages/man3/errno.3.html)中设置错误代码。在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 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并发布