суббота, 24 сентября 2011 г.

Переносим Ubuntu на другой диск


Случилось мне проапгрейдить жесткий диск своего ноутбука на более емкий и быстрый. Естественно, возникла необходимость переноса на него тщательно вылизанной и настроенной операционной системы со старого винчестера. Поступил следующим образом:
  1. На новом диске установил необходимую на новой работе Windows 7, заняв ей два первичных раздела.
  2. Загрузившись с Gparted Live, дополнительно создал еще один первичный раздел под swap линукса.
  3. На оставшемся пространстве создал большой дополнительный раздел.
  4. В дополнительном разделе выделил логический ext4 для Ubuntu, и логический же NTFS в качестве общего диска для обеих ОС.
Дальше загружаемся в нашу любимую систему, и новый, уже размеченный жесткий диск присоединяем шнурком через usb, после чего открываем терминал и создаем в директории /mnt поддиректории: 

# sudo mkdir /mnt/oldsys

# sudo mkdir /mnt/newsys



Монтируем разделы на созданные директории

# sudo mount /dev/sdb1 /mnt/oldsys # для монтирования корневого раздела старого винта
# sudo mount /dev/sda2 /mnt/newsys # для монтирования корневого раздела нового винта

Копируем данные из директории /mnt/oldsys в /mnt/newsys. Для этого я использовал утилиту rsync:

# sudo rsync -qaHEAXh --progress /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

В противном случае, если требуется использовать UUID, то его можно получить с помощью утилиты blkid:
# sudo blkid /dev/sda2

/dev/sda2:UUID="e681c419-5ba5-4b78-ac00-def757e65585" TYPE="ext4"


Теперь необходимо перенести grub. Перед установкой груба я сделал следующие шаги (не обязательно):
  • Размонтировал /mnt/oldsys: sudo umount /mnt/oldsys
  • Далее с помощью команды 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/


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


Подсмотрено здесь

Комментариев нет:

Отправить комментарий