#!/bin/bash
echo "--- Đang thiết lập Auto Resize Service ---"

# 1. Tạo script thực thi tại /usr/local/bin/auto-resize.sh
cat > /usr/local/bin/auto-resize.sh << '_EOF_'
#!/bin/bash
set -ex

# KHẮC PHỤC LỖI: Sử dụng /run thay vì /tmp vì /tmp có thể chưa sẵn sàng lúc boot sớm
export TMPDIR=/run/growpart_tmp
mkdir -p $TMPDIR

# Tìm phân vùng đang mount vào /
ROOT_PART=$(findmnt -n -o SOURCE / | cut -d'[' -f1)

# Lấy tên ổ đĩa (ví dụ sda)
DISK=$(lsblk -no PKNAME $ROOT_PART)

# Lấy số thứ tự phân vùng (ví dụ 1)
PART_NUM=$(echo $ROOT_PART | grep -o '[0-9]*$')

echo "Đang thực hiện growpart cho /dev/$DISK phân vùng $PART_NUM..."

# Thực hiện mở rộng bảng phân vùng
growpart /dev/$DISK $PART_NUM || true

# Kiểm tra loại FS để dùng lệnh tương ứng
FS_TYPE=$(findmnt -n -o FSTYPE /)

if [ "$FS_TYPE" == "xfs" ]; then
    xfs_growfs /
elif [ "$FS_TYPE" == "btrfs" ]; then
    # Fedora mặc định dùng Btrfs, phải dùng lệnh này
    btrfs filesystem resize max /
else
    # Dành cho EXT4
    resize2fs $ROOT_PART
fi

# Dọn dẹp thư mục tạm
rm -rf $TMPDIR
_EOF_

# Cấp quyền thực thi cho script
chmod +x /usr/local/bin/auto-resize.sh

# 2. Tạo file cấu hình Systemd Service
cat > /etc/systemd/system/auto-resize.service << '_EOF_'
[Unit]
Description=Auto Resize Root Partition
# Chạy cực sớm trước các dịch vụ quan trọng
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target
Before=sysinit.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/auto-resize.sh
RemainAfterExit=yes

[Install]
WantedBy=sysinit.target
_EOF_

# 3. Nạp lại cấu hình và kích hoạt service
systemctl daemon-reload
systemctl enable auto-resize.service

echo "--------------------------------------------------------"
echo "THÀNH CÔNG: Service đã được cài đặt."
echo "Hệ thống sẽ tự động resize phân vùng root ở lần boot tới."
echo "--------------------------------------------------------"
