Não sei por que ainda me presto pra isso (dá uma trabalheira até consertar tudo!), mas me aventurei de novo no mundo da clonagem de discos e configuração de boot. Nisso me lembrei de algumas dicas que esqueci de colocar nos posts anteriores.
Identificar todos os discos e partições
No Linux, use o comando
sudo blkid
para ver todas as suas partições. É muito útil para detectar partições clonadas: os IDs vão estar repetidos e isso pode dar uma grande confusão em diversos sistemas operacionais e durante o boot. Deve ser por isso que a maioria dos tutoriais sugere nunca conectar o disco antigo e o novo ao mesmo tempo, pelo menos não antes de formatar (o que muda os IDs) o antigo quando o novo já estiver funcionando.
Isso também é útil para se achar nas diversas formas de identificar os discos e partições. Em alguns casos estamos acostumados com /dev/sda1, mas essa identificação pode mudar dependendo de onde você conectar cada disco (e vai ser completamente diferente no Grub), então você pode ver o UUID (utilizado mais seguidamente no Linux) e o PARTUUID (utilizado mais seguidamente no Windows).
Nota rápida 1: para alterar esses IDs, use os comandos tune2fs (com a opção -U) e ntfslabel (com a opção --new-serial). Consulte o manual.
Atualizar configurações de boot
No Linux, é indispensável usar
sudo update-grub
Esse comando é conhecido e bem básico, mas menciono aqui para ficar mais completo.
Um problema que eu tive é que não adianta nada o Grub estar atualizado apontando para o novo Windows se dentro da partição do Windows novo (no tal de BCD) ainda há ligações para a instalação antiga no outro disco. O processo de boot vira um ping-pong e você vai parar na instalação antiga. Talvez software mais especializado tome conta disso, mas o que eu usei não me ajudou.
Foi aí que aprendi a usar o bcdedit. Vou dar alguns exemplos.
Para listar sistemas operacionais configurados para boot, digite simplesmente:
bcdedit
na linha de comando, ou
bcdedit /enum ACTIVE
Para listar a mesma coisa, mas mostrando IDs completos em vez de palavras fáceis como {default}, {current}, {bootmgr}, use:
bcdedit /v
ou
bcdedit /enum ACTIVE /v
Listar tudo que estiver cadastrado no BCD (pode ser com /v ou sem /v):
bcdedit /enum ALL
Listar os registros de outra partição, que não é a atual:
bcdedit /store "E:\Boot\BCD"
Essa opção /store é útil para acessar as configurações de um Windows que não é aquele que está executando.
Copiar uma entrada de sistema operacional para editá-la depois:
bcdedit /store "E:\Boot\BCD" /copy {... o id de origem desejado ...} /d "Windows 10 SSD"
O ID gerado será exibido na tela e você poderá editá-lo com:
bcdedit /store "E:\Boot\BCD" /set {... o novo id gerado ...} device partition=E: bcdedit /store "E:\Boot\BCD" /set {... o novo id gerado ...} osdevice partition=E:
Combinando os comandos acima e lendo com atenção a ajuda do bcdedit (ex.: bcdedit /? ou bcdedit /? /set) você já pode alterar o que quiser para apontar para as novas partições. Combinando com o Grub atualizado e com as partições sem IDs repetidos, dá para configurar seu boot de vários jeitos.
Nota rápida 2: também é muito útil aprender a usar a função Load Hive do regedit para editar o registro de um Windows de outra partição. Assim você pode trocar as letras C: e E: uma pela outra, por exemplo. Existem várias explicações de como fazer, uma delas está aqui: https://superuser.com/questions/1167523/installed-a-new-ssd-windows-still-boots-from-the-old-one