Инструкция по копированию ОС Linux Debian на другой диск

  • Печать

Инструкция по копированию ОС Linux Debian на другой диск

 

Часто бывает нужно уже настроенную операционную систему Linux перенести на другой диск вместе со всеми рюшечками, бубенчиками и свистульками. Перенести Linux с одного диска на другой довольно просто, но тут есть несколько моментов, чему данная записка дебианщика и посвящена.

Геометрия дисков источника и приёмника совпадает
Если геометрия жёсткого диска с Linux и нового диска одинаковая (новый винчестер на компьютере точно такой же), то можно использовать наш любимый старый-добрый dd.
Для этого залогиниваемся как root (или используем sudo) и пишем в консоли:

# dd if=/dev/sda of=/dev/sdb

здесь

  • /dev/sda : диск-источник (с настроенной системой)

  • /dev/sdb: диск-приемник (на который копируем систему).

Для ускорения процесса можно задать копирование большими блоками вот так:

# dd if=/dev/sda of=/dev/sdb bs 1048576

По окончании копирования диск-приёмник готов к употреблению - разве что можно создать на нём другого пользователя или отредактировать уже имеющегося (о чём см. ниже). Кстати, если вместо /dev/sdb указать обычный файл вроде linux.img, то мы получим образ диска c Linux и можем использовать его для работы в виртуальных машинах.


Разная геометрия дисков источника и приёмника
Это приведёт к тому, что предыдущий вариант будет неэффективен и нам срочно нужен инновационный прорыв. К счастью, это потребует лишь несколько простых телодвижений, так что мы сейчас прорвёмся и отчаянно ворвёмся в наше светлое линуксовое счастье.

1. Разметка винчестера и создание файловой системы
Для создания таблицы разделов в Linux используем команду cfdisk (есть подробное описание по разметке дисков в Linux):

cfdisk /dev/sdb

Нажимаем на New, создать раздел. Выбираем Primary (основной), когда он создастся, нажимаем Bootable (если нужно, чтобы он был загружаемый). После этого надо отформатировать раздел (например, в надёжную и стабильную файловую систему EXT3):

sudo mkfs -t ext3 /dev/sdb1

Если же вам нужно перекроить разделы, скажем, для установки Windows и Linux на одной машине, лучше всего воспользоваться Live CD Gparted. Теперь можно начинать копировать файлы с одного диска на другой.

2. Перенос Linux на другой диск или раздел
Например, диск-источник, на котором хранятся все файлы, это /media/debian - туда примонтирован IMG-образ системы, которую нужно залить на свежий раздел. Теперь монтируем диск-приёмник куда-нибудь в укромное место (чтобы данные рекурсивно не копировались), например в пустующий в Debian каталог /srv

mount -t auto /dev/sdb1 /srv

Переходим в каталог /media/debian/ и, находясь в этом каталоге, вводим длинную команду в одну строчку:

cp -a /bin /boot /etc /home /lib /opt /root /sbin /tmp /usr /var  /srv

Здесь серым выделены опциональные каталоги /home и /tmp : скопировать их можно, если они вам нужны (например, можно захотеть сделать нового пользователя в новой системе).

3. Досоздаем каталоги: /dev /proc /srv /sys /mnt /tmp 
Копировать эти каталоги НЕ НАДО, просто досоздаём пустые каталоги /dev /proc /srv /sys /mnt 
Это всё псевдо-файловые системы (кроме /mnt).

При создании каталога /tmp нужно стоит ему полные права:

# chmod 777 /tmp

Если этого не сделать, могут не стартовать иксы от простого пользователя, или у login-screen не хватит прав на дальнейшую работу.

Стоит поменять /srv/etc/fstab на предмет монтирования корневого каталога - если новый диск будет определён как /dev/sda1, а в файле /etc/fstab будет указан /dev/hda1, ядро этому не обрадуется и не загрузится (что не страшно при использовании загрузчика grub).


Вносим изменения в /srv/etc/fstab новой системы на предмет подключения swap-разделов или файлов. Например, если новый своп-раздел будет находиться на втором разделе новой системы, пишем:

/dev/sdb2   swap    swap    defaults    0  0

После этого осталось только установить загрузчик Linux.


4. Установка загрузчика Linux
Это довольно просто сделать, загрузившись хотя бы с Knoppix. Например, при использовании загрузчика GRUB даём команду:

/sbin/grub-install --root-directory=/srv --recheck /dev/sdb

Здесь /dev/sdb это диск-приёмник (на который копируем систему). Так же можно установить загрузчик с помощью chroot:

chroot /srv grub-install /dev/sdb

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


Добавляем, меняем и удаляем Linux-пользователей в новой системе
Для этого залогиниваемся root-ом и начинаем борьбу с пользователями.

useradd добавить нового пользователя

Пример - добавить пользователя roger:

useradd -gusers -Gmgmt -s/bin/sh -pxxxx -d/home/roger -m roger

Опции:

  • -d домашний каталог

  • -s задать стартовую оболочку (/bin/sh)

  • -p пароль

  • -g основная группа, к которой приписывается пользователь

  • -G другие группы к которой приписывается пользователь

  • -m создать для пользователя домашний каталог


userdel - удалить
пользователя

userdel -r roger

Опции:

  • -r удалить пользователя вместе с домашним каталогом


usermod - модифицировать данные о пользователе

Опции:

  • -d домашний каталог

  • -s задать стартовую оболочку (/bin/sh)

  • -p пароль

  • -g основная группа, к которой приписывается пользователь

  • -G другие группы к которой приписывается пользователь


passwd - модифицировать пароль
пользователя

Опции:

  • имя_пользователя (для изменения пароля пользователя имя_пользователя)

Весь процесс переноса системы занимает от получаса до часа включая перекуры.

Внеклассное чтение
Пища для размышлений и медитаций в разных интернетах вкусна и обильна: о клонировании установленной системы, а также о некоторых способах копирования Linux.

Представляет интерес метод с LVM, привнесённый в процессе дискуссии ув.тов. Анонимусом:

1) Создать LVM раздел на новом винчестере (fdisk).
2) Включить его в vg группу (vgextend).
3) Переместить все PE со старого винчестера на новый (pvmove).
4) Удалить разделы на старом винчестере из vg группы (vgreduce).