Przenoszenie systemu z jednego dysku na drugi

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

Oryginalny wpis pochodzi z blogu Qkiz.pl i jego autorem jest QkiZ.

Gdy wymieniasz dysk twardy zazwyczaj wiąże się to z ponowną instalacją systemu na nowym dysku. Pokaże sposób jak uniknąć ponownej instalacji i przenieść system operacyjny z jednego dysku na drugi bez uszczerbku na jego zdrowiu.
Operacja będzie prosta, ale może trochę potrwać. Wszystko zależy od tego ile nasz system operacyjny zajmuje miejsca. Zanim zaczniemy cokolwiek robić musimy przygotować sobie dwie rzeczy: podłączyć nowy dysk twardy i przygotować live najlepiej na pendrivie. Nowy dysk twardy dobrze jest podpiąć w miejsce starego, a stary przesunąć gdzieś obok (mam na myśli kanały SATA). Gdy zamienimy miejscami dyski i będziemy próbowali wystartować z dysków zapewne system się nie uruchomi. Gdybyśmy czegoś zapomnieli zrobić, zawsze możemy dyski zamienić miejscami (kanałami SATA).
Gdy zamieniliśmy miejscami dyski, wkładamy pendriva z live’m i botujemy z niego. Gdy system wstanie za pomocą gparted lub shell’owych narzędzi przygotowujemy nowy dysk twardy, czyli tworzymy partycje jak nam pasuje. Gdy to zrobimy montujemy partycje ze starego dysku i nowego w stworzonych punktach montowania. I teraz najzwyczajniej w świecie kopiujemy pliki. Możemy to zrobić za pomocą Gnome’a (menedżer plików musi być uruchomiony z uprawnieniami root’a) lub rsync’a. Rsync to standardowe narzędzie wchodzące w skład każdej szanującej się dystrybucji i polecam je do wykonania tego żmudnego zadania.

rsync -avx <katalog źródłowy> <katalog docelowy>

Za katalog źródłowy podajemy punkt montowania partycji ze starego dysku, a za katalog docelowy podajemy punkt montowania analogicznej partycji na nowym dysku. Jeśli zachowujemy taką samą strukturę partycji na nowym dysku to kopiowanie nie powinno stwarzać nam problemów. Jeśli chcemy zastosować nową strukturę tworząc więcej partycji aby mieć więcej punktów montowania to musimy pamiętać odpowiednim skopiowaniu danych. W takiej sytuacji zanim zaczniemy cokolwiek robić musimy się zastanowić co gdzie wyląduje z starego dysku. Tutaj omawiam sytuację, gdy odtwarzamy taką samą strukturę.
Gdy skopiujemy wszystkie dane na nowy dysk, na partycji (na docelowym dysku) gdzie znajduje się katalog /etc musimy wyedytować plik fstab. Jeśli mamy do czynienia z Ubuntu to partycje są rozpoznawane po numerze UUID. Numery UUID poszczególnych partycji uzyskujemy za pomocą polecenia:

sudo blkid

Polecenie wyświetli nam pliki urządzeń (np. /dev/sda1), numer UUID i etykietę partycji jeśli jest. W pliku fstab są dane ze starego dysku. Trzeba podmienić je danymi nowego dysku. Jeśli fstab używa numer UUID to trzeba je wpisać. Musimy wiedzieć który plik z katalogu /dev należy do której partycji i którego dysku. To ważne, musimy wiedzieć co robimy inaczej system nie wstanie po rebocie. Jeśli zamierzamy zostawić stary dysk i chcemy aby system automatycznie montował stare partycje trzeba je dodać do fstab.
Gdy zakończymy edycję fstab trzeba będzie na nowym dysku w MBR zainstalować grub’a. Zakładam że używacie GRUB2 i jeszcze nie odmontowaliśmy głównego systemu plików z nowego dysku. Załóżmy że główny system plików to /dev/sda1 z punktem montowania w /media/sda1. GRUB’ego instalujemy następującym poleceniem:

sudo grub-install --root-directory=/media/sda1 /dev/sda

Musimy dać parametr root-directory ponieważ grub-install chce się dostać do katalogu /boot na docelowym nowym dysku. Po zainstalowaniu GRUB’a w MBR trzeba zmienić jego konfigurację. We wspomnianym katalogu /boot/grub/ na partycji z głównym systemem plików jest plik grub.cfg (wg powyższego przykładu plik znajduje się w /media/sda1/boot/grub/grub.cfg). W nim znajduje się jeszcze stary numer UUID partycji z głównym systemem plików. Najlepiej odpalić gedit’a i za pomocą ‚znajdź i zamień’ podmienić stary UUID nowym z polecenia blkid.
Zostało jeszcze ustalić w zainstalowanym systemie gdzie znajduje się na dysku partycja swap. Wchodzimy na główny system plików na nowym dysku (w poprzednim przykładzie był to /dev/sda1 z punktem montowania /media/sda1). Wg przykładu wchodzimy do: /media/sda1/etc/initramfs-tools/conf.d/. W tym katalogu jest plik resume. Edytujemy go. W moim przypadku wyglądał on tak:

RESUME=UUID=c04cc3a9-a82d-40d1-9ef0-5b7cb22da251

Musimy wprowadzić numer UUID nowej partycji robiącej za swap na nowym dysku. Znów musimy użyć blkid aby się dowiedzieć jaki jest ten numer. Podmieniamy numer UUID numerem nowej partycji swap, zapisujemy i wychodzimy. Teraz w konsoli logujemy się do zainstalowanego systemu za pomocą polecenia (używając tego samego przykładu):

sudo chroot /media/sda1

Teraz jesteśmy root’em na systemie na nowym dysku. Aktualizujemy plik z ramdyskiem. Kolejne polecenie:

update-initramfs -u

Polecenie to sprawi że dysk trochę popracuje. Trzeba będzie chwilę poczekać. Gdy skończy wylogowujemy się z systemu który jest na dysku wpisując po prostu exit.
Sugeruje wyciągnąć lub rozłączyć stary dysk, aby mieć pewność, że komputer startuje z nowego dysku i że niczego nie pomyliliśmy. Jeśli wykonaliśmy wszystko tak jak w tym tekście i nie było błędów podczas wykonywania poszczególnych poleceń powinien nam się załadować system z nowego dysku. W razie problemów możemy podmienić stary dysk z powrotem i spróbować jeszcze raz.

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • eMcE

    Clonezilla w praktyce robi to samo ;)

  • andersik

    Mam problem, po wykonani krok po kroku jak w instrukcji (ubuntu 12.04)
    przy wykonywaniu „sudo chroot /media/sda1” (oczywiście zamiast sda1 mam swój katalog) wyskakuje mi błąd chroot – chroot: nie można uruchomic polecenia `/bin/bash’: Brak dostępu

    Pozdrawiam

  • aboczkow

    Miałem poprzednio Mandrivę przez 6 lat i zmieniałem systemy jak rękawiczki a teraz pod Ubuntu mam problemy z zachowaniem swoich ustawień przy zmianie systemu bo krzyczy, że nie mam uprawnień i nawet zmiana uprawnień do plików pod root-em nic nie dała po przeniesieniu na inny dysk nadal nie mogę uruchomić mojego konta (brak dostępu do .ICEauthority) choć dodany użytkownik się uruchamia bez problemu.