扩展 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 根分区和文件系统的扩展操作。如果遇到问题,请随时寻求帮助或查阅相关资料。

参考资源链接:[openwrt知识总结 (openwrt 文件系统)](https://wenku.youkuaiyun.com/doc/4k9xcidp64?utm_source=wenku_answer2doc_content) 要在OpenWrt扩展文件系统以支持大容量USB存储设备,首先需要理解OpenWrt文件系统的结构工作原理。在OpenWrt中,默认的文件系统可能是ext4或其他类型,但对于大容量存储设备来说,需要确保文件系统支持大于2TB的分区。以下是详细步骤: 1. 连接USB存储设备到OpenWrt设备。 2. 使用`fdisk`或`blkid`命令识别新设备。 3. 如果是新设备,首先需要对其进行分区。建议使用`gpt`分区表而不是传统的`msdos`分区表,因为`gpt`支持大于2TB的硬盘分区。可以使用`sgdisk`工具来创建`gpt`分区表分区。例如:`sgdisk -n 0:: -t 0:: /dev/sda`。 4. 接下来,需要格式化分区为支持大容量的文件系统,如ext4。可以使用`mkfs.ext4`命令来完成。例如:`mkfs.ext4 -T largefile /dev/sda1`。 5. 创建挂载点,并将分区挂载到该点。例如:`mkdir /mnt/usbdrive` `mount /dev/sda1 /mnt/usbdrive`。 6. 为了使文件系统在重启后能够自动挂载,需要编辑`/etc/config/fstab`文件,添加自动挂载的配置。 在这个过程中,你可能会遇到不同的问题,如分区表不支持、文件系统创建失败等。为了更深入地理解掌握这些操作,建议参考《openwrt知识总结 (openwrt 文件系统)》。这份资料详细介绍了OpenWrt文件系统相关知识,包括不同文件系统的特性、配置方法以及常见的问题解决方案。 如果你已经成功扩展文件系统,并希望进一步深入学习如何管理OpenWrt系统中的软件包系统优化,或者了解更高级的自定义开发技能,那么《openwrt知识总结 (openwrt 文件系统)》这本书将是你宝贵的学习资源。它提供了全面而深入的知识,帮助你成为一个更加熟练的OpenWrt用户开发者。 参考资源链接:[openwrt知识总结 (openwrt 文件系统)](https://wenku.youkuaiyun.com/doc/4k9xcidp64?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值