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

в 10:12, , рубрики: Без рубрики

Если вам доводилось использовать в работе или в личных целях дистрибутив 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, буду рад на них ответить.

Автор: zedalert

Источник

Поделиться

* - обязательные к заполнению поля