Como mover partições de inicialização e raiz para outra unidade

27

Eu tenho duas unidades no meu computador com a seguinte configuração:

Drive 1: 160GB, /home
Drive 2: 40GB, /boot and /

Infelizmente, a unidade 2 parece estar acabando, porque tentar escrever nela está me causando erros, e verificar as configurações SMART mostra um triste estado de coisas.

Como tenho bastante espaço no Drive 1, o que eu gostaria de fazer é mover as partições de inicialização / e / para ele, remover o Drive 2 do sistema, substituir o Drive 2 por um novo e reverter o processo.

Eu imagino que preciso fazer algumas atualizações para o grub e preciso mudar algumas coisas, mas estou bastante confuso sobre como fazer exatamente isso. Como este é o meu computador principal, quero ter cuidado para não atrapalhar as coisas, para não poder inicializar.

mlissner
fonte
Isso é exatamente o que eu tinha que fazer também. Eu escrevi um blog com instruções completas sobre como mover a partição raiz / para / home.
Lucas

Respostas:

29

Você precisará inicializar a partir de um CD ao vivo. Adicione partições para eles no disco 1, copie todo o conteúdo e use sudo blkidpara obter o UUID de cada partição. No novo disco / 1, edite o / etc / fstab para usar os novos UUIDs que você acabou de pesquisar.

A atualização do GRUB depende se é GRUB1 ou GRUB2. Se o GRUB1, você precisará editar /boot/grub/device.map

Se o GRUB2, acho que você precisa montar suas partições como elas seriam em uma situação real. Por exemplo:

sudo mkdir /media/root
sudo mount /dev/sda1 /media/root
sudo mount /dev/sda2 /media/root/boot
sudo mount /dev/sda3 /media/root/home

(Preencher as partições reais para as quais você copiou as coisas, é claro)

Em seguida, vincule mount / proc e / dev no / media / root:

sudo mount -B /proc /media/root/proc
sudo mount -B /dev /media/root/dev
sudo mount -B /sys /media/root/sys

Agora faça o chroot na unidade para que você possa forçar o GRUB a se atualizar de acordo com o novo layout:

sudo chroot /media/root
sudo update-grub

O segundo comando fará uma queixa (eu esqueço o que é ...), mas não há problema em ignorar.

Teste-o removendo a unidade defeituosa. Se não funcionar, a unidade defeituosa ainda poderá inicializar o sistema, mas acredito que estas são todas as etapas necessárias.

maco
fonte
3
Para quem está vendo isso atualmente, isso não se aplica às configurações da EFI. Você precisa montar /media/root/boot/efi, entre outras coisas.
Wjandrea
11
Eu precisava de um sudo grub-install /dev/sdaantes dosudo update-grub
William Mortada
5

Se você substituir a unidade imediatamente, poderá usá-la dd(tentei no meu servidor há alguns meses e funcionou como um encanto).

Você precisará de um CD de inicialização para isso também.

  1. Iniciar CD de inicialização
  2. Monte apenas o Drive 1
  3. Execute dd if=/dev/sdb1 of=/media/drive1/backuproot.img- sdb1 sendo sua /partição root ( ). Isso salvará a partição inteira em um arquivo.
    • o mesmo para /boot
  4. Desligue, substitua o disco, ligue
  5. Executar dd if=/media/drive1/backuproot.img of=/dev/sdb1- escreva de volta.
    • o mesmo para /boot

O acima irá criar 2 partições com exatamente o mesmo tamanho que tinham antes. Pode ser necessário ajustar o grub (verifique a postagem do macos).

Se você deseja redimensionar suas partições (como eu fiz):

  1. Crie 2 partições na nova unidade (para /e /boot; tamanho que desejar)
  2. Monte a imagem de backup: mount /media/drive1/backuproot.img /media/backuproot/
  3. Monte a /partição vazia :mount /dev/sdb1 /media/sdb1/
  4. Copie seu conteúdo para a nova partição (não tenho certeza sobre esse comando, é realmente importante preservar a propriedade, cp -Rnão é o caso!) cp -R --preserve=all /media/backuproot/* /media/sdb1
    • o mesmo para /boot/

Isso deve servir.

sBlatt
fonte
Acontece que a nova unidade de "40GB" que estou tentando instalar é menor que a minha atual unidade de "40GB". Eu tenho os dois conectados e sou inicializado em um liveCD. Existe uma maneira fácil de apenas mudar do antigo para o novo e chamá-lo de acordo?
mlissner
Na verdade, eu resolvi essa questão. A partição que era muito grande era uma partição ext4, então eu inicializei um liveCD e usei o gparted para encolhê-lo um pouco.
mlissner
4

Minha solução final para isso foi uma combinação de várias técnicas:

  1. Conectei a unidade que estava morrendo e a sua substituição no computador simultaneamente.
  2. A nova unidade era menor que a antiga, então encolhi as partições no antigo usando o GParted.
  3. Depois disso, copiei as partições no disco antigo e colei no novo (também usando GParted).
  4. Em seguida, adicionei o sinalizador de inicialização à partição correta na nova unidade, para que fosse efetivamente um espelho da unidade antiga.

Tudo funcionou bem, mas eu precisava atualizar o grub2 de acordo com as instruções aqui .

Depois de tudo isso, as coisas parecem funcionar.

mlissner
fonte