我是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
安装了驱动程序:
以下是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.更稳定,过去一周没有问题。
答案 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)还在
errno
(http://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-mount
,kmod-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
并发布