Улучшенное восстановление образов Windows 7/8 при помощи Clonezilla

от автора

Если вам доводилось использовать в работе или в личных целях дистрибутив Clonezilla, то вы наверняка сталкивались с проблемой восстановления образа с большего диска на меньший (например, при апгрейде с HDD на SSD без переустановки ОС, или когда в организации много однотипных ПК с дисками разного объема), даже при условии, что данные занимают места гораздо меньше, чем меньший диск. И ключи -r -icds помогают не всегда, если вообще помогают.

Чтобы решить эту проблему нужно, во-первых, создать образ системы с разделом минимального объема, во-вторых, восстанавливать его на диск с разделом максимального объема и изменить размер файловой системы под этот раздел. Для первого шага нужно удалить из системного раздела pagefile.sys и hiberfil.sys, изменить его размер до минимального (можно даже оставить всего 1МБ свободного места) и загрузить систему один раз (чтобы она выполнила chkdsk). После всего этого можно создать образ диска, который будет универсальным. Второй шаг можно выполнять уже в автоматическом режиме, благо Clonezilla поддерживает кастомизацию своего live-cd, но какое-либо расширенное описание его «API» отсутствует, есть только общий FAQ и несколько примеров custom-ocs. Для изучения возможностей скачиваем исходный код проекта, и внимательно рассматриваем скрипты ocs-sr и ocs-functions. Итак, приступаем к написанию custom-ocs.

Первое, что есть в каждом примере разработчиков, это загрузка стандартных функций и установка языка:

DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/usr/share/drbl}" . $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions . /etc/drbl/drbl-ocs.conf . $DRBL_SCRIPT_PATH/sbin/ocs-functions . /etc/ocs/ocs-live.conf  ask_and_load_lang_set en_US.UTF-8 export LANG=en_US.UTF-8 

Русский язык тоже есть.

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

dhclient -v eth0 mount -t cifs -o user="clonezilla",password="secret" "//10.2.0.2/images" /home/partimag 

Теперь можно показать диалог выбора образа:

export imagedir="/home/partimag" export ocs_mode_prompt="restoredisk" get_target_dir_name_when_restoring_disk 

И диалог выбора диска:

get_target_hd_name_from_local_machine "$msg_choose_the_disks_to_restore \n$msg_linux_disk_naming" "menu" 

Если заменить menu на checklist, то можно выбрать несколько дисков.

Эта функция создаст 100МиБ раздел для загрузчика и системный раздел на всём оставшемся месте:

create_pt_for_w7() {   dd if=/dev/zero of=/dev/$target_hd bs=512 count=1   (echo o; echo w) | fdisk /dev/$target_hd   (echo n; echo ; echo ; echo ; echo +100M; echo t; echo 7; echo a; echo 1; echo w) | fdisk /dev/$target_hd   (echo n; echo ; echo ; echo ; echo ; echo t; echo 2; echo 7; echo w) | fdisk /dev/$target_hd } 

Перед тем, как начать, нужно убедиться, что всё было выбрано правильно:

gen_proc_partitions_map_file parts_included="$(grep -Eo "${target_hd}[[:digit:]]+" $partition_table)" get_dev_model_shown "$target_hd $parts_included" export confirm_before_clone="yes" countdown_or_confirm_before_restore "$target_dir" "$target_hd" 

И, наконец, можно приступить к восстановлению образа:

create_pt_for_w7 ocs-sr -b -e2 -icds -j2 -k -p true restoredisk $target_dir $target_hd ntfsresize -f -f /dev/${target_hd}2 

Всё это теперь можно сохранить в файле custom-ocs и вшить его в дистрибутив Clonezilla. Для этого нужно загрузиться с live-cd, войти в консоль и любым удобным способом дать доступ к готовому файлу (через сетевой диск или флешку). Набираем команду ocs-iso -g en_US.UTF-8 -k NONE -s -m ./custom-ocs от имени root. На выходе получаем готовый iso образ с кастомизированным скриптом, при помощи которого можно в минимум действий восстановить образ систем Windows 7/8 на диск любого объема.

PS Если есть какие-либо вопросы по работе с Clonezilla, буду рад на них ответить.

ссылка на оригинал статьи http://habrahabr.ru/post/191284/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *