Pull to refresh
3
0

Enterprise Architect

Send message

Уже был. Undisker. Да и сам Acronis изначально российский был.
В свое время успешно зареверсил tib и tibx, но уже охладел к теме.

Была у меня такая машинка, коллега из Японии по заказу привез. Какой же азарт был попытаться туда винду поставить!

Очень напоминает крохотную программку на Турбо Паскале, которая гуляла у нас по универу в начале 90х с той же целью "мы можем компактно и просто". Прямо один в один.
Примерно в то же время появился крохотная демка на ассемблере "марс" с бесконечной воксельной поверхностью и управлением мышкой. Кажется всего 256 байта была. Ее кстати тоже в JS перевели: http://www.ppl-pilot.com/scripts/demo.js

Давайте так, я суммирую ваше утверждение, а вы мне скажете, правильно я понял, или нет:

  • Стандарт ISO подразумевает начало данных с MSF 2:0:0 или LBA 150. Все предыдущие сектора для дисков данных априори считаются заполненными нулями

  • Ваша идея заключается в том, чтобы в неиспользуемое пространство дописать таблицу разделов, оформить ISO-9660 как отдельный ее раздел и добавить раздел для загрузчика

Т.е. фактически это попытка сделать универсальный формат, наподобие экспериментов с universal executive, где за счет легаси classic MZ-section прописывают заголовки для ELF, и это тоже не 100% корректно. И, опять же, термин Hybrid CD image уже занят на mixed-mode (data+audio), поэтому его использование не совсем корректно.

Технически же я вижу 2 проблемы:

  • Программы для записи ISO на CD/DVD чаще всего игнорируют первые 150 секторов, если они даны в формате ISO, а не BIN. Есть риск потери данных при записи на оптический носитель (если таковая операция, конечно, вообще предусметривается)

  • Секторы, на которых расположен загрузчик, должны быть видны из ISO-9660. Опять же, при записи на носитель такие области данных будут просто проигнорированы, если находятся за пределами LBA прописыных в ISO Volume. Проще всего представить такой загрузчик как файл на уровне файловой системы (как в ElTorito). Если, конечно, раздел не сликом большой и помещается в 2 GB.

    Собственно, это все, что вызвало у меня вопросы.

Спецификация El Torito не оперирует понятиями файл, она оперирует понятием сектор. В Booting Catalog хранятся LBA для первого сектора, где находится bootloader (для загрузки через BIOS) и LBA первого сектора, где находится образ раздела ESP (для загрузки через UEFI)

LBA указателю в ElToriro безразлично BIOS его читает или UEFI, главное чтобы LBA был валидным с точки зрения ISO-9660. А содержимое загрузчика стандартом, к счастью, не регламетируется, хотя стандарт и был изначально рассчитан на BIOS.

В UDF (Universal Disk Format) нет таблицы разделов - это файловая система. В моем понимании таблица разделов содержит информацию о том, какие сектора принадлежат конкретному разделу, а на разделе размещается файловая система. Файловая система, может занимать весь диск (блочное устройство), например, на дискете.

Совершенно верно. В UDF 2.5 и выше есть понятие разедлов, но они все до единого технические, ибо тот же стандарт предписывает иметь только один раздел для самих данных.

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

Еще раз, образ CD-диска (неважно ISO или UDF) не имеет разделов, не содержит GPT или MBR по структуре, я не понимаю, с чего вы это решили.

Вот тут я не понял, что Вы имеете ввиду

Бинарный образ, на который ссылается ElTorito volume может содержать какой угодно код, и, теоретически, может сам справиться с определение среды, носителя и файловой системы.

Да. Я это рассматриваю в главе "Ещё один способ создания загрузочного флеш-накопителя в Windows", где это делается обычными командами Windows, но это не имеет никакого отношения к гибридному ISO.

Я про это все время вас и спрашиваю: что, конкретно вы, называете "гибридным диском", поскольку ваше понимание с общепринятной терминологией не совпадает.

Форматируется USB под GPT, потом туда извлекаются файлы из ISO - я это и говорил. GPT данных в ISO нет, но есть совместимые в структуре UDF. Более того, UDF можно напрямую монтировать вместе со всеми разделами, даже не меняя ничего.

Можно ссылку на документацию? MBR/GPT вообще к ISO отношения не имеют.

<Зануда mode on>
Боюсь путаница с терминологией только усугубилась.

ISO - образ CD/DVD/BD диска с файловой системой ISO-9660 + расширения (RockRidge, Joliet, ElTorito) или UDF (опять же с кусочком совместимости с ISO-9660).

За загрузчика отвечает расширение ElTorito, которое просто указывает на файл, который еще должен быть виден через ISO-9660

Понятие "раздел" имеет смысл только для UDF, где есть таблица разделов на уровне структуры UDF. Классический ISO-9660 не имеет разделов, а запись на диски оперирует понятием "сессия", но это совсем другое.

Гибридный диск (если мы говорим о Hybrid-CD), то это ныне забытый формат CD (и только CD), где аудио-дорожки соседствуют с даннными, но его невозможно сохранить в ISO по определению (можно только BIN, MDF, и т.д.).

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

Обычные утилитки вроде https://www.microsoft.com/en-us/download/windows-usb-dvd-download-tool просто-напросто пишут свой boot sector, который умеет искать загрузчик самого Windows в корневом каталоге конкретной файловой системы.

Вы не путаете ISO и UDF?

Файловая система разная, способ загрузки разный, короче тут конвертация а не копирование на флешку.

Посекторное копирование из ISO возможно только на CD/DVD (размер физического сектора 2048 против 512). На флешку просто извлекаются данные (включая загрузочный файл).

Видимо вы неправильно поняли мой комментарий. Мне искренне интересно, есть ли все еще спрос на эту тему. Я посвятил ей более 25 лет, но просто спроса более не наблюдаю, только в контексте прочтения старых образов. В какой области это сейчас востребовано?

Скажите често, это кого-то интересует в 2022 году? А то я прямо целый проект убил на эту тему, потому что спроса больше нет.

Это не потому, что ветряков так много, а потому, что ГЭС очень мало. Прямо очень. Не в почете они в ЕС, не любят они затопления.

До сих пор не могу привыкнуть, как народ внезапно открывает для себя технологии 30-летней давности и старше. Сначала все отринуть (кооперативная многозадачность), чтобы потом заново изобрести, забыв про предыдущий опыт (причины появления вытесняющей многозадачности).

Забыли самую старую и продуманую рефлексию - в Object Pascal (Delphi RTTI). Она появилась еще даже до появления Java, не говоря уже о Питоне. Очень многие вещи пошли оттуда.

в оригинале было "мягкими и шелковистыми"

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

Ну, грубо говоря (для C):

int foo() {
  /*
    if (cancerWhistles())
    {
       if foo2() return 0;   
  */
}

Information

Rating
Does not participate
Location
Walldorf, Baden-Württemberg, Германия
Registered
Activity

Specialization

Fullstack Developer, Software Architect
Lead