Jak przenieść partycje rozruchowe i główne na inny dysk

27

Mam dwa dyski na moim komputerze, które mają następującą konfigurację:

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

Niestety dysk 2 zdaje się umierać, ponieważ próba zapisu na nim powoduje błędy, a sprawdzenie ustawień SMART pokazuje smutny stan rzeczy.

Mam dużo miejsca na Dysku 1, więc chciałbym przenieść na niego partycje / i / boot, usunąć Dysk 2 z systemu, wymienić Dysk 2 na nowy, a następnie odwrócić proces.

Wyobrażam sobie, że muszę trochę zaktualizować gruba i muszę się trochę poruszać, ale jestem dość zaskoczony, jak to dokładnie zrobić. Ponieważ jest to mój główny komputer, chcę uważać, aby nie zepsuć rzeczy, aby nie można było uruchomić systemu.

mlissner
źródło
Właśnie to musiałem zrobić. Napisałem blog z pełnymi instrukcjami, jak przenieść partycję root / do / home.
Lucas,

Odpowiedzi:

29

Musisz uruchomić z płyty CD na żywo. Dodaj dla nich partycje na dysk 1, skopiuj całą zawartość, a następnie użyj, sudo blkidaby uzyskać identyfikator UUID każdej partycji. Na nowym dysku 1 / edytuj plik / etc / fstab, aby użyć nowych identyfikatorów UUID, które właśnie sprawdziłeś.

Aktualizacja GRUB zależy od tego, czy jest to GRUB1, czy GRUB2. Jeśli GRUB1, musisz edytować /boot/grub/device.map

Jeśli GRUB2, myślę, że musisz zamontować partycje, tak jak w prawdziwej sytuacji. Na przykład:

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

(Oczywiście, wypełniając wszelkie partycje, na które skopiowałeś rzeczy)

Następnie powiąż mount / proc i / dev w / media / root:

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

Teraz chroot na dysku, aby zmusić GRUB do aktualizacji zgodnie z nowym układem:

sudo chroot /media/root
sudo update-grub

Drugie polecenie spowoduje jedną skargę (choć nie pamiętam, co to jest ...), ale można to zignorować.

Przetestuj to, usuwając zły dysk. Jeśli to nie zadziała, zły dysk powinien nadal być w stanie uruchomić system, ale uważam, że są to wszystkie niezbędne kroki.

maco
źródło
3
FYI dla wszystkich osób przeglądających obecnie, nie dotyczy to ustawień EFI. Musisz /media/root/boot/efimiędzy innymi zamontować .
wjandrea,
1
Musiałem zrobić sudo grub-install /dev/sdaprzedsudo update-grub
William Mortada
5

Jeśli od razu wymienisz dysk, możesz go użyć dd(wypróbowałem go na moim serwerze kilka miesięcy temu i działał jak urok).

Będziesz także potrzebował bootowalnej płyty CD.

  1. Uruchom boot-CD
  2. Zamontuj tylko dysk 1
  3. Uruchom dd if=/dev/sdb1 of=/media/drive1/backuproot.img- sdb1 będący twoją /partycją root ( ). Spowoduje to zapisanie całej partycji w pliku.
    • to samo dla /boot
  4. Wyłącz, wymień dysk, włącz zasilanie
  5. Uruchom dd if=/media/drive1/backuproot.img of=/dev/sdb1- zapisz to.
    • to samo dla /boot

Powyższe spowoduje utworzenie 2 partycji o dokładnie takim samym rozmiarze, jak wcześniej. Konieczne może być dostosowanie grub (sprawdź post makos).

Jeśli chcesz zmienić rozmiar partycji (tak jak ja):

  1. Utwórz 2 partycje na nowym dysku (dla /i /boot; rozmiar, jaki chcesz)
  2. Zamontuj obraz kopii zapasowej: mount /media/drive1/backuproot.img /media/backuproot/
  3. Zamontuj pustą /partycję:mount /dev/sdb1 /media/sdb1/
  4. Skopiuj jego zawartość na nową partycję (nie jestem pewien co do tego polecenia, naprawdę ważne jest zachowanie własności, cp -Rnie zrobię tego!) cp -R --preserve=all /media/backuproot/* /media/sdb1
    • to samo dla /boot/

To powinno to zrobić.

sBlatt
źródło
Okazuje się, że nowy dysk „40 GB”, który próbuję zainstalować, jest mniejszy niż mój obecny dysk „40 GB”. Mam oba połączone i jestem załadowany na liveCD. Czy istnieje prosty sposób, aby po prostu dodać dd ze starego do nowego i nazwać to skończoną transakcją?
mlissner,
Właściwie to rozwiązałem to pytanie. Partycja, która była zbyt duża, była partycją ext4, więc uruchomiłem liveCD i użyłem gparted, aby go trochę zmniejszyć.
mlissner,
4

Moim ostatecznym rozwiązaniem tego było połączenie kilku technik:

  1. Podłączyłem jednocześnie umierający dysk i jego wymianę do komputera.
  2. Nowy dysk był mniejszy niż stary, więc zmniejszyłem partycje na starym za pomocą GParted.
  3. Po wykonaniu tej operacji skopiowałem partycje na stary dysk i wkleiłem je na nowym (również używając GParted).
  4. Następnie dodałem flagę rozruchową do właściwej partycji na nowym dysku, więc było to faktycznie lustro starego dysku.

Wszystko działało dobrze, ale musiałem zaktualizować grub2 zgodnie z instrukcjami tutaj .

Po tym wszystkim, wszystko wydaje się działać.

mlissner
źródło