Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Настройка системы

Как сделать клон своей настроенной операционной системы

Алексей Дмитриев, 29 октября 2010

А зачем клонировать?

В двух словах: Чтобы в случае чего установить на любой носитель за несколько минут.

В развернутом виде можно привести следующие рассуждения:

Горе тому, кто вынужден совмещать дистрибутив Linux на одном ноутбуке с предустановленной Windows!

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

Стоит Windows перестать загружаться, или показать "синий экран" или взять за обычай загружаться по полчаса, как вы вынуждены не просто переустанавливать изделие Микрософта, но еще и устанавливать и долго настраивать Линукс. Для того, кто просто увлекается компьютером, это даже может оказаться и хорошо ≈ есть повод попробовать новый дистрибутив. Для тех же кто на машине работает, имеет устоявшиеся привычки и круг необходимых программ, избегает обновлений ради обновлений, это означает перерыв в работе на несколько дней.

Тут на помощь и придет клон вашего основного раздела Linux. Он ведь обычно не слишком большой ≈ 30, от силы 50 Гб. Это пустяки для современных винчестеров. Нужно взять достаточно объемистый внешний жесткий диск, и на нем хранить копии своих разделов. Кстати вполне возможно клонировать туда и Windows ≈ ее настройки часто муторнее Линуксовых. Да и установленные программы ≈ это время и деньги.

Как делать клоны

Клон ≈ это не резервная копия, а побайтовый двойник раздела, сделанный на уровне секторов жесткого диска, включая нулевой загрузочный сектор. У него будет та же самая файловая система, и даже UUID, что у оригинала. Поэтому изготовление клона требует некоторых предварительных действий.

Для удобопонятности рассмотрим такой случай:

На ноутбуке, имеющим винчестер на 160 ГБ, с предустановленной Вистой (60Гб), том D: (100 Гб) уничтожен, и на освободившемся месте создан расширенный раздел hda3, а в нем логический раздел с дистрибутивом Линукс (hda5 - 50 Гб), раздел подкачки (hda6 - 1Гб), а оставшееся место (49 Гб) оставлено на всякий случай.

Виста приказала долго жить, и если вам нужна Windows, то вам придется воспользоваться диском-реаниматором. Клонировать Висту уже поздно, нужно было раньше думать, а вот Линукс раздел hda5 ≈ самое время.

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

Сначала нужно установить Grub непосредственно в раздел. Ведь до сих пор системы загружал Grub, находящийся в MBR (Главный загрузочный сектор). При переустановке Висты MBR будет переписан и там воцарится загрузчик Windows, а нам, чтобы загрузить Линукс, в первый раз придется воспользоваться SmartBootManager'ом (Умным менеджером загрузок) или просто дискетой (или флешкой) с Grub'ом.

Чтобы установить загрузчик Grub в нулевой сектор раздела hda5, нужно в консоли, под аккаунтом суперпользователя, выполнить следующие команды:

 # grub

Это откроет вам Grub шелл со своим приглашением:

 grub>

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

 grub> root (hd0,4)     {(hd0,4) - это, на языке Grub'а - /dev/hda5}
 
Filesystem type is ext2fs, partition type 0x83

Затем установить загрузчик в тот же раздел:

grub> setup (hd0,4)
 
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0,4)"... failed (this is not fatal)
 Running "embed /boot/grub/e2fs_stage1_5 (hd0,4)"... failed (this is not fatal)
 Running "install /boot/grub/stage1 (hd0,4) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded
Done.

Теперь дистрибутив Linux, имеющий резиденцию в разделе hda5 может быть загружен как обычным путем (путем включения компьютера), так и при помощи вспомогательных средств: SmartBootManagera или Grub'a. Осталось на всякий пожарный скопировать содержимое файла /boot/grub/menu.lst, на случай загрузки с дискеты Grub, в файл menu.lst.txt .

Также полезно сделать копию MBR:

# dd if=/dev/hda bs=512 count=1 of=MBR.backup

Подготовка окончена, проводим клонирование:

# dd if=/dev/hda5 of=hda5.img bs=1M

Размер буфера копирования в 1Мб является золотой серединой, если установить меньше, то копирование пойдет медленно; если больше, то появятся большие пустóты, заполненные нулями.

Процесс клонирования занимает несколько минут, в зависимости от мощности вашего процессора и количества оперативной памяти.

Получив на выходе файл hda5.img , мы убираем его в созданную папку /klone_hda5 , туда же кладем файл MBR.backup и файл menu.lst.txt . Еще в этой папке должен быть файл с указанием точного размера раздела /dev/hda5 в мегабайтах (для точности) и в секторах (для программы fdisk). Назовем этот файл size_hda5.txt . Кто любит экономить место на жестких дисках, может упаковать папку /klone_hda5 каким-нибудь архиватором.

Теперь подключаем съемный винчестер, форматируем его в ext3 (чтобы поддерживала файлы такого размера), и переносим нашу папку /klone_hda5 (или ее архив) на место хранения.

Как восстановить утраченный раздел из его клона

Если случилась неприятность и жесткий диск пришлось отформатировать, то восстановление займет немного времени.

Сперва установите Windows, пусть она займет столько же места, сколько занимала до аварии. (А можно и слегка ее утеснить, если вы ей не очень интенсивно пользуетесь).

Потом загружаем компьютер с Ubuntu LiveCD любой современной версии (они меняются каждые 3 месяца). Запускаем программу GParted (Alt+F2 Gksu GParted) и создаем разделы:

3. Расширенный (Extended) от конца Windows и до конца диска.

5. Логический (Logical) /dev/hda5 точно такого же размера, как был (при необходимости пересчитайте гигабайты в мегабайты, это не так просто, но в Сети есть конвертеры). Если есть сомнение, то решайте его в большую сторону (пусть лучше пропадет пара мегабайт места, чем клон не влезет).

6. Раздел подкачки (Swap) нужной вам величины.

Свободным местом распоряжайтесь по вашему усмотрению. Я обычно создаю там раздел, где держу все, что не нужно, но жалко выбросить, а также фотографии.

Затем подключаем съемный винчестер, открываем папку /klone_hda5 (распаковав ее, если нужно), находим файл hda5.img и даем команду:

# dd if=hda5.img of=/dev/hda5 bs=1M

и ждем окончания процедуры.

После этого перезагружаемся с флешкой или дискетой SmartBootManagera, ищем все загрузочные записи, выбираем нужную и загружаемся. Клон не отличим от своего оригинала, и если не менялся номер раздела, то и в /etc/fstab менять ничего не нужно (если вы не пользуетесь UUID'ами).

Осталось установить Grub в MBR:

# grub

Это откроет вам Grub шелл со своим приглашением:

grub>

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

grub> root (hd0,4)     {(hd0,4) - это, на языке Grub'а - /dev/hda5}
 
Filesystem type is ext2fs, partition type 0x83

Затем установить загрузчик в MBR:

grub> setup (hd0)

Теперь система будет загружаться как и до аварии.

Могут возникнуть вопросы:

На шута мы копировали MBR?

Имея копию старого MBR и умея пользоваться командой dd (читайте статью), можно воссстановить старый загрузчик Grub, не трогая новой таблицы разделов.

Как пользоваться дискетой или флешкой с Grub?

Для этого нам и нужен файл menu.lst.txt . Загружаемся с дискеты Grub и видим знакомое приглашение шелла Grub

grub>

Вводим корневой раздел (который нужно загрузить) в нотации Grub.

grub> root (hd0,4)

Затем подглядывая в файл menu.lst.txt вводим:

grub> kernel  (все то что прописано в данной строке файла menu.lst.txt)

Потом:

grub> initrd  (все то что прописано в данной строке файла menu.lst.txt)

И, наконец,

grub> boot

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

Справедливости ради нужно сказать, что пользоваться SBM намного удобнее.


Излишне говорить, что таким же образом можно иметь клоны всех своих операционных систем. На мой взгляд, это избыточно, так как ничего не меняя, можно впасть в стагнацию.