linux на десктопе → Перенос системы на другой жесткий диск

linux на десктопе → Перенос системы на другой жесткий диск

Купил вчера новый хард на 1000Гб, в связи с этим возникла необходимость переноса системы на другой диск, т.к. текущий системный я собирался поставить на другой компьютер. Вот раскажу как я это реализовывал и с какими проблемами столкнулся.

Реализовать это можно двумя способами, один - с использованием утилиты dd, второй - "вручную". Здесь опишу процесс переноса "вручную".

Так вот, состоит этот процесс из 5 пунктов:

  1. Подключение диска
  2. Подготовка и форматирование нового диска
  3. Перенос информации со старого диска на новый
  4. Редактирование fstab
  5. Установка загрузчика на новый диск

Ну, давайте по порядку.

1) Подключение диска

Выключаем комп, подключаем диск)) У меня sata поэтому особо не напрягаемся над этим пунктом

проверить успешность установки проще всего, пожалуй, командой

Это выведет список всех установленных в системе дисков и их разделов. Команда fdisk -l выдаст больше полезной информации.

2) Подготовка и форматирование нового диска

Ну, кто-то одобрит, кто-то нет, но я использовал для разметки диска Gparted. Если у вас он не установлен, командуйте: sudo apt-get install gparted Запускаем его из меню Система-->Администрирование-->Редактор разделов, и делаем разметку в соответствии со своими потребностями. У меня это выглядит так (правда, уже после переноса системы.. до этого диск стоял 3-м и назывался sdc):

т.е. сперва создаем swap (у меня 2 харда, один 1000Гб, второй - 750Гб, на каждом под своп выделено по 1Гб), затем создаем раздел для корня (мне 8Гб вполне хватает) в ext3, потом создаем extended partition чтобы в нем можно было создавать еще разделы и внутри него делаем раздел для /home и раздел для остальных файлов. Сразу скажу, что старый системный диск был размечен точно так-же, но раздел для файла был меньше. Обратите внимание, что home расположен на разделе sda6, а файло лежит на sda5. Еще выполните такую команду:

Это позволяет узнать UUID разделов дисков. Пригодится при редактировании fstab и menu.lst GRUB-а. Сохраните где-нибудь результаты.

3) Перенос информации со старого диска на новый

Тут начинаются вещи поинтереснее. Просто скопировать файлы с корневого раздела не получится, т.к. они постоянно изменяются, поэтому нужно действовать из однопользовательского режима. Командуйте:

При этом вся графика закроется, почти все демоны выключаются, остаетесь вы и консоль. смотрим какие в системе имеются диски

увидите что-то вроде

где sda - это ваш текущий диск с системой а sdb - свежеотформатированный. Для более подробного вывода могу посоветовать команду fdisk -l . В режиме init 1 корневая ФС ( sda2) остается подмонтированной, остальные разделы - нет. Все манипуляции идут от рута. Поэтому командуем: #монтируем будущую корневую систему в /mnt

#копируем содержимое корневой системы в mnt (ключи -ax позволяют при копировании не переходить на другие подмонтированные разделы, игнорировать символич. ссылки и еше много чего. за подробностями cp --help)

Ждем завершения процесса. #Отмонтируем sdb2

#создаем папки для монтирования старого и нового домашних разделов

#Монтируем будущую и текущую домашнии папки

Ждем завершения процесса. Файло можно перенести позже #отмонтируем эти разделы

4) Редактирование fstab

Этот пункт можно было провернуть во время выполнения пункта (3) сразу после окончания копирования содержимого корневой ФС. В общем, командуем: #монтируем будущую корневую систему в /mnt

открываем fstab в nano

и редактируем, заменяя uuid соответствующих разделов на UUID диска sdb, полученные в конце пункта 2 Как вариант - можно прописать в fstab непосредственно /dev/sda2 /dev/sda2 и т.п.). В таком случае, возможно, fstab даже не придется менять. У меня он выглядит так:

(точнее, это не совсем правда, но для нашего примера - самое то)

5) Установка загрузчика на новый диск

UPD (2014.02.13): Этот раздел устарел, обновлённая версия ниже

Самое геморное, пожалуй, мероприятие. находясь во все том-же однопользовательском режиме и с подмонтированной на /mnt будущей корневой системой командуем: cat /mnt/boot/grub/device.map получаем список хардов, которые знакомы GRUB-у. Должно быть (hd0) /dev/sda (hd1) /dev/sdb Если нет - приведите к такому виду! Далее командуем /usr/sbin/grub Загружается командная строка загрузчика grub. В ней командуем root (hd1,1) Т.е. задаем корневой раздел на диске hd1 (/dev/sdb) раздел 1 (/dev/sdb2) Да да, именно так! GRUB нумерует диски и разделы начиная с 0 а не с 1! Потом устанавливаем загрузчик на sdb setup (hd1) он выведет отчет по установке загрузчика либо проблему, по которой установка не удалась. Для выхода командуем quit Чтобы удостовериться, что с загрузкой проблем не будет, командуем cat /mnt/boot/grub/menu.lst И сверяем UUID разделов, которые прописаны в блоках

с полученными для диска sdb на 2 этапе, либо заменяем UUID на /dev/sda2

У нас всё ещё должна быть примонтирована новая корневая файловая система в /mnt. Проще всего установить загрузчик на новый диск из chroot. Для этого предварительно монтируем служебные директории в новую корневую ФС

И делаем chroot

генерируем новый конфиг grub

выходим из chroot

На этом все. Для выключения командуем halt либо shutdown now . После выключения желательно отключить старый системный хард, чтобы наверняка загрузиться с нового

📎📎📎📎📎📎📎📎📎📎