Копирование 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.
Подготовка. Для этого необходимо иметь: исходный винт, целевой винт, лайв-сд с линуксом (я взял тот же, с которого инсталял убунту, но сойдет в принципе любой). Целевой винт отформатировать подобно исходному винту, чтобы были все необходимые разделы. Я это делал в графической тулзе, которая шла прямо на лайв-сд. Но замечу, что настоящие джедаи должны делать это все же в консоли.
Подключаем все устройства - исходный винт, сидюк с лайв-сд и целевой винт - к компу. В биосе выставляем загрузку с сидюка. Загружаемся.
Запускаем консоль и перелогиниваемся там под рутом. Смотрим, как какой диск у нас назван. У меня разделы исходного винта были названы 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.
Комментарии