#!/bin/bash
# INSPECAO SOMENTE-LEITURA. Nao altera o disco. Mostra o GPT atual e o MBR que
# o gpt_to_mbr_layout.py geraria, para conferir ANTES do zap-all irreversivel.
set -e
QCOW2="${1:?uso: $0 <qcow2>}"
NBD=/dev/nbd0
modprobe nbd max_part=16 2>/dev/null || true
qemu-nbd --disconnect $NBD 2>/dev/null || true
sleep 1
qemu-nbd --read-only --connect=$NBD "$QCOW2"
sleep 2
trap 'qemu-nbd --disconnect $NBD >/dev/null 2>&1 || true' EXIT

echo "########## GPT atual ##########"
sgdisk --print $NBD | tee /tmp/inspect-sgdisk.txt

echo
echo "########## quantas particoes o sgdisk viu ##########"
TOT=$(grep -cE '^\s+[0-9]+\s+[0-9]+' /tmp/inspect-sgdisk.txt || echo 0)
echo "total no GPT: $TOT"
[ "$TOT" -gt 4 ] && echo ">>> ATENCAO: mais de 4 particoes. O parser corta em 4 e pode DESCARTAR uma."

echo
echo "########## MBR que seria aplicado ##########"
python3 /NFS01/migrate/gpt_to_mbr_layout.py < /tmp/inspect-sgdisk.txt | tee /tmp/inspect-mbr.txt
echo
echo "linhas de particao no MBR proposto: $(grep -c '^/dev/nbd0p' /tmp/inspect-mbr.txt || echo 0)"
echo "marcada bootable: $(grep 'bootable' /tmp/inspect-mbr.txt || echo NENHUMA)"

echo
echo "########## filesystems reais (confere quem e o Windows) ##########"
partprobe $NBD 2>/dev/null || true; sleep 2
for P in ${NBD}p*; do
  [ -e "$P" ] || continue
  echo "  $P  tipo=$(blkid -o value -s TYPE $P 2>/dev/null || echo ?)  label=$(blkid -o value -s LABEL $P 2>/dev/null || echo -)  tam=$(( $(blockdev --getsize64 $P 2>/dev/null || echo 0) / 1073741824 ))GiB"
done
