首页 文章

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

提问于
浏览
1

我是OpenWrt和Linux / Unix shell的新手 . 在此之前,使用dd-wrt已有2年 . 最近切换到OpenWrt并完成了基本设置(wifi /互联网工作) . 我需要安装传输我的路由器 . 但是,USB设备无法安装 .

路由器的详细信息如下:

Router Model: 华硕RT-N13U B1

Image flashed: chaos_calmer 15.05.1(openwrt-15.05.1-ramips-rt305x-rt-n13u-squashfs-sysupgrade.bin)

Usb Details: Crusier Blade 16GB usb 2.0使用GParted可启动光盘格式化为ext4

Drivers Installed:

  • kmod-usb-core(预装)

  • kmod-usb-dwc2(预装)

  • kmod-usb2

  • kmod-usb-storage

  • 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时重新出现,所以我猜想设备检测成功 .

这是什么,我失踪了?

Edit: 添加了评论中建议的编辑内容 .

dmesg output (输出非常大,所以联系起来)

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

1 回答

  • 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:没有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] block:尝试加载/ tmp / jffs_cfg / upper / etc / config / fstab [10.120000] block:extroot:未配置[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]模式感应: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: ext4 missing softdep on crc32c module

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

    以下解决方法是 not applicable ,因为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

    如果这不起作用可能 the easiest solution is to format the USB stack as VFAT 并等待新内核...


    这不是权限错误 . 权限错误将返回EPERM - >错误代码1不允许操作

    知道 mount 返回的退出代码会很有趣 . 'exit behavior is very different in the several mount version'mount(2)mount(8)

    要获取返回值,请在命令shell中键入

    mount /dev/sda1 /mnt

    然后

    echo $?

    该数字是 mount 的返回退出代码(255表示'exit status out of range',本例中为'-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大容量存储类)也是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 并发布它

相关问题