diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-10-29 01:41:01 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-10-29 01:41:01 +0800 |
| commit | d8bfc59e2f5dc0728326ae7a143f8fdc113932e2 (patch) | |
| tree | c3b02a8d4d91d730cc21befe2b8dbf6d9b6bee0f /debian-container/lib/container.sh | |
| parent | d9932da9c00fd92aaa0cafa5d6d63a6f8e724ad1 (diff) | |
| download | rutils-d8bfc59e2f5dc0728326ae7a143f8fdc113932e2.tar.gz rutils-d8bfc59e2f5dc0728326ae7a143f8fdc113932e2.tar.xz | |
Add configurable container image sizing with support for creating and resizing ext4 images.
Signed-off-by: Richard Qin <richard.qin.x@gmail.com>
Diffstat (limited to 'debian-container/lib/container.sh')
| -rw-r--r-- | debian-container/lib/container.sh | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/debian-container/lib/container.sh b/debian-container/lib/container.sh index 2c0aaad..eee6d76 100644 --- a/debian-container/lib/container.sh +++ b/debian-container/lib/container.sh @@ -4,6 +4,7 @@ dc_init() { local tarball= + local size=$DC_SIZE while (($# > 0)); do case "$1" in @@ -12,6 +13,11 @@ dc_init() { tarball=$2 shift 2 ;; + --size) + (($# >= 2)) || dc_die '--size 需要一个大小。' + size=$2 + shift 2 + ;; --help|-h) dc_usage return 0 @@ -33,9 +39,7 @@ dc_init() { dc_die "实例已存在:$DC_INSTANCE。请使用 enter 进入,避免覆盖容器数据。" fi - mkdir -p "$DC_INSTANCE_DIR" "$DC_ROOT" - truncate -s 3G "$DC_IMAGE" - mkfs.ext4 -F -q -L DEBIAN_CONTAINER "$DC_IMAGE" + dc_create_image "$size" if [[ -n "$tarball" ]]; then unshare --mount --propagation private -- bash "$DC_SCRIPT" _init "$DC_INSTANCE" "$tarball" else @@ -44,6 +48,32 @@ dc_init() { echo "初始化完成。执行 sudo bash $DC_SCRIPT enter $DC_INSTANCE 进入容器。" } +dc_resize() { + local size= + + while (($# > 0)); do + case "$1" in + --size) + (($# >= 2)) || dc_die '--size 需要一个大小。' + size=$2 + shift 2 + ;; + --help|-h) + dc_usage + return 0 + ;; + *) + dc_die "未知的 resize 选项:$1" + ;; + esac + done + + [[ -n "$size" ]] || dc_die 'resize 必须指定 --size。' + [[ -f "$DC_IMAGE" ]] || dc_die '没有找到镜像,请先运行 init。' + dc_resize_image "$size" + echo "实例已扩容:$DC_INSTANCE,新的大小为 $size" +} + dc_init_rootfs() { local tarball=${1:-} local -a include_packages=() @@ -236,9 +266,8 @@ dc_status() { echo "目录:$DC_INSTANCE_DIR" if [[ -f "$DC_IMAGE" ]]; then echo '镜像:存在' - else - echo '镜像:不存在' fi + dc_status_image } dc_delete() { |
