Migrar disco com Arch Linux

Veja como migrar/atualizar a sua instalação Arch Linux usando o pendrive de instalação do Arch

#arch, #linux

Vou usar o exemplo da minha máquina, então, claro que se estiver migrando do HD /dev/sdb para o /dev/sdc modifique-os de acordo, não me responsabilizo caso você perca TODOS OS SEUS ARQUIVOS.

Eu fiz todos os processos usando um pendrive de instalação do Arch, assim todos os passos seguintes foram feitos usando o usuário root.

Primeiro, crie a partição que será de destino, no meu caso, usei o cfdisk e criei o sistema de arquivo assim:

# mkfs.ext4 -U aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /dev/sdb2

É importante usar o mesmo UUID do HD anterior para que não seja necessário mudar as configuraões em /etc, mas se você souber quais são os arquivos que devem ser modificados, não haverá problema algum.

Montei a partição anterior em /last-root:

# mkdir /last-root
# mount -t ext4 /dev/sda2 /last-root

E a partição de destino em /next-root:

# mkdir /next-root
# mount -e ext4 /dev/sdb2 /next-root

Com isso feito usei o rsync, desta forma:

# rsync -a --delete -xHAXW /last-root/ /next-root

ATENÇÃO: digite o comando rsync tal qual pois, por exemplo: se esquecer o / do /last-root pode, e dará, errado.

A flags do rsync:

  • -a, é para archive, i. e., arquivar;
  • --delete, faz com que os arquivos apagados em /last-root/ sejam também apagados em /next-root (isso é útil caso inicie o processo, mas seja necessário parar por algum motivo qualquer para voltar a usar o HD antigo);
  • -W, é para copiar arquivos inteiros, por padrão o rsync copia apenas os diffs, mas como não estamos trabalhando com sincronização que precisa ser feito regularmente ou trabalhando via rede…;
  • -H, preserva hardlinks;
  • -A, preserva ACLs;
  • -X, preserva atributos extendidos;

Entrei no /next-root com o comando arch-chroot:

# arch-chroot /next-root

E executei o comando para reinstalar os pacotes:

# pacman -S $(pacman -Qnq)

A primeira vez que eu migrei de HD tive problemas com as permissões de alguns comandos, então mandei apenas reinstalar o comando que deu problema e tudo voltou ao normal, desta vez estou preferindo reinstalar tudo.

Esse último comando mantem quais pacotes foram explicitamente instalados.

Ainda dentro do chroot, reinstalei o grub:

# grub-install --recheck /dev/sdb

Como eu usei a mesma UUID para o novo disco, certifique-se de que removeu o HD anterior (ou que formatou, gerando assim uma outra UUID).

E, se assim como no meu desktop tiver mais de um HD, certifique-se também de escolher o novo HD no momento do boot.

Referências