Копирование ubuntu linux на другой hdd

Тут умные товарищи насоветовали, как делать. Есть таки в русском инете люди с большими и умными головами, да. Я ведь уже писал, что винт умирает и посему надо бы систему со всеми еёпотрохами на другой хард перетащить. Значит, по порядку.

Подготовка. Для этого необходимо иметь: исходный винт, целевой винт, лайв-сд с линуксом (я взял тот же, с которого инсталял убунту, но сойдет в принципе любой). Целевой винт отформатировать подобно исходному винту, чтобы были все необходимые разделы. Я это делал в графической тулзе, которая шла прямо на лайв-сд. Но замечу, что настоящие джедаи должны делать это все же в консоли.

Подключаем все устройства - исходный винт, сидюк с лайв-сд и целевой винт - к компу. В биосе выставляем загрузку с сидюка. Загружаемся.

Запускаем консоль и перелогиниваемся там под рутом. Смотрим, как какой диск у нас назван. У меня разделы исходного винта были названы sdb1 и sdb5, а целевого соответственно sda1 и sda5.

Монтируем исходный бутовый раздел:
mount -t ext3 /dev/sdb1 /media/old_root

Монтируем целевой бутовый раздел:
mount -t ext3 /dev/sda1 /media/new_root

Разумеется, предварительно в папке media должны быть созданы папки old_root и new_root, которые мы будем использовать в качестве точек монтирования.
Далее идет непосредственно копирование всего добра с исходного загрузочного раздела на целевой:
cp -xpr /media/old_root /media/new_root

По идее, эта команда должна просто скопить все из old_root в new_root, но у меня почему-то оно не просто скопировало, а внутри new_root создало подпапку old_root и уже туда все перетянуло. Ясно, что так мне не понравилось и я ручками все перетянул на уровень выше, чтобы было как надо. Ничего страшного, в принципе, но как-то странно.

Потом делаем такое:
mount --bind /dev /media/new_root/dev
Монтируем текущий /dev в новый раздел, чтобы новая система "видела" установленные устройства. Это нужно для корректной установки загрузчика.

Посля набираем такое:
chroot /media/new_root
Тут вроде понятней - меняем корень системы, чтобы типа как будто с целевого харда работаем. За более подробными объяснениями насчет chroot идем сюда.

Потом монтируем файловую систему proc:
mount -t proc proc /proc
Это виртуальная файловя система для получения информации о процессах системы, аппаратном обеспечении и хуй знает еще для чего. Короче надо так надо.

Дальше примонтируем раздел со свопом:
mkswap /dev/sda5

Теперь самое интересное - установка загрузчика системы. Для этого набираем в консоли:
grub

Теперь мы в grub, где набираем "help", чтобы увидеть помощь по командам. В моей версии grub нужно было совершить следующте телодвижения:
root (hd0,0)

Тут стоит заметить, что (hd0,0) - это первый раздел диска sda, (hd1,0) - первый раздел диска sdb, ну и так далее. Чтобы увидеть, какие диски обнаружены, набираем "root (hd" и жмем Tab. Чтобы увидеть, какие разделы обнаружены на этом диске, набираем "root (hd0," и жмем Tab.

После набираем
setup (hd0)
Эта команда по идее и устанавливает загрузчик на первом диске, куда я и переношу линукс.

Теперь необходимо подправить конфиг загрузчика. Я это делал такой командой:
nano /media/new_root/boot/grub/menu.lst
В файле необходимо подправить все старые UUID-ы на новые, которые у целевого диска. Уиды можно посомтреть, набрав в параллельно открытой консоли команду blkid.

Теперь так же переправляем UUID-ы и в файлике fstab:
nano /media/new_root/etc/fstab

После этого я выключил системник, отсоединил прежний винчестер и сидюк. Запустился с нового и - о чудо! - оно ожило. Как ни странно.

Кстати, делать все это намного удобнее, когда есть второй комп с интернетом.


Ссылки и пруфлинки.
Особо крупное спасибо lazysketches за этот мегапост.
Также весьма помогли leolik, opennet.ru, lab108.ru, wikipedia.org.

Комментарии

Популярные сообщения из этого блога

Новый год в клубе Мисто

Ну нихуя себе первое марта

Упаднические настроения