#!/bin/bash expand_img() { # 检查是否已安装 parted if ! command -v parted &> /dev/null; then echo "parted 未安装,正在安装..." opkg update opkg install parted if ! command -v parted &> /dev/null; then echo "安装 parted 失败,请检查网络连接或软件源配置。" return 1 fi echo "parted 安装成功。" else echo "" fi # 查找当前目录的 .img.gz 文件 img_gz_files=($(ls *.img.gz 2>/dev/null)) # 检查是否有多个 .img.gz 文件 if [ ${#img_gz_files[@]} -gt 1 ]; then echo "当前目录有多个 .img.gz 文件:" for file in "${img_gz_files[@]}"; do echo " - $file" done echo "请删除不需要扩容的img.gz文件,并确保只剩一个 .img.gz 文件。" return 1 elif [ ${#img_gz_files[@]} -eq 0 ]; then echo "未找到 .img.gz 文件。" return 1 fi img_gz="${img_gz_files[0]}" # 提示用户输入扩容大小,默认值为 2000MB read -p "请输入需要扩容的大小(默认 2000MB, 单位 MB): " size size=${size:-2000} # 如果用户没有输入,使用默认值 2000MB # 检查输入的值是否为正整数 if ! [[ "$size" =~ ^[0-9]+$ ]]; then echo "请输入一个有效的数字。" return 1 fi echo "扩展大小设置为 ${size}MB。" # 解压缩镜像文件 echo "解压缩 $img_gz ..." gzip -kd "$img_gz" img_file="${img_gz%.gz}" # 删除原始的 .img.gz 文件 echo "删除原始的 $img_gz ..." rm -f "$img_gz" # 扩展镜像文件的大小 echo "扩展 $img_file 的大小 ..." dd if=/dev/zero bs=1M count="$size" >> "$img_file" # 使用 parted 工具调整分区,并自动输入 Fix 和 OK echo "调整分区 ..." yes | parted "$img_file" <