Перенос системы Debian на другой винчестер


Рассмотрим вариант когда у нас вся система находится на одном разделе.
Задача перенести систему с одно винчестера на другой.

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

Далее:

1. Подключаем новый винчестер к старой системе.

2. Загружаемся в старой системе в single-mode или recovery-mode или Failsave mode. Смысл один – нам надо чтобы на винчестер ничего особо не писалось как это происходит когда система в обычном рабочем состоянии.
По идеи еще надежнее загрузиться с любого линуксового LiveCD, возможно даже под это можно использовать установочный диск Debian (кажется там есть вариант выхода в консоль).

3. Старый винт /dev/sda, новый – /dev/sdb (для идентификации используем fdisk -l)

4. На старом диске, т.е. /dev/sda, создаем каталог /new-disk

5. Основной раздел нового винчестера /dev/sda1 примонтируем к /new-disk: mount /dev/sda1 /new-disk

6. Удаляем файлы внутри /new-disk (это минимальная система которая создалась, т.к. я не знал как правильно разметить диск вручную и воспользовался услугой разметки установщика Debian).
Удалить можно из командной строки, но мне в данном случае быстрее было запустить mc и выделить около 20 файлов и каталогов в ручную, а потом удалить по F8 с пометкой “Удалять подкаталоги”. Минуту отдыхаем и каталог /new-disk пуст.

7. Копируем систему на новый винт: cp -ax / /new-disk
Про параметры -ax можете найти в Инете или man-ах, но в двух словах если, то происходит копирование каталогов со всем внутри содержимом, правильно копируются линки, права и не копируются каталоги /dev, /proc.
Копироваться будет продолжительное время: зависит от объема системы и скорости копирования.
Можно перед копированием при помощи df -h посмотреть сколько занимает система и далее на второй консоле наблюдать как идет процесс копирования запустив watch df -h. Для прерывания выполнения watch df -h нажмите “CTRL-C”.

8. После завершения копирования выключаем компьютер: init 0

9. Вытаскиваем винт и ставим в новый компьютер (если комп тотже, то новый винт подключаем вместо старого с которого копировали систему).

10. Нам не хватает загрузчика… и знаний как его сделать, но инсталятор Debian умеет. Чтобы установить загрузчик включаем новый компьютер, загружаемся с инсталяционного диска и выбираем expert mode, далее находим “Установка загрузчика”.



После выполнения операции завершаем работу инсталятора, вынимаем установочный диск из привода.

11. Загружаемся с винчестера и проверяем работоспособность “новой” системы. Задача выполнена.

12. Храним старый жесткий диск пока не убедились что все работает и ничего не потерялось.

Примечание. С определенного времени вместо обращения к раздеду диска по имени, например, /dev/sda1 идет обращение по UUID. Если у вас обращение к разделам дисков идет по UUID, то значения UUID можно узнать выполнив команду blkid. Далее шерстим (например, посредство файлового менеджера mc) каталоги /boot и /etc в поисках конфигов где встречаются старые идентификаторы и меняем на новые.

Обновлено: 13.03.2015