Запустил группу вконтактеНовые технологии дают толчок к будущемуЗа последние выходные почти полноценно перешёл на LinuxУмение ходить по граниКак тяжело терять близких людей

Перенос linux на другой диск

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

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

 

# dd if=/dev/sda of=/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
Копировать эти каталоги НЕ НАДО, просто досоздаём пустые каталоги /dev /proc /srv /sys /mnt Это всё псевдо-файловые системы (кроме /mnt естественно).

Стоит поменять /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

Опции:


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


userdel -r roger

Опции:


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


Опции:


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

Опции:

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

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

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