openwrt安装后,由于一般的闪存较小,而我们需要安装大量的扩展软件,使用U盘进行extroot扩展势在必行,但总会有各种问题导致扩展不成功。下面记录的是怎么一步步去分析不成功的原因:
- 对于挂载失败,首先要确定openwrt是否安装了相应的组件。可以通过opkg list查看是否安装了“block-mount kmod-fs-ext4 kmod-usb-storage”这三个扩展。如果U盘不是直连,而是使用的转接口、hub一类的还需要安装“ kmod-usb-storage-extras”。
- 依赖没问题的话,再分析u盘是否有问题。通过查看/dev是否有sd开头的设备,一般至少有俩(sda、sda1)来确认u盘是否识别成功。如果找不到则检查第1条的依赖是否安装。假如正常发现了sda1,那么执行“mount /dev/sda1 /mnt”命令,成功执行是没有任何返回的。然后通过“df -h”命令也可以看到分区正常挂载。如果这一步挂载不上则是U盘文件格式不对。第一条里面的kmod-fs-ext4支持ext2/ext3/ext4,建议使用ext3/ext4这两种格式。如果使用了fat、ntfs之类的格式也需要安装相应的扩展。
- 一般来说,确定上面的都没问题就可以正常使用了,但往往不尽人意。这个时候会遇到下面的三个情况:
- 偶尔出现的挂载失败,重启5-6遍extroot会有一两次挂载成功。
- u盘手工挂载没问题,但是extroot自动挂载总是不行。
- swap分区可以挂载成功,但是extroot挂载失败。
如果你遇到了上面这三个情况,解决办法是修改delay_root(位于/etc/config/fstab)参数,这个参数控制的是延时挂载时间,是为U盘的识别等待时间,默认是5秒钟,但也存在几十秒也没识别的情况,所以如果遇到上面说的这三个情况,可以考虑延长这个时间设置。
ps:网上很多教程配置这个参数为1,实在不可取。我在使用中5秒钟都有挂载不上的情况,更何况1秒钟呢。
再补充一点,根据官方文档描述,实际上extroot有两种具体的实现方式,分别是对overlay和/的扩展,对应的是pivot-overlay 和 pivot-root。pivot-root需要copy整改系统的文件,pivot-overlay只是保存改动了的文件,所以使用pivot-overlay更简单一些。
ext3和ext4格式我都试过了。都挂载不上
————————————————————-
root@OpenWrt:/dev# fdisk -l
Disk /dev/mtdblock0: 192 KiB, 196608 bytes, 384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mtdblock1: 64 KiB, 65536 bytes, 128 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mtdblock2: 64 KiB, 65536 bytes, 128 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mtdblock3: 31.7 MiB, 33226752 bytes, 64896 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mtdblock4: 1.4 MiB, 1476608 bytes, 2884 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mtdblock5: 30.3 MiB, 31749632 bytes, 62011 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mtdblock6: 24.3 MiB, 25518080 bytes, 49840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 264191 262144 128M 83 Linux
/dev/mmcblk0p2 264192 526335 262144 128M 83 Linux
/dev/mmcblk0p3 526336 4720639 4194304 2G 83 Linux
/dev/mmcblk0p4 4720640 15523839 10803200 5.2G 5 Extended
/dev/mmcblk0p5 4722688 8916991 4194304 2G 83 Linux
/dev/mmcblk0p6 8919040 13113343 4194304 2G 83 Linux
/dev/mmcblk0p7 13115392 15523839 2408448 1.2G 83 Linux
Disk /dev/sda: 15.2 GiB, 16357785600 bytes, 31948800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x01461b46
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 31948799 31946752 15.2G 83 Linux
root@OpenWrt:/dev# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 6.0M 6.0M 0 100% /rom
tmpfs 61.2M 800.0K 60.4M 1% /tmp
/dev/mtdblock6 24.3M 14.0M 10.3M 58% /overlay
overlayfs:/overlay 24.3M 14.0M 10.3M 58% /
tmpfs 512.0K 0 512.0K 0% /dev
root@OpenWrt:/dev# mount /dev/sda1 /mnt
mount: /mnt: unknown filesystem type ‘ext4’.
—————————————————————
我的挂载老是出现这个情况。不知道咋回事儿。