OPENWRT折腾记录

OPENWRT折腾记录

Sakurairinaqwq Lv2

OPENWRT折腾记录:大量扩容磁盘空间

OPENWRT折腾记录:大量扩容磁盘空间

前几天OP炸了,结果一看发现是OP默认给的1G磁盘内存满了,软重置直接失效,前端调试也报Error。最后只能手动刷了OP,但磁盘空间还是那么点,看了很多网上很多佬的挂载盘方法,但是个人感觉偏麻烦。虽然是X64软路由,但还要兼容科学和存取数据两项工作。那微弱的低压U性能我还是比较害怕爆炸的。

只好去翻文档了,确实是有惊喜。如果你的是旁路由或未接入互联网,你可以尝试以下代码。请注意,执行后若未自动关机,请手动reboot。

未接入互联网

以下是通过手动创建脚本文件来实现根分区扩容的方法。首先,使用cat命令创建必要的配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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

然后执行该脚本

首先安装必要的软件包:

1
2
opkg update
opkg install parted losetup resize2fs blkid

然后执行分区调整脚本:

1
sh /etc/uci-defaults/70-rootpt-resize

完全自动化

如果接入互联网,可直接自动化实现根分区扩容。

安装包体

1
2
opkg update
opkg install parted losetup resize2fs blkid

下载sh

1
wget -U "" -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0"

获取脚本

获取脚本(创建 /etc/uci-defaults/70-rootpt-resize 和 /etc/uci-defaults/80-rootpt-resize,并将它们添加到 /etc/sysupgrade.conf,以便在 sysupgrade 之后重新运行它们)

1
. ./expand-root.sh

调整根分区和文件系统的大小

将调整分区大小、重新启动、调整文件系统大小,然后再次重新启动。

1
sh /etc/uci-defaults/70-rootpt-resize

注意事项

  • 执行过程中系统可能会自动重启两次,确保操作前备份重要数据。
  • 此方法适用于x64架构的OpenWRT软路由,兼容旁路由模式。
  • 如果脚本未自动重启,请手动执行reboot
  • 扩容后,检查磁盘空间是否已增加(使用df -h命令)。如果遇到问题,参考OpenWRT官方文档或社区论坛。
  • 标题: OPENWRT折腾记录
  • 作者: Sakurairinaqwq
  • 创建于 : 2025-09-29 14:16:07
  • 更新于 : 2025-10-19 07:24:04
  • 链接: https://rina.arkn.icu/2025/09/29/OpenwrtExpanding/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论