Configuring Linux
29 January 2010

Описание процесса переноса Ubuntu 9.10 на другой винчестер (без использования Ghost, Acronis True Image etc...)

Я думаю что у многих была такая ситуация когда, появляется необходимость перенести систему с одного винта на другой. Вот и у меня назрела такая необходимость.
И так имеем:

Установленную систему на диск объемом 80 Гб (второй канал SATA — sdb). На диске одна пратиция /deb/sdb1, swap у системы отсутствует.
Необходимо сделать:

перенести систему на другой винчестер объемом 320 Гб, подключенный на первый канал SATA (sda), создать и подключить на новом винчестере раздел подкачки swap, каталоги пользователей разместить так же на отдельном разделе.
Поехали:


Выключаем компьютер (система установлена на винчестере в партицию sdb1)
Подключаем второй винт на первый канал SATA (винт приемник — sda)
Грузимся с LiveCD
Запускаем Gparted и создаем партиции, которые в дальнейшем будем использовать для SWAP, / и home
  • SWAP — 4 Gb, FS — SWAP (sda1)
  • / — 40 Gb (sda2), FS — ext4 //* Важно!!! Сделать партицию bootable
  • home — 251 Gb (sda3), FS — ext4

Далее: открываем терминал и создаем в директории /mnt поддиректории:
sudo mkdir /mnt/oldsys
sudo mkdir /mnt/newsys
sudo mkdir /mnt/newhome


Монтируем партиции на созданные директории
sudo mount /dev/sdb1 /mnt/oldsys # для монтирования корневого раздела старого винта
sudo mount /dev/sda2 /mnt/newsys # для монтирования корневого раздела нового винта
sudo mount /dev/sda3 /mnt/newhome # для монтирования раздела на новом винте, который будет использоваться под /home


Копируем данные из директории /mnt/oldsys/home в /mnt/newhome, те же действия необходимо выполнить и для /mnt/oldsys, только теперь из процесса копирования нужно будет исключить директорию /mnt/oldsys/home, так-как копия этой директории была сделана до этого. Для этого я использовал утилиту rsync:
sudo rsync -qaHEAXh --progress /mnt/oldsys/home/* /mnt/newhome
sudo rsync -qaHEAXh --progress --exclude 'home' /mnt/oldsys/* /mnt/newsys


Следующим номером нашей программы будет правка файла /etc/fstab: по умолчанию в fstab вместо имен файловых систем (на пример: /dev/sdb1) используются их UUID, если не планируется подключать диск к разным SATA каналам или переносить его на другой компьютер, то можно явно прописать имя файловой системы, в нашем случае выглядеть это будет так:

proc /proc proc defaults 0 0
/dev/sda1 swap swap defaults 0 0
/dev/sda2 / ext4 errors=remount-ro 0 1
/dev/sda3 /home ext4 defaults,owner,nodev 0 2


В противном случае, если требуется использовать UUID, то его можно получить с помощью утилиты blkid:
sudo blkid /dev/sda2
/dev/sda2: UUID="e681c419-5ba5-4b78-ac00-def757e65585" TYPE="ext4"



Теперь необходимо перенести grub, так-как в ubuntu 9.10 используется grub 2 перенос происходит несколько иным путем нежели старый груб:
Перед установкой груба я сделал следующие шаги (не обязательно)

  • Размонтировал /mnt/oldsys: sudo umount /mnt/oldsys
  • Размонтировал /mnt/newhome: sudo umount /mnt/newhome


Далее с помощью команды mount следует сделать перемонтирование каталогов /dev и /proc в каталоги /mnt/newsys/dev и /mnt/newsys/proc соответственно, используя при этом опцию --bind — это нужно для того чтобы в окружении chroot в директории /dev имелись файлы устройств /dev/sda*:
sudo mount --bind /dev /mnt/newsys/dev
sudo mount --bind /proc /mnt/newsys/proc

Чрутимся в /mnt/newsys/
sudo chroot /mnt/newsys /bin/bash
Создаем device.map для grub
sudo grub-mkdevicemap
В результате выполнения этой команды в /boot/grub/ будет создан файл device.map следующего содержания (на разных системах будет выглядеть по разному) у меня так:
(hd0) /dev/sda
(hd1) /dev/sdb


Создаем кофигурационный файл для grub
grub-mkconfig > /boot/grub/grub.cfg
Если ошибок не вылезло и груб сказал примерно следуюущее
Generating grub.cfg…
Found linux image: /boot/vmlinuz-2.6.31-17-generic
Found initrd image: /boot/initrd.img-2.6.31-17-generic
Found linux image: /boot/vmlinuz-2.6.31-16-generic
Found initrd image: /boot/initrd.img-2.6.31-16-generic
Found linux image: /boot/vmlinuz-2.6.31-15-generic
Found initrd image: /boot/initrd.img-2.6.31-15-generic
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found memtest86+ image: /boot/memtest86+.bin
done

Устанавливаем grub. Так-как у меня в системе загрузочным диском будет выступать /dev/sda, то и устанавливаю я загрузчик в mbr этого винта:
sudo grub-install /dev/sda
(здесь вместо /dev/sda можно поставить hd0 см. файл /boot/grub/device.map).
Вывод этой команды для моей системы такой:
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/sda

(hd1) /dev/sdb

Уходим из чрута
exit
Делаем umount для /dev, /proc и /mnt/newsys
sudo umount /mnt/newsys/dev
sudo umount /mnt/newsys/proc
sudo umount /mnt/newsys/

Перезагружаемся, если все сделано правильно, то система должна загрузится без проблем.

Всем дочитавшим до конца, спасибо за внимание. Буду рад комментариям и замечаниям.

UPD: Всем спасибо за карму, перенес в Убунтариум.

+26
9.5k 102
Comments 79