Фон

Одна из моих обязанностей требует наличия множества компьютеров с серией предварительно сконфигурированных программных пакетов, доступных для использования в довольно короткие сроки. Эти компьютеры имеют разное аппаратное обеспечение, и никаких автоматических обновлений не существует (не говоря уже о централизованной системе). Чтобы решить как проблему развертывания этих пакетов, так и их обновления, я пытался использовать Acronis True Image. Следуя различным инструкциям на виртуальной машине Windows 10, размещенной на macOS через VirtualBox, я:

  1. Использовал Acronis Snap Deploy 5 для создания загрузочного носителя Acronis .iso.
  2. Загрузился с этого изображения.
  3. Создан мастер-образ в автономном режиме.
  4. На новой виртуальной машине загрузился с загрузочного носителя и успешно развернул главный образ.

вопрос

Хотя .iso отлично работает для загрузки виртуальной машины:

Попытка записать .iso с помощью unetbootin просто заставляет его молча бороться, Руфус говорит, что изображение не поддерживается, и Etcher выдает ошибку, говоря, что нет файловой системы:

Что подтверждается монтированием образа в macOS и Windows:

Тем не менее, на изображении определенно есть реальные данные:

Вопрос

Как это возможно, что .iso прекрасно загружается с VirtualBox, но не имеет видимой файловой системы и не может быть записан на любой USB-диск? Как я могу создать загрузочную версию этого образа для использования с "настоящим" компьютером?

1 ответ1

0

Попробуйте написать изображение без использования инструментов преобразования (например, unetbootin). Вы можете использовать обычный dd или инструменты прямого отображения, такие как Win32DiskImager. В macOS этот пост предлагает:

  1. diskutil list для поиска устройства "/dev/diskX";
  2. diskutil unmountDisk /dev/diskX ;
  3. dd if=/path/to/iso of=/dev/rdiskX bs=1M (комментарии предлагают "rdisk" для производительности)
  4. diskutil eject /dev/diskX .

ISO-образы - это образы компакт-дисков (название происходит от "ISO 9660"), и они структурированы не так, как "обычные" диски. Самое главное, информация о загрузке находится в другом месте - на компакт-дисках используется загрузочная запись "El Torito" в секторе 17; BIOS-совместимые диски используют MBR в секторе 0; UEFI-совместимые диски используют GPT в секторе 1 и целый отдельный раздел, содержащий загрузчик.

Таким образом, для загрузки образа CD с USB есть два варианта:

  • Такие программы, как Rufus и Unetbootin, не просто "записывают" изображение; они конвертируют чистый образ CD в USB.

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

    Это требует, чтобы программа преобразования действительно понимала, как работает образ компакт-диска. (Например, если на компакт-диске использовался isolinux, конвертер должен установить syslinux на USB-накопитель.)

  • Такие программы, как isohybrid, подготавливают сам образ таким образом, чтобы он одновременно содержал CD (ISO 9660), BIOS (MBR) и загрузочный код UEFI, чтобы его можно было записать на любой тип диска без дальнейшего преобразования.

    В результате получается изображение, содержание которого зависит от того, как вы на него смотрите. При записи на компакт-диск ОС найдет обычную файловую систему ISO 9660. Когда точно такие же данные будут записаны на USB-диск, ОС найдет большой "пустой" раздел и очень маленький "загрузочный" EFI-раздел. Пример. Пример.

Оба метода сложны, но в худшем случае пытаются объединить оба. Например, в прошлом Unetbootin был хорошим инструментом преобразования CD → USB, но теперь, когда дистрибутивы Linux часто поставляются в виде уже совместимых с USB гибридных ISO-образов, Unetbootin имеет тенденцию неправильно понимать их содержимое и фактически выводит изображение, которое больше не выводится. ботинки.

Наконец, диски не должны иметь видимых файлов для того, чтобы быть загрузочными. Для загрузки диска или диска необходим минимум, но кроме этого, все контролируется самим загрузчиком disc/k. Так что не имеет значения, что вы видите полностью пустой диск; загрузчик может просто искать свои собственные данные в другом месте.


В вашем случае, вполне вероятно, что изображение уже в каком-то гибридном формате; он имеет только достаточно из ISO 9660 , чтобы найти прошивку загрузчика, но остальная часть ОС скрыт где - то в другом месте.

Вы можете попытаться определить, действительно ли он совместим с форматом загрузки BIOS MBR, используя:

head -c 512 file.iso | hexdump -Cv

Если самая последняя строка (000001f0) заканчивается 55 aa , это означает, что таблица разделов BIOS MBR присутствует.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .