linux на десктопе → Перенос системы на другой жесткий диск
Купил вчера новый хард на 1000Гб, в связи с этим возникла необходимость переноса системы на другой диск, т.к. текущий системный я собирался поставить на другой компьютер. Вот раскажу как я это реализовывал и с какими проблемами столкнулся.
Реализовать это можно двумя способами, один - с использованием утилиты dd, второй - "вручную". Здесь опишу процесс переноса "вручную".
Так вот, состоит этот процесс из 5 пунктов:
- Подключение диска
- Подготовка и форматирование нового диска
- Перенос информации со старого диска на новый
- Редактирование fstab
- Установка загрузчика на новый диск
Ну, давайте по порядку.
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 . После выключения желательно отключить старый системный хард, чтобы наверняка загрузиться с нового