Чтобы решить эту проблему нужно, во-первых, создать образ системы с разделом минимального объема, во-вторых, восстанавливать его на диск с разделом максимального объема и изменить размер файловой системы под этот раздел. Для первого шага нужно удалить из системного раздела 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/
Добавить комментарий