扩展 OpenWrt 根分区和文件系统

本文将指导你如何扩展 OpenWrt 的根分区和文件系统。通过以下步骤,你可以充分利用存储空间,从而提升系统性能。


介绍

在某些情况下,OpenWrt 系统的根分区可能没有使用所有可用的存储空间。例如,在设备的存储空间较大时,默认的根分区大小可能不足以支持安装额外的软件包或存储数据。

本指南将帮助你自动识别根分区并将其扩展,以提高系统的存储能力。


特点

  • 支持的镜像类型:该方法支持 ext4squashfs 镜像类型。
  • 自动识别:系统将自动识别当前根分区和文件系统。
  • 扩展能力:能够使用未分配的存储空间扩展根分区和文件系统。
  • 固件升级保留:在固件升级后,扩展脚本会被保留并自动运行。
  • 简单快捷:用户可以通过简单的命令快速完成扩展过程。

方式〇:懒人操作

通过以下命令合并所有步骤:

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 && \
sh /etc/uci-defaults/70-rootpt-resize

说明

  • 该命令会执行以下操作:
    1. 更新软件包列表。
    2. 安装 partedlosetupresize2fs
    3. 下载自动化扩展脚本。
    4. 运行下载的脚本。
    5. 手动执行扩展根分区脚本以确保更改生效。

通过此命令,你可以高效完成扩展操作,避免多次输入命令的麻烦。


方式 1:自动化操作

对于希望快速完成操作的用户,自动化脚本是最简便的方法。

第一步:安装必要的软件包

在进行扩展之前,需要安装以下工具:

  • parted:用于调整分区大小。
  • losetup:用于设置和管理循环设备。
  • resize2fs:用于扩展文件系统。

操作步骤

  1. 打开命令行界面(如通过SSH连接到OpenWrt设备)。

  2. 输入以下命令更新软件包列表并安装必要工具:

    opkg update
    opkg install parted losetup resize2fs
    

第二步:下载并执行自动化扩展脚本

  1. 下载扩展脚本

    wget -U "" -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0"
    
  2. 执行扩展脚本

    . ./expand-root.sh
    

    脚本会自动检测当前的根分区和文件系统,并使用可用的空闲空间进行扩展。

  3. 执行扩展根分区脚本

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

    该命令确保更改生效,系统将重启以应用扩展。


方式 2:手动操作

对于熟悉命令行操作的用户,可以按照以下步骤手动扩展根分区和文件系统。

第一步:配置启动脚本

手动操作涉及创建两个脚本,分别用于扩展根分区和文件系统。这些脚本将在系统启动时自动执行。

1. 创建扩展根分区的脚本
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 调整根分区大小至 100%
    parted -f -s "${ROOT_DISK}" resizepart "${ROOT_PART}" 100%
    
    # 重新挂载根文件系统
    mount_root done
    # 创建标志文件,表示根分区已经扩展
    touch /etc/rootpt-resize
    # 重启系统以应用更改
    reboot
fi
exit 1
EOF
2. 创建扩展根文件系统的脚本
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##*/}"
    
    # 获取 overlay 文件系统的设备
    LOOP_DEV="$(awk -e '$5=="/overlay"{print $9}' /proc/self/mountinfo)"
    
    # 如果 LOOP_DEV 为空,分配一个可用的 loop 设备
    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
3. 确保脚本在固件升级后保留

运行以下命令,将这两个脚本添加到系统升级配置文件中:

cat << "EOF" >> /etc/sysupgrade.conf
/etc/uci-defaults/70-rootpt-resize
/etc/uci-defaults/80-rootfs-resize
EOF

第二步:手动执行扩展

1. 扩展根分区

执行扩展根分区脚本:

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

系统会自动重启以应用更改。


总结

无论选择 自动化脚本 还是 手动操作,扩展完成后,OpenWrt 系统将能够使用更多的存储空间。这对于安装更多软件包或存储更多数据非常重要。

  • 自动化操作:适合希望快速完成任务的用户,操作简单。
  • 手动操作:适合对整个过程感兴趣或希望定制化操作的用户。

希望这篇指南能帮助你顺利完成 OpenWrt 根分区和文件系统的扩展操作。如果遇到问题,请随时寻求帮助或查阅相关资料。

### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值