OpenWrt官方分区扩容脚本
由于大部分运行OpenWrt的设备都是硬路由这种嵌入式硬件,内置的存储空间都小的可怜。OpenWrt在设计之初就没有考虑会在大容量存储的设备里运行,所以OpenWrt在x86设备上运行时,即便用户设备拥有大容量SSD硬盘,OpenWrt默认也只会使用1G左右的存储空间作为主分区使用,区区1G的容量放一个Docker镜像就满了,这对于喜欢安装大量插件和Docker容器的用户来说非常不便。虽然网络上有各种各样的奇淫技巧和插件,但是都会有一些缺陷,最终博主找到了一个完美的解决方案。
偶然间在OpenWrt官方文档中发现了官方自动扩容分区的脚本,实际测试下来非常好用,ext4和squashfs分区类型都支持,运行后会自动将硬盘剩下的全部空闲容量都分配到OpenWrt主分区,并且没有任何的副作用,并且这种非分区挂载类的方法即便是重启也不会失效。
第一种方案,对于不方便访问外网下载文件的用户,可以手动创建脚本并运行。
首先SSH进入OpenWrt的命令行界面,然后复制以下脚本代码:
# Configure startup scripts
cat << "EOF" > /etc/uci-defaults/70-rootpt-resize
if [ ! -e /etc/rootpt-resize ] \
&& type parted > /dev/null \
&& lock -n /var/lock/root-resize
then
ROOT_BLK="$(readlink -f /sys/dev/block/"$(awk -e \
'$9=="/dev/root"{print $3}' /proc/self/mountinfo)")"
ROOT_DISK="/dev/$(basename "${ROOT_BLK%/*}")"
ROOT_PART="${ROOT_BLK##*[^0-9]}"
parted -f -s "${ROOT_DISK}" \
resizepart "${ROOT_PART}" 100%
mount_root done
touch /etc/rootpt-resize
if [ -e /boot/cmdline.txt ]
then
NEW_UUID=`blkid ${ROOT_DISK}p${ROOT_PART} | sed -n 's/.*PARTUUID="\([^"]*\)".*/\1/p'`
sed -i "s/PARTUUID=[^ ]*/PARTUUID=${NEW_UUID}/" /boot/cmdline.txt
fi
reboot
fi
exit 1
EOF
cat << "EOF" > /etc/uci-defaults/80-rootfs-resize
if [ ! -e /etc/rootfs-resize ] \
&& [ -e /etc/rootpt-resize ] \
&& type losetup > /dev/null \
&& type resize2fs > /dev/null \
&& lock -n /var/lock/root-resize
then
ROOT_BLK="$(readlink -f /sys/dev/block/"$(awk -e \
'$9=="/dev/root"{print $3}' /proc/self/mountinfo)")"
ROOT_DEV="/dev/${ROOT_BLK##*/}"
LOOP_DEV="$(awk -e '$5=="/overlay"{print $9}' \
/proc/self/mountinfo)"
if [ -z "${LOOP_DEV}" ]
then
LOOP_DEV="$(losetup -f)"
losetup "${LOOP_DEV}" "${ROOT_DEV}"
fi
resize2fs -f "${LOOP_DEV}"
mount_root done
touch /etc/rootfs-resize
reboot
fi
exit 1
EOF
cat << "EOF" >> /etc/sysupgrade.conf
/etc/uci-defaults/70-rootpt-resize
/etc/uci-defaults/80-rootfs-resize
EOF
然后输入以下命令行进行执行操作:
vi expand-root.sh
接着在弹出的vim文本编辑器中将上面复制的脚本粘贴进去并保存退出,然后接着运行以下命令运行脚本:
opkg update
opkg install parted losetup resize2fs
. ./expand-root.sh
到此为止,你的OpenWrt会进行重启,等待重启完毕,此时就会发现你的分区已经完成了扩容。
第二种方案针对可以正常访问外网的用户,直接下载脚本并运行。
首先SSH进入OpenWrt的命令行界面,然后依次输入以下命令行并运行:
opkg update
opkg install parted losetup resize2fs
wget -U "" -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0"
. ./expand-root.sh
到此为止,你的OpenWrt会进行重启,等待重启完毕,此时就会发现你的分区已经完成了扩容。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果