Если я скопирую загрузочный USB-диск на другой USB, создаст ли он дублирующий загрузочный диск?

37

Я думал, что это глупый вопрос, но поиск в Google, похоже, показывает, что невозможно даже скопировать / вставить данные с загрузочного диска на другой USB? Но даже если бы мы смогли скопировать его, почему он не должен работать? (это создает дубликат загрузочного диска)

зар
источник
2
Что вы подразумеваете под «копировать / вставить»? Очевидно, вы должны скопировать части, которые фактически делают его загрузочным (например, загрузчик и т. Д.), Но нет никаких причин, по которым это не должно работать.
Йорг Миттаг

Ответы:

56

Простое копирование файлов не сделает загрузочный диск. Это не только файлы на флэш-накопителе USB, которые делают его загрузочным, но и конфигурация таблицы разделов , метаданные об организации содержимого диска, которые сообщают ПК, является ли он загрузочным , и является ли он MBR или GPT .

Как отмечается на cyberciti.biz :

На каждом диске и разделе есть какие-то сигнатурные и метаданные / магические строки. Метаданные, используемые операционной системой для настройки дисков или подключения драйверов и подключения дисков в вашей системе.

Тем не менее, вы можете клонировать флэш-накопитель с помощью ряда инструментов, таких как dd , EaseUS Todo Backup , а также превосходных Clonezilla и Rufus с открытым исходным кодом . (Спасибо Алексу за напоминания о дд и Руфусе).

Есть даже электронные устройства, которые автоматически копируют флешки .

K7AAY
источник
15
На самом деле вам даже не нужно dd: просто cpбудет работать - просто используйте его на узле устройства вместо содержимого файловой системы.
Руслан
Это удивительно. А может и нет. Но по крайней мере для меня.
Йорг Миттаг
1
'cat <source> destination' будет работать нормально, если в качестве цели выбран не стрелок, а источник.
ysdx
@JoL Вы не видели (теперь удаленный) комментарий от Jörg. Мой был ответом на его утверждение, cpчто просто скопировать узел устройства. Чтобы избежать путаницы, я тоже удалил свой комментарий.
Руслан
21

Копирование справляется только с файлами в отформатированных разделах. Вы не сможете делать специальные вещи, необходимые для процесса загрузки, такие как установка флагов загрузки, запись загрузчика или иногда даже копирование обычных файлов в правильное место (читай: сектор) в разделе и установка атрибутов файлов / разрешения. Если вам не повезло, что эти вещи доступны, из-за предыдущего создания загрузочного диска, инструмента форматирования, который записывает загрузчик в MBR и т. Д., Вам нужно будет сделать больше шагов, чтобы сделать диск загрузочным.


В частности, при загрузке в режиме BIOS BIOS ищет первый сектор (MBR), чтобы определить, существует ли допустимая загрузочная подпись 0xAA55 . Если да, то он загружает этот сектор и передает управление загрузчику в MBR. MBR описывает конфигурацию раздела, поэтому он не может находиться внутри раздела и является не может копироваться обычными инструментами.

Кроме того, поскольку MBR слишком мал, чтобы быть полезным, большинство современных загрузчиков разделяют процесс загрузки на несколько этапов , и загрузочный код в MBR загружает следующий этап. Дальнейшие внутриэтапные этапы снова часто помещаются в области за пределами разделов . Некоторые могут поместить его в EBR , но grub обычно помещает свою вторую стадию в пустую область между первым разделом и MBR, которая называется разрывом после MBR. Вот почему, если не выровнять разделы должным образом, у grub нет места для загрузки загрузочного кода, что приводит к ошибке встраивания.

Многие загрузчики, такие как LILO или старые загрузчики Windows / DOS, также хранят информацию о жестком коде в MBR, например, положение следующего этапа или системных файлов. Они не работают, читая данные раздела, а вместо этого читают какой-то жестко закодированный сектор, поскольку для анализа файловой системы потребуется слишком много кода, который очень трудно сжать в крошечные пространства, такие как разрыв MBR или после MBR. Даже Grub поддерживает такое жесткое кодирование . Это означает, что некоторые системные файлы должны находиться в точном месте , сектор за сектором, чего нельзя добиться с помощью обычной копии. Вот почему вы видите «неподвижные системные файлы» во время работы дефрагментатора Windows или сжатия файловых систем, что иногда не совсем правильно, потому что просто Windows слишком боится перемещать эти файлы, хотя современные загрузчики намного умнее и не заботятся о таких вещах.

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


В UEFI все намного проще. Он знает о файловых системах FAT (и даже больше файловых систем в нестандартных реализациях), поэтому загрузочные файлы хранятся в системном разделе EFI, AKA ESP . UEFI загружает приложения * .efi в ESP, которые затем загружают операционные системы.

Микропрограмма UEFI поддерживает загрузку со съемных носителей, таких как флэш-накопители USB. Для этого съемное устройство должно быть отформатировано с файловой системой FAT12, FAT16 или FAT32, в то время как загрузочный загрузчик должен храниться в соответствии со стандартной файловой иерархией ESP или путем предоставления полного пути загрузочного загрузчика к системному менеджер загрузки.

Поэтому в основном вам просто нужно скопировать файлы * .efi в ESP и поместить системные файлы в правильную папку. Тем не менее, есть небольшая проблема, потому что раздел FAT, содержащий файл * .efi, должен быть помечен как ESP в таблице MBR или GPT вне разделов, что невозможно сделать путем копирования, как описано выше. В частности, тип раздела должен быть изменен с 0Ch / 0Bh / независимо от EFh в MBR и на C12A7328-F81F-11D2-BA4B-00A0C93EC93B в GPT, поскольку ESP на самом деле не FAT12 / 16/32, а независимая файловая система, основанная на семейство файловых систем FAT


И все же есть много других схем разметки, таких как метка диска BSD или APM, которые нужно изменить по-другому для загрузки. Или же USB-флешки могли быть отформатированы вообще без таблицы разделов (AFAIK Windows делает это по умолчанию), поэтому загрузка будет другой. Но применяется тот же предел: вам нужно изменить неразделенные области

phuclv
источник
1
Это правильный ответ.
Маргарет Блум
Это самый полный ответ, да, но я не верю, что он более правильный, чем принятый ответ, на который ИМО отвечает на простой вопрос в простой форме.
Ян Кемп
@IanKemp проблема с принятым ответом не в том, что он прост (это хорошо), а в том, что он технически неоднозначен в лучшем случае :)
Маргарет Блум,
Если вы пометите том USB-флешки как активный - с помощью утилиты windowsdm line "diskpart" или любого стороннего менеджера разделов - скопировав содержимое ISO-образа Windows Vista / 7/8/10, флешка станет загрузочной флешкой Windows; при загрузке не происходит никаких движений или установки. Очевидно, что после того, как вы пометили флешку как активную, все, что вам нужно, это небольшой файл образа загрузки (я думаю, bootmgr и bootmgr.efi в windows) на флешке; нет необходимости в сложных инструментах. Я ожидал бы простой процедуры командной строки в Linux, намного проще, чем Windows.
Red.Wave
3

Традиционно для загрузки BIOS требовался специальный невидимый маркер. Вот несколько примеров :

  • Если MBR-разделен («жесткий диск»), то внутри таблицы разделов
  • Если дискета / суперфлоппи ("диск ZIP"), в основном весь диск отформатирован без таблицы разделов, то в течение первых нескольких байтов
  • Если CD, то El Torito

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

Тем не менее , загрузка UEFI является особенной, более умной и специально решает эти проблемы. Как всегда, я рекомендую прочитать этот блог для упрощенного учебника по UEFI. Обратите особое внимание на запасной раздел загрузки. Это также обсуждается чуть более подробно здесь .

Все, что вам нужно для этого, - это файл по определенному пути в разделе, который будет искать прошивка. Для обеспечения оптимальной совместимости 1 , да, это должен быть раздел в формате FAT32, помеченный как системный раздел EFI на диске с разделами GPT. Однако в большинстве встроенных программ также выполняется поиск (одиночных) разделов на MBR-разделенных и неразделенных (суперфлоппи-дисках).

Это означает, что все, что вам действительно нужно для загрузки UEFI - это отформатированный FAT32 1 раздел с резервной загрузочной записью. В архитектуре x86_64 это означает, что вам просто нужен \EFI\BOOT\BOOTx64.EFIфайл. Вы можете просто скопировать с одной флешки на другую, включая этот файл, и все должно работать.


1 FAT32 и GPT требуются стандартом. MBR и superfloppy не являются, AFAIK, но их поддержка довольно универсальна среди настольного оборудования. Ноутбук немного более эзотеричен; планшеты - это проблема, а Mac EFI уникален.

2 Стандарт UEFI требует поддержки FAT32. Некоторые микропрограммы могут также поддерживать NTFS (хотя это и далеко не гарантировано), и вы можете встроить драйвер NTFS в FAT32 ESP.

боб
источник
0

Это зависит от того, что вы подразумеваете под «копией».

Копировать и вставить в графический интерфейс вашей операционной системы? Нет, это не сработает - некоторые файлы, которые нужны загрузочному USB, будут считаться «скрытыми» / невидимыми и не копироваться.

Есть типы копий, которые будут работать. Это часто называют «отображением» нового USB, чтобы отличать его от «копирования» его содержимого. Наиболее распространенный способ сделать это - инструмент командной строки, но графические опции доступны, если они вам нужны.

Этого должно быть достаточно, чтобы начать поиск!

Sapphon
источник