Linux clone windows disk

Unveiling the Mystery: Can Linux DD Clone Your Windows Disk?

In the world of data management, disk cloning is a vital process for both personal and professional use. It can be particularly beneficial when migrating from one operating system to another or creating backups. For those using Linux, the Linux DD command is a powerful tool that raises the question: can it effectively clone a Windows disk? This article aims to explore this intriguing topic, providing detailed insights into the Linux DD command, its functionalities, and how it can be used for disk cloning.

What is the Linux DD Command?

The Linux DD command is a versatile utility found in Unix and Unix-like operating systems, including Linux. It is primarily used for copying and converting files. With its ability to read and write raw disk data, it can be employed for various tasks, including:

  • Backing up entire disks or partitions
  • Creating disk images
  • Transferring data between different storage devices
  • Performing data recovery

The command operates at a low level, meaning it can access data that other higher-level utilities may not be able to reach. However, this power comes with responsibility, as incorrect usage can lead to data loss.

How Does Linux DD Work?

The syntax of the Linux DD command is straightforward, yet it requires precision. The basic syntax is as follows:

dd if=/dev/source of=/dev/destination bs=block_size

In this command:

  • if: Specifies the input file (the source disk or partition).
  • of: Specifies the output file (the target disk or partition).
  • bs: Sets the block size for the transfer, which can affect the speed and efficiency of the cloning process.

Can Linux DD Clone a Windows Disk?

Yes, the Linux DD command can clone a Windows disk, but there are important considerations to keep in mind. Here’s a step-by-step guide to help you through the process:

Step-by-Step Process to Clone a Windows Disk Using Linux DD

Step 1: Prepare Your Environment

Before diving into the cloning process, ensure that:

  • You have a backup of important data.
  • The destination disk is equal to or larger than the source disk.
  • You have a live Linux USB or CD ready to boot into a Linux environment.

Step 2: Boot into a Live Linux Environment

Insert your live Linux USB or CD and boot from it. This prevents any interference with the Windows operating system during the cloning process.

Step 3: Identify the Disks

Open a terminal and use the following command to list all connected drives:

sudo fdisk -l

Take note of the identifiers for both the source (Windows) and destination disks (e.g., /dev/sda and /dev/sdb).

Step 4: Clone the Disk

Now you can use the Linux DD command to clone the Windows disk. Replace /dev/sdX with the appropriate identifiers:

sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress

This command does the following:

  • conv=noerror: Continues operation even if errors are encountered.
  • sync: Pads blocks with zeros to maintain proper alignment.
  • status=progress: Displays ongoing progress during the operation.

Step 5: Verify the Cloning Process

After the cloning process is complete, verify the cloned disk using:

sudo fdisk -l /dev/sdb

Ensure that the partitions and data match the original disk.

Troubleshooting Common Issues

While the Linux DD command is powerful, users may encounter issues during the cloning process. Here are some common problems and their solutions:

Issue 1: Disk is Busy or In Use

If you receive an error indicating that the disk is busy, ensure that the Windows operating system is not running. Boot into the live Linux environment to avoid conflicts.

Issue 2: Insufficient Space on Destination Disk

Ensure that the destination disk is larger than the source disk. If not, the cloning process will fail. You may need to replace the destination disk with one of adequate size.

Issue 3: Data Corruption During Transfer

If you suspect data corruption, consider using the conv=noerror option in your command to help manage errors. After cloning, run a filesystem check on the destination disk.

Additional Considerations

When using the Linux DD command, keep the following in mind:

  • Ensure that you have adequate permissions; using sudo is often necessary.
  • Be aware that the process may take time, especially with larger disks.
  • Always double-check your commands to prevent accidental data loss.

Conclusion

The Linux DD command is a robust tool for cloning disks, including Windows disks. By following the outlined steps and keeping troubleshooting tips in mind, users can successfully clone their Windows installations to a new disk. Whether for backup, migration, or recovery purposes, Linux DD offers a reliable solution.

For more information about Linux commands and disk management, check out this comprehensive guide. If you need further assistance or wish to explore other disk cloning methods, consider visiting our resources page.

This article is in the category Guides & Tutorials and created by Windows Portal Team

This tutorial represents a practical excerpt on how to migrate (also known as cloning) a Windows 10 Operating System from a large HDD with multiple partitions, such as C:, D:, to a smaller SSD using a Linux distribution which includes Clonezilla utility.

Clonezilla utility can run from PartedMagic Linux distribution CD ISO image or directly from Clonezilla Linux distribution CD ISO image.

This guide assumes that both disks (old HDD and SSD) are physically plugged-in into your machine simultaneously and Windows OS is installed on a disk with MBR partition scheme table. Fdisk command line utility should display the disklabel type as DOS.

Read Also: 8 Open Source Disk Cloning and Backup Solutions for Linux

If disk in partitioned in MBR layout from UEFI, you should clone all partitions, such as Windows RE partition, EFI System partition, Microsoft Reserved partition and Microsoft basic data partition which holds the Windows OS partition, typically the C: drive. In this case Fdisk command line utility should report the disklabel type as GPT.

On the below screenshots you can review the initial Windows partitioning scheme in case of a MBR layout style and GPT partition layout performed from UEFI.

MBR Partition Layout from Disk Management

Check MBR Partition Layout

Check MBR Partition Layout

GPT Partition Layout from Disk Management

Check MBR Partition Layout

Check MBR Partition Layout

Step 1: Shrink C: Partition of Windows System

Be aware that in the case your windows C: partition from the HDD is larger than the total size of your SSD you will need reduce its size to fit on the SSD.

The calculations for this step are simple:

System Reserved + Recovery + EFI partition + Windows C: partitions must be smaller or equal than the total size of the SSD reported by a utility such as fdisk.

1. To shrink C: partition from Windows, first open a Command Prompt window and execute the diskmgmt.msc to open Windows Disk Management utility which will be used to Shrink the volume (assuming that windows is installed at the beginning of the disk on the second partition, after the System Reserved partition and has C: letter assigned) in order to reduce its size to minimal.

Shrink C Partition

Shrink C Partition

Feel free to use other partitioning tools for this step, such as Gparted run from a live Linux ISO, to reduce C: drive size to minimal.

2. After you’ve reduced the size of C: partition, plug the SSD drive to your machine motherboard and reboot the machine into Clonezilla utility (use Clonezilla ISO image or <arel=”nofollow” href=”https://partedmagic.com/downloads/” target=”_blank”>Parted Magic ISO), enter to Bash shell interface and check both disks partition table and size using the below commands.

# fdisk -l /dev/sda
# fdisk -l /dev/sdb
Check Partition Table Size

Check Partition Table Size

Be aware that your drives names would be sda for the first disk, sdb for the second and so on. Choose the disk with maximum attention so you won’t end-up cloning the wrong device and destroy all data.

To match the correct disk source (HDD in this case) and disk destination target (SSD) use the size and the partition table reported by fdisk command. Fdisk output will show that the SSD should be smaller in size than your HDD disk and should have no partition table created by default.

In case of a GPT disk, the HDD partition table should look as illustrated on the below screenshot.

$ su -
# fdisk -l /dev/sda
# fdisk -l /dev/sdb
Check Partition Disk Label

Check Partition Disk Label

Step 2: Clone Disks Using Clonezilla

3. Next , clone only the MBR (stage one bootloader + partition table) from the HDD to the SSD target disk using one of the below commands (assuming that sda represents the drive where Windows OS is installed and sdb the SSD disk).

# dd if=/dev/sda of=/dev/sdb bs=512 count=1
or
# sfdisk -d /dev/sda | sfdisk -f /dev/sdb
Clone Disks Using Clonezilla

Clone Disks Using Clonezilla

In case of a GPT partition style you should clone the first 2048 bytes:

# dd if=/dev/sda of=/dev/sdb bs=2048 count=1

Or use sgdisk utility. Be aware that if you copy partition table from sda to sdb you should inverse the order of disks when using sgdisk.

# sgdisk -R /dev/sdb /dev/sda

After cloning the MBR/GPT, run fdisk command again with the -l flag to verify if the partition table matches on both disks.

# fdisk -l /dev/sda
# fdisk -l /dev/sdb
Verify Partition Table

Verify Partition Table

4. By now both drives should have the exact partition table. On the target disk now delete all the partitions that follow after the Windows partition in order to start with a clean partition table with the entries necessaries only for system reserved and windows.

You won’t clone data from D: (or other partitions that follow Windows) from the old drive. You’re basically cloning only the first two partitions from the old HDD. Later you will use this unallocated space left behind to extend the C: partition by incorporating all the unused space from SSD.

Use fdisk utility as described below to delete partitions. First run the command against your SSD target drive (/dev/sdb this case), print partition table with p key, press d key to start delete partitions and choose the last partition number from the prompt (in this case the third partition) as illustrated in the below screenshots.

# fdisk /dev/sdb
Delete Partition Table

Delete Partition Table

In case your drive has more than one partition following after the Windows partition, make sure you delete all of them. After you’ve finished removing all unneeded partitions, press p key again to print partition table and if, by now, only the two required Windows partitions are listed, you are safe to hit on w key in order to apply all changes.

Confirm Partition Changes

Confirm Partition Changes

The same procedure for deleting last partitions applies for GPT disks also, with the mention that you should use cgdisk utility which is intuitive to work with in manipulation a disk layout.

Don’t worry about destroying backed-up partition table at the end of the GPT disk, cgdisk will make the appropriate changes on both partition tables and will save the new disk layout table at the end of the disk automatically.

# cgdisk /dev/sdb
Delete GPT Partition

Delete GPT Partition

And the final GPT disk report with the last 4,9 GB partition deleted.

Verify GPT Partition Table

Verify GPT Partition Table

5. Now, if everything is in place, start Clonezilla utility, select device-device mode, run from beginner wizard and select part-to-local_part cloning option.

Use the below screenshots for guide.

Select Clonezilla Device Mode

Select Clonezilla Device Mode
Select Clonezilla Beginner Mode

Select Clonezilla Beginner Mode
Select Clonezilla Local Partition Clone

Select Clonezilla Local Partition Clone

6. Choose the first local partition from the list (sda1 – System Reserved ) as source and press Enter key to continue.

Select Partition to Clone

Select Partition to Clone

7. Next, choose the local target partition, which will be the first partition from the second disk, (/dev/sdb1) and press Enter key to continue.

Select Local Target Partition

Select Local Target Partition

8. On the next screen choose to Skip check/repair file system and press Enter key again to continue.

Skip Check Repair Filesystem

Skip Check Repair Filesystem

9. Finally, press Enter key again to Continue and answer with yes (y) twice to accept the warnings and start the cloning process.

Confirm Partition Changes

Confirm Partition Changes
Start Cloning Partition

Start Cloning Partition

10. After the cloning process of the first partition finishes select to enter command line prompt, run clonezilla and repeat the same steps for next partitions (source sda2 – target sdb2, etc).

Clone Second Partition

Clone Second Partition

11. After all windows partitions are cloned, reboot the system and physically unplug the HDD drive or, better, tamper BIOS settings in order to set SSD as primary boot drive instead of old HDD.

Step 3: Resize Windows Partition

12. You can run Gparted utility to check partitions sanity and extend windows partition from Linux or you can just boot into Windows and use Disk Management utility to do this job. The below screenshots illustrate how to use both utilities.

Extend Partition using Gparted Live CD

Resize Partition Using GParted

Resize Partition Using GParted
Resize Partition Size

Resize Partition Size

Extend Partition using Windows Disk Management utility directly from Windows.

Extend Windows Partition

Extend Windows Partition
Select Disk to Extend

Select Disk to Extend

That’s all! The C: partition is now expanded to the maximum size of your SSD and Windows can now run at its maximum speed on a brand new SSD. The old HDD has all data intact.

Connect the hard-disk again in order to use it in case you’ve physically removed it from the motherboard. You can delete system reserved partition and windows partition from the old HDD and create a new partition instead of these two. The other old partitions (D:, E: etc) will remain intact.

Conclusion

With Clonezilla you can also choose to image the partitions and save them to an external HDD or a network location. In this case you must also backup HDD MBR/GPT with one of the following commands and save the MBR image to the same directory where your clonezilla images are kept.

MBR backup to file:

# dd if=/dev/sda of=/path/to/MBR.img bs=512 count=1
or
# sfdisk -d /dev/sda > =/path/to/sda.MBR.txt

GPT Backup to file:

# dd if=/dev/sda of=/path/to/GPT.img bs=2048 count=1
or
# sgdisk --backup=/path/to/sda.MBR.txt /dev/sda

For a future restoration of your Windows system from a network location, first restore the MBR sector from the saved imaged above using one of the below commands, then proceed with restoring each clonezilla partition image one by one.

MBR image restore from file:

# dd if=/path/to/MBR.img of=/dev/sda bs=512 count=1
or
# sfdisk /dev/sda < =/path/to/sda.MBR.txt

GPT image restore from file:

# dd if=/path/to/GPT.img of=/dev/sda bs=2048 count=1
# sgdisk - -load-backup=/path/to/sda.MBR.txt /dev/sda

Read Also: How to Clone or Backup Linux Disk Using Clonezilla

This method has been used multiple times on BIOS motherboards and on UEFI machines with Windows installed from Legacy Mode (CSM) or directly from UEFI without any error or data loss.

Will Linux dd Clone a Windows Disk?

Understanding the Basics

Before we dive into the answer, let’s cover some basic concepts related to disk cloning and the Linux operating system.

  • Disk Cloning: Disk cloning is the process of creating a copy of a disk or partition. This can be useful for various purposes, such as creating a backup, migrating data to a different system, or even creating a bootable USB drive.
  • dd Command: The dd command is a powerful tool for disk cloning. It stands for «disk copy» and is used to create a copy of a disk or partition.

Linux dd Clone a Windows Disk

Now, let’s explore whether Linux can clone a Windows disk using the dd command.

  • Yes, Linux can clone a Windows disk: With the right tools and configuration, Linux can clone a Windows disk using the dd command. This is achieved through the use of the dd command with the -c option, which stands for «copy».
  • Requirements: To clone a Windows disk using Linux, you’ll need to have the following:
    • A Linux distribution with the dd command available (e.g., Ubuntu, Debian, or Fedora).
    • A Windows disk to clone (e.g., a USB drive or an external hard drive).
    • A compatible Linux kernel version (e.g., 4.15 or later).
  • Step-by-Step Process

Here’s a step-by-step guide to cloning a Windows disk using Linux:

Step 1: Prepare the Windows Disk

  • Backup the Windows disk: Before cloning, make sure to backup the Windows disk to prevent any data loss.
  • Format the Windows disk: If the Windows disk is not already formatted, format it using the Windows Disk Management tool or a third-party tool like Acronis True Image.

Step 2: Install the Linux Distribution

  • Install the Linux distribution: Install the Linux distribution of your choice on a virtual machine or a physical machine.
  • Configure the Linux distribution: Configure the Linux distribution to use the dd command for disk cloning.

Step 3: Clone the Windows Disk

  • Mount the Windows disk: Mount the Windows disk using the mount command.
  • Use the dd command: Use the dd command with the -c option to clone the Windows disk.
  • Specify the source and destination: Specify the source and destination disks or partitions using the -s and -d options.
  • Verify the clone: Verify the clone by checking the disk’s contents using the df command.

Example Use Case

Here’s an example use case for cloning a Windows disk using Linux:

# Clone the Windows disk
sudo dd if=/dev/sdb1 of=/dev/sdc1 bs=1M

# Verify the clone
df -h /dev/sdc1

Security Considerations

When cloning a Windows disk using Linux, it’s essential to consider security implications:

  • Data encryption: Consider encrypting the cloned disk to protect sensitive data.
  • Access control: Ensure that the cloned disk is accessible only to authorized users or systems.
  • Backup and recovery: Regularly backup the cloned disk and have a plan in place for recovering it in case of data loss.

Conclusion

In conclusion, Linux can clone a Windows disk using the dd command. With the right tools and configuration, you can create a copy of a Windows disk and transfer it to a different system or device. However, it’s essential to consider security implications and backup and recovery plans to ensure the integrity and availability of the cloned disk.

Additional Resources

For more information on disk cloning and Linux, you can refer to the following resources:

  • Linux Documentation: The official Linux documentation provides detailed information on disk cloning and the dd command.
  • Linux Tutorial: A comprehensive Linux tutorial covers disk cloning and the dd command.
  • Online Forums: Online forums, such as Reddit’s r/AskLinux, provide a community-driven space for discussing Linux and disk cloning.

Unlock the Future: Watch Our Essential Tech Videos!

Время на прочтение9 мин

Количество просмотров50K

После прочтения статьи «Фривольное клонирование ОС MS Windows XP / Server 2003 своими руками, средствами GNU/Linux» возникло естественное желание дополнить ее в соответствии с реалиями конца 2014 года.

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

MBR, таблица разделов и сигнатура диска

Начнем с копирования данных. Какие же данные нам нужно скопировать? Для Windows XP это MBR (446 байт в начале диска, основная таблица разделов и завершающая сигнатура 55AAh), данные о расширенных разделах и собственно данные системного раздела Windows. Для Vista и Windows 7 добавляется еще и 100-мегабайтный системный раздел (GPT не рассматриваем). При этом нужно помнить, что первый раздел в Windows XP по-умолчанию начинается с сектора 63, а в Windows Vista/7 — с сектора 2048. Естественно, все операции мы будем проводить на незапущенной Windows, загрузившись с System Resque CD.

Так вот, не стоит копировать MBR «в лоб», для этого в Linux существует утилита ms-sys, которая записывает загрузчик любой версии Windows от Win95 до Win7 в MBR. Для сохранения и восстановления структуры разделов есть утилита sfdisk.

Например, так:

sfdisk -d /dev/sda > ./parttable.txt (сохраняем структуру разделов)
sfdisk -f /dev/sda < ./parttable.txt (восстанавливаем на другом ПК)
ms-sys -mbr /dev/sda (записываем MBR от Windows XP)

Добавлено:
Для того, чтобы WIndows загрузилась, необходимо также сформировать подпись диска (disk signature). Для этого нужно прочитать содержимое ключа реестра HKLM\SYSTEM\MountedDevices\<\DosDevices\«Имя раздела на диске с двоеточием»>, и выделить первые 8 байт (в шестнадцатеричной записи), например: 4F BE 4F BE. Сделать это на смонтированном в Linux NTFS-томе можно с помощью описанной ниже утилиты reged. Следует учесть, что в reged имя ключа, содержащее слеш, нужно указывать через двойной слеш, например: \\DosDevices\\C:. Затем указанные 8 байт следует записать на диск начиная со смещения 0x01B8 утилитой hexedit. После этого диск готов к загрузке.

Данные разделов NTFS

После копирования MBR и структуры разделов можно копировать собственно данные разделов с помощью partclone. Инструмент partclone позволяет создавать образы разделов ext2/3/4, fat, ntfs, xfs, btrfs, reiserfs и т. д., анализируя внутреннюю структуры ФС и включая в образ только используемые сектора. Создадим на эталонном ПК образ раздела с помощью partclone, размер образа будет равен размеру используемого на томе места.

partclone.ntfs -c -s /dev/sda1 -o <файл образа>

а на целевом компьютере развернем его

partclone.ntfs -r -s <файл образа> -o /dev/sda1

или

partclone.restore -s <файл образа> -o /dev/sda1

К сожалению, внутреннее сжатие в образе не поддерживается.

Возможно также прямое копирование данных с одного устройства на другое с помощью ключа -b:

partclone.ntfs -b -s /dev/sda1 -o /dev/sdb1

Теперь рассмотрим вопрос восстановления данных на раздел размера, меньшего, чем эталонный. Для этого нужно смонтировать partclone-образ и либо скопировать с него файлы на целевой том с сохранением атрибутов, разрешений, hardlink-ов и прочих свойств NTFS, либо уменьшить размер раздела NTFS внутри образа partclone, а уже затем скопировать этот уменьшенный раздел на целевой том командой partclone.ntfs с ключом -b.

Мне не известны инструменты, которыми можно было бы в Linux скопировать файлы и hardlink-и с одного тома NTFS на другой со всеми атрибутами и потоками (если кому-нибудь они известны, прошу в комментарии), так что у нас остается только вариант с уменьшением размера тома. К счастью, существует инструмент imagemount, который экспортирует partclone-образ как блочное устройство nbd и поддерживает монтирование образа в том числе и на запись, при этом изменения сохраняются в отдельном файле (ключ -с). Экспортируем том на запись

modprobe nbd max_part=16
imagemount -w -D -d /dev/nbd0 -f /mnt/images/winxp.img -c ./cow.bin

Теперь изменим размер ФС на томе NTFS. Сначала будет сделан тестовый прогон (ключ -n)

ntfsresize -s <новый размер> -n /dev/nbd0

а затем — реальный:

ntfsresize -s <новый размер> /dev/nbd0

Клонируем раздел:

partclone.ntfs -b -s /dev/nbd0 -o /dev/sda1

А теперь — щепотка пичальки

Imagemount, даже последней версии — 0.3.1, не работает с дисками на запись на архитектуре x86_64 (зависает намертво) и практически не работает на архитектуре i386 (записывает образ с ошибками), поэтому изменение размера раздела на данный момент невозможно. Буду писать в багртекер partclone-utils.

К сожалению, partclone не поддерживает сжатие образов, но эту проблему можно обойти с помощью так любимых в Linux костылей и подпорок. Создадим пустой образ формата qcow2 с виртуальным размером, заведомо превышающим наши потребности (например, 1 Tb). Его реальный объем будет увеличиваться в зависимости от количества данных, которые мы туда запишем.

qemu-img create -f qcow2 <файл образа> 1024G

Смонтируем его как блочное устройство

modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 <файл образа>

Теперь скопируем на виртуальное устройство файловую систему

partclone.ntfs -b -s /dev/sda1 -o /dev/nbd0

размонтируем устройство и в результате получим файл qcow2 с размером чуть больше, чем размер исходного NTFS-тома. Теперь к файлу можно применить внутреннее сжатие:

qemu-img convert -c <файл образа> <сжатый файл образа>

Легко заметить, что этот способ требует удвоенного места на диске для хранения исходного и сжатого образов, а также дополнительное время на сжатие. Если мы применим еще один костыль, то избавимся и от этих недостатков. После монтирования образа qcow2 (командой qcow-nbd -c /dev/nbd0 <файл образа>) отформатируем его в файловую систему btrfs

mkfs.btrfs /dev/nbd0

а теперь смонтируем со сжатием:

mount -o compress-force=zlib /dev/nbd0 /mnt

и создадим образ файловой системы NTFS

partclone.ntfs -c -s /dev/sda1 -o /mnt/ntfs-image.bin

После этого размонтируем все.

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

Мне, например, удалось уменьшить размер образа со свежеустановленной Windows XP c 2,7 Gb до 587 Mb. При этом можно смонтировать образ без распаковки и просмотреть файлы внутри.

Гораздо лучше, чем набившие оскомину dd | gzip, не так ли?

Запуск Windows на новом оборудовании

Теперь перед нами стоит вторая задача — сделать так, чтобы установленная на том NTFS Windows смогла запуститься. В случае Windows 7 копируем еще и загрузочный раздел, для Windows Vista — дополнительно делаем (с Windows Vista Live CD) перезапись BCD, чтобы данные в этой области соответствовали серийному номеру жесткого диска, проверяем, чтобы у загрузочного раздела стояла соответствующий флаг boot (можно сделать через parted) и перезагружаемся. После чего с некоторой вероятностью получаем синий экран с надписью 0x0000007B Inaccesseble boot device. В этом случае для Windows XP рекомендуется выставить правильный HAL, но вот незадача, я уже давно не встречал одноядерные ПК без APIC и тем более ACPI, так что наш эталонный образ скорее всего уже содержит правильный многопроцессорный HAL. Поэтому не стоит надеяться, что замена HAL сразу исправит нашу проблему. Скорее всего, причина в том, что Windows не распознала контроллер жесткого диска, и, соответственно, не смогла продолжить с него загрузку.

Допустим, мы не пользовались sysprep при создании эталона (а то получиться неспортивно, потому что sysprep сделает всю работу за нас). Попробуем разобраться, почему ОС Windows не находит контроллер диска на новом оборудовании, несмотря на то, что в случае «чистой» установки она этот контроллер видит. Дело в том, что на завершающем этапе установки Windows отключает (якобы для ускорения загрузки) все драйверы контроллеров дисков, на которых не расположено системных разделов. Получается как с сусликом в фильме «ДМБ»: система его не видит, но он есть.

Включаем IDE-контроллеры: патч MergeIDE

Для Windows XP существует известный патч MergeIDE, который, собственно, и включает в реестре драйверы IDE-устройств обратно, попутно копируя файлы драйверов из driver.cab в \system32\drivers. Проблема в том, что этот патч предназначен для запуска из-под Windows. Попробуем наложить его под Linux вручную. Пусть раздел с Windows XP смонтирован у нас в /mnt, тогда:

cabextract -d /tmp/drivers "/mnt/WINDOWS/system32/Driver Cache/i386/driver.cab"
cd /tmp/drivers
cp atapi.sys intelide.sys pciide.sys pciidex.sys /mnt/WINDOWS/system32/drivers

Для того, чтобы наложить патч MergeIDE.reg на реестр, нужно его отредактировать, убрав переводы строк с помощью символа «\» в последних строках файла, а затем воспользоваться утилитой reged с ключом -I

reged -I /mnt/WINDOWS/system32/config/system HKEY_LOCAL_MACHINE\\SYSTEM ./MergeIDE.reg

Быть может, придется так же исправить ключ CurrentControlSet, который бывает не доступен на незапущенной Windows, на ControlSet001/002.

После этого можно перезагружаться. Надо сказать, в моей практике было несколько случаев, когда запустить образ на другом оборудовании не удавалось ни указанным выше способом, ни с помощью платных инструментов вроде Acronis Universal Restore.

Посмотрев содержимое файла MergeIDE.reg можно увидеть, что вся магия запуска загрузочного драйвера состоит в добавлении записей в две ветви реестра — HKLM\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase и HKLM\SYSTEM\CurrentControlSet\Services.
Ветвь CriticalDeviceDatabase содержит список устройств, необходимых для успешной загрузки системы и задает соответствие между классом устройства и той службой (драйвером), который за нее отвечает, а ветвь Services содержит параметры работы конкретных драйверов. Особенно интересен параметр Start — уровень запуска:
0 — загрузка до старта ядра загрузчиком ОС
1 — загрузка в момент инициализации ядра
2 — загрузка в процессе запуска ОС
3 — загрузка по требованию
4 — не загружать
очевидно, если у нашего драйвера уровень запуска будет отличаться от 0, то соответствующего контроллера в момент загрузки мы не увидим.

MergeIDE.reg оперирует идентификатором класса 4d36e96a-e325-11ce-bfc1-08002be10318 — дисковые контроллеры ATA/ATAPI. Идентификаторы ClassGUID для различных классов устройств известны, их можно найти, например, здесь.
Таким образом можно заставить систему запускать в момент загрузки ядра в память любой драйвер, например, для сетевой карты, если вы загружаетесь через AoE или iSCSI.

Для Windows Vista/7 можно просто пройтись по ветви Services в поисках драйверов, содержащих в названии слово IDE, а потом изменить тип запуска (ключ Start) с «3-отложенный запуск» на «0-загружать в момент загрузки ядра». Для этих ОС есть еще один способ — находим в ветви Services записи msachi и iaStorV (универсальный драйвер AHCI и драйвер AHCI для устройств Intel) и так же изменяем тип запуска с «3» на «0», а потом идем в BIOS и меняем там тип контроллера дисков на AHCI. С Windows XP такой фокус, к сожалению, не прокатит, по причине отсутствия встроенного универсального драйвера AHCI.

Загружаемся с любого IDE или SATA-контроллера: драйвер UniATA

Поэтому обратим внимание на совершенно волшебный драйвер контроллера дисков UniATA от Александра Телятникова aka Alter. Этот драйвер инициализирует любой контроллер, считающий себя IDE- или AHCI-совместимым, а поэтому отлично подходит для наших целей. Порядок установки точно такой же — скопировать файл драйвера, прописаться в CriticalDeviceDatabase и в Services.

wget http://alter.org.ua/ru/soft/win/uni_ata/BusMaster_v45d.tgz
tar -xzvf ./BusMaster_v45d.tgz
cp uniata.sys /mnt/WINDOWS/system32/drivers
cp atactl.exe /mnt/WINDOWS/system32

Теперь интегрируем в образ файл my_uniata_inst.reg следующего содержания

UniATA_Inst.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2922]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="uniata"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\UniATA]
"Type"=dword:00000001
"Start"=dword:00000000
"ErrorControl"=dword:00000000
"Group"="System Bus Extender"
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,52,00,49,00,56,00,45,00,52,00,53,00,5c,00,75,00,6e,00,69,00,61,00,74,00,61,00,2e,00,73,00,79,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\UniATA\Parameters\PnpInterface]
"1"=dword:0x00000000
"5"=dword:0x00000000
"SkipRaids"=dword:0x00000001

Здесь ven_8086&dev_2922 — идентификатор установленного SATA-контроллера. Мы также считаем, что CurrentControlSet у нас нет и используем активную ветвь — ControlSet001, номер которой указан в HKLM\SYSTEM\Select\Current.

reged -I /mnt/WINDOWS/system32/config/system HKEY_LOCAL_MACHINE\\SYSTEM ./my_uniata.reg

Если такой способ не срабатывает — можно попробовать более «грязные» методы установки — с помощью файла uniata_w2k.reg из архива с драйверами или по инструкции на сайте разработчика.

Еще пичалька

Как оказалось, UniATA не может инициализировать виртуальный контроллер Intel 8086:2922, который эмулируется QEMU. «Соседний» виртуальный IDE-контроллер инициализируется замечательно. Чей это баг — QEMU или UniATA, не совсем понятно.

Об инструментах

Основной набор утилит можно найти в System Rescue CD. Сюда входят ms-sys, mkfs.btrfs, sfdisk, partclone и reged. Imagemount можно взять из пакета partclone-utils, просто распаковав его в корневую ФС systemresquecd. С пакетом qemu-utils дела обстоят сложнее. Я создавал в отдельном каталоге минимальную установку Debian с помощью debootstrap, затем делал туда chroot и уже потом ставил qemu-utils через apt-get. Перед запуском qemu-nbd нужно не забыть примонтировать /proc, /sys и /dev внутрь chroot’а.

Заключение

Скрытый текст

Купите лучше Acronis Universal Restore

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

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

Замечание: резервная копия в виде файла образа бесполезна, если хранится на том же диске, что и ваши данные. Чтобы сохранить ваши файлы, приобретите внешний диск для бэкапов, и сохраните образ на него, но не на тот диск, бэкап которого вы создаете.

Почему бэкап обычно делают в файл образа? Как следует из названия, файл образа — это один файл, содержащий всю резервную копию. Это означает, что вы можете обрабатывать его так же, как и любой другой файл, независимо от того, хотите ли вы переместить, скопировать или удалить его и т. Д. Это позволяет вам легко перемещать резервную копию на другие носители или даже делать несколько копий, чтобы даже ваша резервная копия имела резервные копии.

Ниже перечислены 4 популярных способа создания образа жесткого диска.

[GNOME Disks]

GNOME Disks это программа, которая доступна на любом дистрибутиве Linux. Обычно она используется для форматирования жестких дисков, стирания на них данных, создания или модификации разделов на диске. Однако она также позволяет вам преобразовать полностью диск в образ, т. е. создать .img backup.

Чтобы преобразовать ваш жесткий диск в образ диска, выберите нужный диск перейдите в меню опций (обычно оно выбирается кнопкой с тремя точками), и кликните на «Create Disk Image…»

GNOME disks fig01

Откроется дополнительное окно диалога, в котором просто выберите место, куда необходимо сохранить образ, и кликните на кнопку «Start Creating…».

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

Восстановление диска из образа довольно просто, и выполняется аналогичными шагами. Для этого нужно перейти в меню опций, выбрать пункт «Restore Disk Image…», и затем выбрать файл образа .img, из которого вы хотите восстановить жесткий диск.

[Partimage]

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

Однако у программы Partimage есть большой недостаток — она не поддерживает файловые системы ext4 или btrfs, и клонируемые файловые системы должны быть предварительно размонтированы. Это значит, что вы не сможете клонировать диск, где находится корневая файловая система (root drive), поскольку она используется.

Установка Partimage очень проста, она подразумевает использование менеджера пакетов вашей системы. Например, на Ubuntu и других дистрибутивах на основе Debian, используйте следующую команду:

$ sudo apt install partimage

После установки Partimage можно сразу запустить в терминале:

$ sudo partimage

Partimage fig04

Когда вы выбрали раздел, который хотите клонировать, следуйте инструкциям в меню, затем нажмите F5 для перехода в следующую секцию. Здесь можно будет выбрать уровень сжатия, возможность разделения образа на насколько файлов (последнее может пригодиться, когда сохраняете образ на диск с файловой системой FAT).

Partimage fig05

Когда вы нажмете F5 для продолжения, то будет выдан запрос подтверждения выбранных опций, после чего запустится процесс клонирования.

[CloneZilla]

В отличие от других программ в списке, Clonezilla не устанавливается на ваш компьютер. Вместо этого она запускается с флешки USB. Процесс подготовки флешки Clonezilla идентичен созданию флешек Linux Live USB [3].

Перейдите на официальный сайт Clonezilla [4], и загрузите ISO. Любая загруженная версия будет работать, но лучше загрузить вариант stable или alternative stable.

CloneZilla fig06

Затем вам нужно записать загруженный образ на флешку USB, перезапустить компьютер, и обеспечить загрузку с только что созданного Clonezilla Live USB. После загрузки выберите режим «device-image» для клонирования вашего жесткого диска, затем выберите место, куда хотите сохранить новый образ файла, и следуйте остальным инструкциям.

CloneZilla fig07

Когда увидите запрос выбора режима beginner или expert, для упрощения выберите beginner. Остальные пункты меню будут более простые для понимания.

CloneZilla fig08

[dd]

Утилита командной строки dd присутствует в любом дистрибутиве Linux. Важное замечание: dd является очень мощным инструментом, и её некорректное использование может иметь некоторые очень радикальные последствия, так что будьте осторожны. Очень легко случайно перезаписать жесткий диск. Всегда перепроверяйте цель вывода перед использованием команды.

Для использования dd сначала необходимо выяснить имя диска, который вы хотите клонировать. Для этого существует несколько способов, например команда lsblk, которая выведет список ваших дисков и их разделов.

$ lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                 7:0    0     4K  1 loop /snap/bare/5
loop1                 7:1    0   104M  1 loop /snap/core/16928
loop2                 7:2    0 104,2M  1 loop /snap/core/17200
loop4                 7:4    0  55,7M  1 loop /snap/core18/2829
loop5                 7:5    0  63,9M  1 loop /snap/core20/2318
loop6                 7:6    0    64M  1 loop /snap/core20/2379
loop7                 7:7    0  74,2M  1 loop /snap/core22/1380
loop8                 7:8    0  74,2M  1 loop /snap/core22/1621
loop9                 7:9    0 253,5M  1 loop /snap/electronic-wechat/7
loop10                7:10   0 505,1M  1 loop /snap/gnome-42-2204/176
loop11                7:11   0  91,7M  1 loop /snap/gtk-common-themes/1535
loop12                7:12   0  12,9M  1 loop /snap/snap-store/1113
loop13                7:13   0  55,4M  1 loop /snap/core18/2846
sda                   8:0    1 115,5G  0 disk 
└─sda1                8:1    1 115,5G  0 part 
  └─veracrypt4      252:2    0 115,5G  0 dm   /media/veracrypt4
sdb                   8:16   0   1,8T  0 disk /media/microsin/samsung2TB
nvme0n1             259:0    0 476,9G  0 disk 
├─nvme0n1p1         259:1    0   502M  0 part 
├─nvme0n1p2         259:2    0 476,4G  0 part 
│ ├─vgubuntu-root   252:0    0 472,8G  0 lvm  /
│ └─vgubuntu-swap_1 252:1    0   3,6G  0 lvm  [SWAP]
└─nvme0n1p3         259:3    0    10M  0 part

В этом примере мы будем клонировать диск sda. Для этого используйте команду наподобие следующей:

$ sudo dd if=/dev/sda of=/media/microsin/samsung2TB/backup.img status=progress

Здесь опция if задает источник клонирования, а of файл назначения. Важный момент: обратите внимание, что для места назначения выбран другой физический диск. Как только процесс клонирования завершится, вы сможете переместить файл образа или заархивировать его (например с помощью tar и gzip [5]).

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

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

$ sudo dd if=/путь/до/backup.img of=/dev/sda

Что делать, если случайно стерли жесткий диск. В большинстве случаев вы вряд ли вернете свои данные обратно. Однако можно попробовать использовать утилиту PhotoRec [6] для восстановления файлов, которые не были перезаписаны.

[Ссылки]

1. 4 Ways to Clone an Entire Hard Drive on Linux site:maketecheasier.com.
2. How to Back Up Files to Google Drive on Linux site:maketecheasier.com.
3. Make Linux Live USB Easily with balenaEtcher site:maketecheasier.com.
4. Clonezilla Free and Open Source Software for Disk Imaging and Cloning.
5. tar: практика использования.
6. PhotoRec, Digital Picture and File Recovery site:cgsecurity.org.
7. Windows 7: клонирование системного диска.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Активация windows через скайп
  • Tiworker exe windows modules installer worker можно ли отключить
  • Windows modules installer wor
  • Как изменить название папки пользователя в windows 10 pro
  • Не включается bitlocker windows 10