OneKeyExpand/expand.sh

75 lines
2.0 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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" <<EOF
print
resizepart 2 100%
print
quit
EOF
echo "操作完成镜像文件已扩展。请输入【ll -h】查看img大小"
}
expand_img