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

Материал из Мои заметки
Версия от 08:04, 6 августа 2011; Andrey (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

В двух словах: Чтобы в случае чего установить на любой носитель за несколько минут.
В развернутом виде можно привести следующие рассуждения: Горе тому, кто вынужден совмещать дистрибутив 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) и создаем разделы:
Расширенный (Extended) от конца Windows и до конца диска.
Логический (Logical) /dev/hda5 точно такого же размера, как был (при необходимости пересчитайте гигабайты в мегабайты, это не так просто, но в Сети есть конвертеры). Если есть сомнение, то решайте его в большую сторону (пусть лучше пропадет пара мегабайт места, чем клон не влезет).
Раздел подкачки (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 намного удобнее.