挂载OpenWrt系统到外部设备

背景 一般路由器提供的跟分区“/”比较小,当安装几个软件后就会导致磁盘空间不足,为了扩容我们可以挂载外部的存储设备,例如U盘、SD卡、移动硬盘等。下面我以GL.iNet-AR750路由器为例,演示如何挂载外部SD卡。首先你需要确保你的外部设备被正确的分区,我的SD卡上面被分了3个分区,分别存储SWAP、系统和其他文件。如果没有被正确的分区,请安装fdisk然后分区。SWAP需要文件系统类型为swap、存储文件的文件系统选择ext4。下面是我已经分区好后的设备名称以及他们的用途: /dev/sda1 SWAP SWAP /dev/sda2 / 系统 /dev/sda3 /mnt/sda3 其他 我们首先用mount命令查看已经挂载的设备和挂载点: 可以看到目前跟分区“/”由设备/dev/mtdblock6挂载,我们接下来需要把它替换成/dev/sda2。 操作 1. 安装依赖 opkg update opkg install fdisk (可选,如果你没有分区) opkg install block-mount 2. 拷贝系统到SD卡 注意,/mnt/sda2是你SD卡上用来存储系统的路径,依据你的实际情况修改。 3. 编辑ROM上的fstab文件 使用命令vi /etc/config/fstab修改文件的内容,这个fstab存储在路由器的ROM上而不是SD卡上。下面是我的路由器上面fstab中的内容,按照你自己的情况编辑,确保option target ‘/mnt/sda2’下面的option enabled设置为1,并且把挂载到/mnt/sda2的目录更改为/,然后增加两个option。然后删除swap和另一个mount配置,只保留global和挂载到/mnt/sda2的那一个配置。 修改前: 修改后: 如果你不小心搞坏了fstab文件,可以使用命令block detect > /etc/config/fstab来重新生成。 4. 重启后修改SD卡的fstab文件 重启后,修改的fstab将会生效。注意,现在我们有了两份fstab文件,一份存储在路由器的ROM中,另一份存储在SD卡中。系统首先读取ROM上的fstab文件来挂载块设备,然后会读取SD卡的fstab挂载块设备。因此当系统启动完成后,我们还需要修改SD卡的/etc/config/fstab文件。 修改前: 修改后: 然后再次重启系统,我们的修改已经彻底完成。使用df -h命令查看一挂载的分区和容量: 使用free命令查看SWAP: 5. 优化 – 修改swappness 我们希望当内存容量达到很高的阈值才使用swap,以防止系统因为频繁换页导致卡顿。修改文件/etc/sysctl.conf,追加vm.swappiness =…

Read more