Debian clone или как сделать копию уже существующей установки Debian
В общей сложности стало необходимо установить систему на два десятка компьютеров. Пришлось столкнуться с копированием уже готовой системы и причиной тому было несколько удобств, а именно:
- одна и таже система на всех компьютерах (их около 2-х десятков);
- та самая система уже настроена после установки/копирования.
Как оказалось, для таких вещей (по хорошему) надо бы собрать livecd образ
и с ним уже играться в «тыкалки» на выше упомянутых компьютерах. Собирать образ, исходя из вычитанного мной материала, доблесного интернета, достаточно интересное, но затратное по времени занятие. По сему поводу решение простое — сделать чистовую копию системы, но другой жесткий диск или вообще на флешку. Исходя из поставленной задачи, выросло вот такое руководство.
Этап 0:
Перед всем-всем-всем надо подключить «целевой» диск и определиться с буквами, исходного и целевого дисков.
Система обычно стоит на /dev/sda1
, а что бы проверить это используем команду
fdisk -l
в моем случае исходный: /dev/sda
, а целевой: /dev/sdb
. Так же, по необходимости, той же командой можно форматировать целевой диск, а файловую систему и swap
, командами mkfs
и mkswap
.
ВАЖНО: не забудьте новый раздел системы сделать bootable.
Монтируем раздел целевого диска
mkdir /mnt/clone
mount -o rw /dev/sdb1 /mnt/clone
для дальнейшей работы будем использовать папку /mnt/clone
.
Этап 1:
Клонирование или копирование всей системы в целевой раздел диска
cp -ax / /mnt/clone
ключ a архивирует данные,
ключ x не дает копировать не существующих разделов.
После успешного копирования плавно переходим на другой раздел монтируя важнежшие части текущей системы на новый раздел (временно):
mount -o bind /dev/ /mnt/clone/dev
mount -t proc none /mnt/clone/proc
mount -t sysfs none /mnt/clone/sys
И переходим на новую корневую диреторию:
chroot /mnt/clone
Этап 2:
Настраиваем логово. У нового раздела другой UUID, быстро присобачить его вот так:
cd /etc
mv ./fstab ./fstab.bak
echo UUID=`blkid && grep '/dev/sdb1' && grep -o -E '[a-zA-Z|0-9|\-]{36}'` / ext4 errors=remount-ro 0 1 >> ./fstab
так же если у Вас есть еще и swap раздел то выполните команду повторно с применением номера раздела swap:
echo UUID=`blkid && grep '/dev/sdb2' && grep -o -E '[a-zA-Z|0-9|\-]{36}'` swap swap defaults 0 0 >> ./fstab
Так же не забываем обновить ядро, что бы изминения в fstab имели весомый характер:
update-initramfs -u
Теперь осталось обновить конфигурацию GRUB и установить его в MBR нового диска /dev/sdb, но в нашем случае будет использоваться «Recovery Mode» GRUB’а, по этой причине предварительно в файле /etc/defaults/grub активируем его, а после выполняем:
update-grub
grub-install /dev/sdb
Наконец, конфеты, удаление списка «ethernet устройств», да бы избежать переименования интерфейса eth0 в eth1 и т.п. при установке жесткого диска в другой компьютер
rm /etc/udev/rules.d/70-persistent-net.rules
Это избавит нас от редактирования /etc/network/interfaces.
Этап 3:
Кладем коробку на место. Выходим с нового корня и размонтируем все что с ним связано:
exit
umount /mnt/clone/sys
umount /mnt/clone/proc
umount /mnt/clone/dev
umount /mnt/clone
Этап REBOOT:
Во время загрузки GRUB’a кратковременно жмем курсор вниз пока не попадем на меню с выбраным элементом в конце которого (recovery mode). Жмем e и переходим во временное редактирование пункта, в тексте меняем /dev/sdb
на /dev/sda
, а у некоторых это могут быть hd1
на hd0
. После этого клавишей F10 запускаем временный пункт.
Система при загрузке попросит root’овый пароль, после ввода выполняем:
update-grub
Таким образом фиксируем то что изменили в меню GRUB’a и теперь со спокойной душой уходим в REBOOT.