Какое-то время назад я перестал выпускать EasyOS в виде файла ISO, и с тех пор выпускаю её только как файл образа диска. Решение оказалось спорным, и я продолжаю получать письма от людей, страдающих из-за отказа от этого формата. Поэтому мне стоит опубликовать свои мысли о том, почему я сделал такой выбор. Пост не будет исчерпывающим объяснением, это просто мысли, которые приходят мне в голову…

Формат файлов ISO9660 очень стар, он появился ещё в 1988 году, и с тех пор был расширен множеством дополнений (см. страницу ISO9660 в Википедии).

Кроме того, существует «гибридный ISO», обеспечивающий загрузку с USB-флэшки, а поверх него дополнения, позволяющие загружаться на компьютерах и со старым BIOS, и с более новым UEFI (см. здесь).

Всё это значит, что файлы ISO — это мешанина изменений, появлявшихся на протяжении многих лет.

В отличие от него, дистрибутив Linux, распространяемый в файле образа диска, очень прост. И его очень легко настроить для загрузки на компьютерах и с BIOS, и с UEFI.

Учитывая то, что оптические приводы быстро становятся историей, и сегодня мы загружаемся или с USB-флэшки, или выполняем установку непосредственно на раздел жёсткого диска, то в чём же различия ISO и файла образа?

В случае запуска с USB-флэшки разницы никакой.

Вам нужен инструмент для записи файла (ISO или файла образа) на USB-флэшку, и таких инструментов очень много. Например, есть Etcher для Windows, Mac и Linux, easydd для Linux, или же в Linux можно даже использовать утилиту dd.

Так как уже никто не записывает оптические диски, инструмент прожигания CD/DVD больше не нужен. И это единственное изменение, которое вам нужно внести.

Записав файл на USB-флэшку, будь то ISO или образ диска, вы должны будете настроить PC так, чтобы он загружался с флэшки, и дело в шляпе.

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

Файл ISO «не подходит» для USB-флэшки


Файл iso — это полный автономный пакет. Допустим, вы записываете гибридный файл ISO размером 550 МБ на USB-флэшку объёмом 16 ГБ. Вот что будет находиться на USB-флэшке:


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

С другой стороны, для дистрибутива типа live-CD (например, для Puppy Linux) это является проблемой, потому что «файл сохранения» можно создать только на каком-то другом диске, обычно на внутреннем. Разве не было бы здорово, если бы «файл сохранения» или «папку сохранения» можно было хранить на USB-флэшке? По крайней мере, стоит дать пользователю этот выбор.

В случае образа диска доступна вся USB-флэшка. Образ диска EasyOS содержит два раздела: «раздел загрузки» vfat и «рабочий раздел» ext4. Изначально рабочий раздел имеет размер всего 640 МБ, но при первом запуске он автоматически расширяется, заполняя накопитель. То есть на USB-флэшке объёмом 16 ГБ картина будет такой:


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

И вам больше никогда не придётся беспокоиться о размере «файла сохранения». При первом запуске вы получите доступ ко всему диску.

Всё это происходит мгновенно, а благодаря Диме (участник форума под ником dimkr), нашему самому активному разработчику woof-CE, дистрибутив Puppy следующего поколения будет распространяться в виде образа диска.

Почему отказ от файла ISO встречает такое сильное противодействие?


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

Насколько я понимаю, эти сообщения пишут ветераны Puppy. У них есть коллекция старых PC с оптическими приводами. Они знают только оптические диски, CD/DVD, файлы ISO. И меняться они не будут.

Это напомнило мне о моей мачехе, живущей сейчас в доме престарелых. Ей 88 лет, и она до сих пор пользуется телефоном-«раскладушкой» и кассетным плеером. Когда телекоммуникационные компании отказались от 3G, я купил ей устройство Android с сенсорным экраном. Несмотря на очень подробные инструкции и даже на то, что я расписал, как выполнять простые действия типа звонков и т. п., я вижу, что ей это не нужно. Она просто не хочет разбираться, и спустя какое-то время мне пришлось купить ей ещё одну «раскладушку».

То же самое и с её маленьким кассетным плеером. Недавно он сломался, и мне пришлось купить новый из Китая. Несколько лет назад пытался познакомить её с файлами mp3, но нет, ей это не нужно.

Примерно год назад я получил электронное письмо от представителя немецкого журнала, посвящённого Linux. Наверно, этот журнал до сих пор распространяется в печатном виде и с приклеенным на обложку CD. Этот человек хотел написать обзор EasyOS и решил задать несколько вопросов.

Но меня чрезвычайно озадачили его вопросы. Казалось, они не имели никакого смысла. Наконец, я осознал, что он понятия не имел, что такое дистрибутив Linux на файле образа диска. Он знал только ISO, ISO и ISO.

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

Подведём итог


Как я уже говорил, возможно, популярные дистрибутивы сохраняют привязанность к формату ISO просто потому, что у них нет стимула что-то менять. Разработчики просто хотят, чтобы пользователи загружались с CD/DVD, а затем устанавливали дистрибутив на внутренний диск.

Но во всём остальном время ISO прошло и ему пора на пенсию.

Ох, и да, есть старые компьютеры, которые не могут загружаться с USB, но они древние и уже готовятся к попаданию в «кремниевый рай» (чтобы знать, что такое кремниевый рай, нужно быть фанатом сериала «Красный карлик»).

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

Я не могу придумать ни одного способа применения, при котором предпочтительны файлы ISO.

Если вам любопытно, для разработчиков Linux у меня есть скрипт для создания скелетного файла образа диска с загрузочным и рабочим разделами, который будет загружаться и на устаревших компьютерах с BIOS и на современных с UEFI. Есть три скрипта — 2createpcskeletonimage, 2createpcskeletonimage-encrypt и 2createpcskeletonimage-gpt. Для easyOS я сейчас использую второй, он создаёт таблицу разделов MSDOS и включает fscrypt ext4 в рабочем разделе. Для загрузки на системах с BIOS используется Syslinux, для загрузки на системах с UEFI — rEFInd. Эти скрипты находятся в тарболе woofQ, выложенном здесь.

У Димы есть похожий скрипт, он использует Syslinux и Efilinux.

На создание этого поста меня мотивировало обсуждение на форуме Puppy:

https://forum.puppylinux.com/viewtopic.php?p=43658#p43658

Дополнение: приведённая выше ссылка ведёт на тему о Puppy нового поколения «Vanilla Dpup» Димы, и обсуждение плюсов и минусов форматов ISO в ней мешает теме, поэтому я создал новую:

https://forum.puppylinux.com/viewtopic.php?t=4690

Есть несколько постов об использовании инструментов для создания мультизагрузочных дисков наподобие Ventoy, в них говорится, как удобно просто скинуть файл ISO на USB-флэшку Ventoy и добавить его в список загрузки.

Однако стоит сказать, что файл ISO не имеет преимуществ перед файлом образа. Можно сделать так, чтобы менеджер загрузки обрабатывал файл образа как пакет, аналогично файлу ISO, и обеспечивал загрузку с него. Цитата со страницы Ventoy:

Прямая загрузка из файлов ISO/WIM/IMG/VHD(x)/EFI без необходимости распаковки

И там есть поддержка EasyOS:


Скриншот взят отсюда. Числа в левом столбце — это место в рейтинге Distrowatch.

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

Я получил письма от людей, запускавших EasyOS в виртуальной машине, но меня они не заинтересовали, потому что я не писал документацию, как это делать. Отличная новость, Дима опубликовал инструкцию о том, как запускать файл образа Puppy нового поколения из qemu:

https://forum.puppylinux.com/viewtopic.php?p=43900#p43900

Так что повторюсь: нет никаких ситуаций, в которых бы формат ISO имел бы преимущество перед дистрибутивом Linux в виде файла образа диска. Его преимущества кажутся таковыми только из-за незнания.

И ещё одна мысль: пара людей написала, что сложнее извлечь содержимое файла образа, vmlinuz и т. д., если нужно выполнить прямую упрощённую (frugal) установку на внутренний жёсткий диск. Это совершенно неверно!

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

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

Комментарии (11)


  1. sleirsgoevy
    15.12.2021 13:48

    Идея для проекта: диск ISO, который запускает гипервизор с эмуляцией "лишнего" харда и монтирует туда встроенный в себя образ флешки. Потенциальные плюсы перед решениями типа memdisk -- возможно эмулировать привод ещё и внутри операционки, так пришлось бы в грабе какие-то хитрые опции прописывать для загрузки с образа, и то не факт что initrd этого дистра так умее.


    1. fshp
      16.12.2021 06:58

      Что вы по гипервизором подразумеваете? Какой-нибудь xen? Зачем гипервизор для запуска лайвсд? Это сразу ограничит запуск виртуалки на системах без поддержки вложенной виртуализации.

      Какой толк от образа флешки, если она расположена на ISO? Она ж ридонли будет.


  1. drWhy
    15.12.2021 14:17
    +1

    Флешку можно разбить на разделы, тогда неиспользуемого объёма после записи единственного IOS не будет.
    Действительно есть множество программ, позволяющих создавать мультизагрузочные флешки парой нажатий кнопок. Менять программу и переделывать флешку из-за единственного дистрибутива или вникать в тонкости использования под капотом syslinux или grub полезно для развития кругозора, но лениво для большинства. Тем более скачивать дополнительные скрипты, которые могут утерять актуальность по мере выхода новых версий ОС.

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

    На данный момент дистрибутив доступен к загрузке в следующих вариантах: bios.img.gz, uefi.img.zip, iso, tar. КМК без двух из них можно обойтись, особенно учитывая что размер сжатых img меньше ISO на 2%, но их ещё нужно распаковывать перед записью на флешку. И что мешает в одном дистрибутиве сделать поддержку и BIOS и UEFI?


  1. nebularia
    15.12.2021 14:44
    +6

    Так ли легко подключить такой образ к ЛЮБОЙ виртуальной машине? Или к каким-то легко, к каким-то сложно, а где-то надо конвертировать руками?


    1. Evengard
      15.12.2021 18:55
      +1

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


  1. oWeRQ
    15.12.2021 18:43

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

    2. В iso всегда один раздел со всем известной файловой системой, хоть какае-то стандартизация.

    3. Образ диска не всегда понятно как запускать в виртуалке(EasyOS явно не из тех систем, что мне захочется проверить на своем железе), с qemu в общем-то легко подсунуть образ, но я с ходу не вспомнил что еще, кроме памяти, нужно указать, в итоге иксы не запустились, как запустить в vbox или vmware с ходу не понятно.

    4. То что Ventoy поддерживает запуск скорее всего заслуга более известного Puppy, что-то мне подсказывает, что для него особые костыли, вероятно если каждый дистрибутив будет городить свою разметку - вероятность их поддержки будет минимальна.


  1. gumanzoy
    16.12.2021 10:50
    +1

    Я свою сборку на основе DogLinux распространяю в виде дерева файлов и папок, которые нужно скопировать в корень флешки.

    Доводы против ISO у меня те же.

    У меня спрашивали про загрузку с KVM-over-IP Virtual Media и Zalman ZM-VE. Написал инструкцию как собрать ISO из файлов с помощью genisoimage.


    1. drWhy
      16.12.2021 11:08

      Но ведь разобрать готовый ISO на дерево файлов и папок тоже легко?


      1. gumanzoy
        16.12.2021 12:26
        +1

        Загрузка из ISO организована не так как с USB флешек.

        Для загрузки в UEFI с USB/SATA/NVME флешки/HDD/SSD достаточно на раздел FAT32 положить efi/boot/bootx64.efi и конфиг соответствующего загрузчика.

        А для ISO нужно собрать отдельный образ FAT с загрузчиком и конфигом внутри, и интегрировать его. Это дополнительные сложности.

        Кроме того при раздаче не монолитным образом можно не качать все заново, а только обновленные файлы. Сам образ .squashfs в DogLinux (и в Puppy) не монолитный. Разбит на несколько модулей, которые можно обновлять независимо.


        1. drWhy
          16.12.2021 12:46

          Я про то, что если в ISO уже есть efi/boot/bootx64.efi, то распаковка его на флешку тоже даст загружабельный вариант. Жаль, что он исходно не предусматривает мультизагрузку, т.к. ограничен единственным загрузчиком с фиксированным именем.

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


          1. gumanzoy
            16.12.2021 13:00
            +1

            Я про то, что если в ISO уже есть efi/boot/bootx64.efi, то распаковка его на флешку тоже даст загружабельный вариант.

            Распаковка да. А запись через dd - нет. Я предпочел не делать ISO вообще.

            Потому как если делать то полнофункциональный ISO. Нужно каждый раз при изменении конфига загрузчика собирать FAT образ для ISO UEFI загрузки заново.

            А для Ventoy я сделал конфиг ventoy/ventoy_grub.cfg Достаточно скопировать вместе с папкой live на раздел флешки с остальными образами. Меню при загрузке доступно по F6.