我是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 sda 和 sda1 文件夹消失,然后在重新连接USB时重新出现,所以我猜想设备检测成功 .
这是什么,我失踪了?
Edit: 添加了评论中建议的编辑内容 .
dmesg output (输出非常大,所以联系起来)
Edit 2: 切换到LEDE 17.更稳定,过去一周没有问题 .
1 回答
dmesg
输出的关键部分是哦不,这似乎是一个错误
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)时没有影响:
无论如何发布堆栈跟踪,也许还有另一种解决方法
这是过于复杂的东西......
这可能是一个解决方案https://forum.openwrt.org/viewtopic.php?id=69175
如果这不起作用可能 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)也在
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大容量存储类)也是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
并发布它