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

6289
zar

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

36
Что вы подразумеваете под «копировать / вставить»? Очевидно, вы должны скопировать части, которые фактически * делают * его загрузочным (например, загрузчик и т. Д.), Но нет никаких причин, по которым это не должно работать. Jörg W Mittag 5 лет назад 2

4 ответа на вопрос

56
K7AAY

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

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

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

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

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

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

Копирование справляется только с файлами в отформатированных разделах. Вы не сможете делать специальные вещи, необходимые для процесса загрузки, такие как установка флагов загрузки, запись загрузчика или иногда даже копирование обычных файлов в правильное место (читай: сектор) в разделе и установка атрибутов файлов / разрешения. Если вам не повезло, что эти вещи доступны, из-за предыдущего создания загрузочного диска, инструмента форматирования, который записывает загрузчик в 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 делает это по умолчанию), поэтому загрузка будет другой. Но применяется тот же предел: вам нужно изменить неразделенные области

Это правильный ответ. Margaret Bloom 5 лет назад 1
Это самый * тщательный * ответ, да, но я не верю, что он более правильный, чем принятый ответ, на который ИМО отвечает на простой вопрос простым способом. Ian Kemp 5 лет назад 0
@IanKemp проблема с принятым ответом не в том, что он прост (это хорошо), а в том, что он технически неоднозначен в лучшем случае :) Margaret Bloom 5 лет назад 0
3
Bob

Традиционно для загрузки 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
Sapphon

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

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

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

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