- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 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 可引导光盘格式化为 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。更稳定并且在过去一周内出现零问题。
最佳答案
dmesg
输出的关键部分是
[ 9.410000] mount_root: loading kmods from internal overlay
[ 9.940000] SCSI subsystem initialized
[ 9.960000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 9.980000] ehci-platform:EHCI generic platform driver [ 9.990000] usb-storage 1-1:1.0: no of_node; not parsing pinctrl DT
[ 9.990000] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 10.010000] scsi host0: usb-storage 1-1:1.0
[ 10.020000] usbcore: registered new interface driver usb-storage
[ 10.100000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
[ 10.120000] block: extroot: not configured
[ 10.130000] mount_root: switching to jffs2 overlay
[ 10.180000] procd: - early -
[ 11.020000] scsi 0:0:0:0: Direct-Access SanDisk Cruzer Blade 1.27 PQ: 0 ANSI: 6
[ 11.030000] sd 0:0:0:0: no of_node; not parsing pinctrl DT
[ 11.050000] sd 0:0:0:0: [sda] 30529536 512-byte logical blocks: (15.6 GB/14.5 GiB)
[ 11.070000] sd 0:0:0:0: [sda] Write Protect is off
[ 11.070000] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 11.090000] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 11.120000] sda: sda1
[ 11.130000] sd 0:0:0:0: [sda] Attached SCSI removable disk
[ 11.550000] EXT4-fs (sda1): Cannot load crc32c driver
哦不,这似乎是一个错误
错误#819725:ext4 在 crc32c 模块上缺少 softdep
https://lists.debian.org/debian-kernel/2016/04/msg00013.html
以下解决方法不适用,因为 initramfs 在启动时 (https://en.wikipedia.org/wiki/Initramfs) 是一个 native 文件系统,并且在系统完全启动时没有影响 (rootfs已安装):
Until this is fixed in the kernel package, you can work around it by either:
- Setting base-installer/initramfs-tools/driver-policy to "most" instead of "dep"
- Setting base-config/late_command to a script that adds crc32c to /etc/initramfs-tools/modules
无论如何发布堆栈跟踪,也许还有另一种解决方法
这是过于复杂的东西...
这可能是一个解决方案 https://forum.openwrt.org/viewtopic.php?id=69175
download kmod-lib-crc32c and kmod-crypto-crc32c
如果这不起作用,也许最简单的解决方案是将 USB 堆栈格式化为 VFAT 并等待新内核...
这不是权限错误。权限错误将返回 EPERM -> 错误代码 1 不允许操作
了解 mount
返回的退出代码会很有趣。 “退出行为在几个安装版本中非常不同”,即 mount(2)
和 mount(8)
要获取返回值,请在 shell 中键入命令
挂载/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 这样的引用 并搜索错误字符串,在本例中 No such file or directory
字符串没有这样的文件或目录是系统错误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和一个 block 设备...
(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
并发布
关于linux - 在路由器上挂载 USB 设备 - OpenWrt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41691671/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
Linux 管道可以缓冲多少数据?这是可配置的吗? 如果管道的两端在同一个进程中,但线程不同,这会有什么不同吗? 请注意:这个“同一个进程,两个线程”的问题是理论上的边栏,真正的问题是关于缓冲的。 最
我找到了here [最后一页] 一种有趣的通过 Linux 启动 Linux 的方法。不幸的是,它只是被提及,我在网上找不到任何有用的链接。那么有人听说过一种避免引导加载程序而使用 Linux 的方法
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图了解 ld-linux.so 如何在 Linux 上解析对版本化符号的引用。我有以下文件: 测试.c: void f(); int main() { f(); } a.c 和 b.c:
与 RetroPie 的工作原理类似,我可以使用 Linux 应用程序作为我的桌面环境吗?我实际上并不需要像实际桌面和安装应用程序这样的东西。我只需要一种干净简单的方法来在 RaspberryPi 上
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
有什么方法可以覆盖现有的源代码,我应该用 PyQt、PyGTK、Java 等从头开始构建吗? 最佳答案 如果您指的是软件本身而不是它所连接的存储库,那么自定义应用程序的方法就是 fork 项目。据我所
我的情况是:我在一个磁盘上安装了两个 linux。我将第一个安装在/dev/sda1 中,然后在/dev/sda2 中安装第二个然后我运行第一个系统,我写了一个脚本来在第一个系统运行时更新它。
我在 i2c-0 总线上使用地址为 0x3f 的系统监视器设备。该设备在设备树中配置有 pmbus 驱动程序。 问题是,加载 linux 内核时,这个“Sysmon”设备没有供电。因此,当我在总线 0
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正试图在 linux 模块中分配一大块内存,而 kalloc 做不到。 我知道唯一的方法是使用 alloc_bootmem(unsigned long size) 但我只能从 linux 内核而不是
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有 .sh 文件来运行应用程序。在该文件中,我想动态设置服务器名称,而不是每次都配置。 我尝试了以下方法,它在 CentOS 中运行良好。 nohup /voip/java/jdk1.8.0_71/
我是在 Linux 上开发嵌入式 C++ 程序的新手。我有我的 Debian 操作系统,我在其中开发和编译了我的 C++ 项目(一个简单的控制台进程)。 我想将我的应用程序放到另一个 Debian 操
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我使用4.19.78版本的稳定内核,我想找到带有企鹅二进制数据的C数组。系统启动时显示。我需要在哪里搜索该内容? 我在 include/linux/linux_logo.h 文件中只找到了一些 Log
我知道可以使用 gdb 的服务器模式远程调试代码,我知道可以调试针对另一种架构交叉编译的代码,但是是否可以更进一步,从远程调试 Linux 应用程序OS X 使用 gdbserver? 最佳答案 当然
是否有任何可能的方法来运行在另一个 Linux 上编译的二进制文件?我知道当然最简单的是在另一台机器上重建它,但假设我们唯一能得到的是一个二进制文件,那么这可能与否? (我知道这可能并不容易,但我只是
我是一名优秀的程序员,十分优秀!