#!/usr/bin/env bash
# ============================================================
#  XHCOS Lite — Wyse 3040 / 通用 eMMC 无鼠标自动安装
#  路线：OEM 磁盘镜像式（rsync 当前 live 系统 -> eMMC），
#        不需要 Calamares、不需要鼠标。键盘即可完成。
#
#  用法（全部键盘）：
#    交互：  sudo xhcos-autoinstall
#    全自动：sudo xhcos-autoinstall --yes   （配合 grub 内核参数 xhcos.autoinstall 自动触发）
#
#  目标盘自动探测优先级：mmcblk0 > mmcblk1 > sda > nvme0n1
#  （Wyse 3040 的 eMMC 是 /dev/mmcblk0）
# ============================================================
set -euo pipefail

YES=0
[ "${1:-}" = "--yes" ] && YES=1

TARGET=""
for d in /dev/mmcblk0 /dev/mmcblk1 /dev/sda /dev/nvme0n1; do
  [ -b "$d" ] || continue
  TARGET="$d"; break
done
[ -n "$TARGET" ] || { echo "!! 找不到目标磁盘（mmcblk0/sda/nvme0n1 均不存在）"; exit 1; }

echo "==> 目标磁盘: $TARGET"

if [ "$YES" -ne 1 ]; then
  read -rp "将清空 $TARGET 并安装 XHCOS Lite，输入 yes 继续: " GO
  [ "$GO" = "yes" ] || { echo "已取消。"; exit 1; }
fi

# ---- 分区：GPT + ESP(512M) + 单 ext4（不建 swap 分区，用 zram）----
echo "==> 分区 $TARGET ..."
parted -s "$TARGET" mklabel gpt
parted -s "$TARGET" mkpart ESP fat32 1MiB 513MiB
parted -s "$TARGET" set 1 esp on
parted -s "$TARGET" mkpart XHCOS ext4 513MiB 100%
# 让内核重读分区表
partprobe "$TARGET" 2>/dev/null || sleep 3

# eMMC/mmcblk 用 p 后缀（mmcblk0p1）；sda/nvme 用无 p 后缀（sda1）
if [[ "$TARGET" == *mmcblk* ]]; then
  ESP="${TARGET}p1"; ROOT="${TARGET}p2"
else
  ESP="${TARGET}1"; ROOT="${TARGET}2"
fi

echo "==> 格式化 ..."
mkfs.vfat -F32 -n XHCOS_EFI "$ESP"
mkfs.ext4 -F -L XHCOS "$ROOT"

mkdir -p /mnt/xhcos-tgt
mount "$ROOT" /mnt/xhcos-tgt

# ---- 复制当前 live 系统（排除虚拟/挂载点）----
echo "==> rsync 系统文件（约 3-4GB，8GB eMMC 可装下）..."
rsync -aAX --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found,/swapfile,/opt/xhcos/xhcos-autoinstall.sh} \
  / /mnt/xhcos-tgt/

# ---- fstab ----
ROOT_UUID=$(blkid -s UUID -o value "$ROOT")
ESP_UUID=$(blkid -s UUID -o value "$ESP")
cat > /mnt/xhcos-tgt/etc/fstab <<FST
# XHCOS Lite (Wyse 3040)
UUID=$ROOT_UUID / ext4 defaults,noatime 0 1
UUID=$ESP_UUID /boot/efi vfat umask=0077 0 2
tmpfs /tmp tmpfs defaults,noatime,size=512M 0 0
FST

mkdir -p /mnt/xhcos-tgt/boot/efi
mount "$ESP" /mnt/xhcos-tgt/boot/efi

# ---- 绑定 + 装 GRUB（UEFI）----
for m in proc sys dev dev/pts run; do mount --bind /$m /mnt/xhcos-tgt/$m; done
echo "==> grub-install ..."
chroot /mnt/xhcos-tgt grub-install --target=x86_64-efi \
  --efi-directory=/boot/efi --bootloader-id=XHCOS --removable 2>&1 | tail -3 || true
chroot /mnt/xhcos-tgt update-grub 2>&1 | tail -3 || true

# 装好后移除自动安装触发器，避免下次启动又格式化自己
rm -f /mnt/xhcos-tgt/etc/systemd/system/xhcos-autoinstall.service

umount -R /mnt/xhcos-tgt 2>/dev/null || true
echo "✅ 安装完成。取出 U 盘，重启即可进入 XHCOS Lite（8GB eMMC，单 ext4 + zram 交换）。"
