ISO 9660 (также известный как ECMA -119 ) — это файловая система для оптических дисковых носителей. Файловая система — это международный стандарт , доступный от Международной организации по стандартизации (ISO). Поскольку спецификация доступна для покупки любому, [1] были написаны реализации для многих операционных систем .
ISO 9660 берет свое начало в формате High Sierra [ 2] , который организовал файловую информацию в плотной последовательной компоновке, чтобы минимизировать непоследовательный доступ, используя иерархическую (восемь уровней каталогов в глубину) древовидную файловую систему, похожую на UNIX и FAT . Для облегчения кроссплатформенной совместимости он определил минимальный набор общих атрибутов файла (каталог или обычный файл и время записи) и атрибутов имени (имя, расширение и версия), а также использовал отдельную область использования системы, где могут быть указаны будущие необязательные расширения для каждого файла. High Sierra был принят в декабре 1986 года (с изменениями) в качестве международного стандарта Ecma International как ECMA-119 [3] и представлен для быстрого отслеживания в ISO , где он в конечном итоге был принят как ISO 9660:1988. [4] Последующие поправки к стандарту были опубликованы в 2013 и 2020 годах.
Первые 16 секторов файловой системы пусты и зарезервированы для других целей. Остальное начинается с набора дескрипторов тома (блок заголовка, описывающий последующую компоновку), а затем таблиц путей, каталогов и файлов на диске. Диск, соответствующий стандарту ISO 9660, должен содержать по крайней мере один первичный дескриптор тома, описывающий файловую систему, и терминатор набора дескрипторов тома , который является дескриптором тома, отмечающим конец набора дескрипторов. Первичный дескриптор тома предоставляет информацию о томе, характеристиках и метаданных, включая запись корневого каталога, которая указывает, в каком секторе находится корневой каталог. Другие поля содержат метаданные, такие как имя тома и создателя, а также размер и количество логических блоков, используемых файловой системой. Таблицы путей суммируют структуру каталогов соответствующей иерархии каталогов. Для каждого каталога в образе таблица путей предоставляет идентификатор каталога, местоположение экстента, в котором записан каталог, длину любых расширенных атрибутов, связанных с каталогом, и индекс записи его родительской таблицы путей каталога.
Существует несколько расширений ISO 9660, которые смягчают некоторые из его ограничений. Известные примеры включают Rock Ridge (разрешения в стиле Unix и более длинные имена), Joliet ( Unicode , позволяющий использовать нелатинские шрифты ), El Torito (позволяет использовать загрузочные компакт-диски ) и расширения Apple ISO 9660 (характеристики файлов, характерные для классической Mac OS и macOS , такие как вилки ресурсов , дата резервного копирования файлов и многое другое).
Компакт-диски изначально были разработаны для записи музыкальных данных, но вскоре стали использоваться для хранения дополнительных типов цифровых данных, поскольку они были столь же эффективны для архивного хранения больших объемов данных . Названные CD-ROM , формат самого низкого уровня для этих типов компакт-дисков был определен в спецификации Yellow Book в 1983 году. Однако эта книга не определяла никакого формата для организации данных на CD-ROM в логические единицы, такие как файлы , что привело к тому, что каждый производитель CD-ROM создавал свой собственный формат. Чтобы разработать стандарт файловой системы CD-ROM ( Z39.60 - Volume and File Structure of CDROM for Information Interchange ), Национальная организация по стандартам информации (NISO) создала комитет по стандартам SC EE (Compact Disc Data Format) в июле 1985 года. [5] В сентябре/ [6] октябре 1985 года несколько компаний пригласили экспертов принять участие в разработке рабочего документа для такого стандарта.
В ноябре 1985 года представители производителей компьютерного оборудования собрались в отеле и казино High Sierra (в настоящее время называемом Golden Nugget Lake Tahoe ) в Стейтлайне, штат Невада . [7] Эта группа стала известна как High Sierra Group ( HSG ). На встрече присутствовали представители Apple Computer , AT&T , [ требуется цитата ] Digital Equipment Corporation (DEC), Hitachi , LaserData, Microware , [ требуется цитата ] Microsoft , 3M , Philips , Reference Technology Inc., Sony Corporation , TMS Inc., VideoTools (позже Meridian [8] ), Xebec и Yelick. [ требуется цитата ] Отчет о встрече был разработан на основе стандарта CD-ROM Yellow Book , который был настолько открытым, что приводил к диверсификации и созданию множества несовместимых методов хранения данных. Предложение High Sierra Group ( HSGP ) было выпущено в мае 1986 года, определяя файловую систему для CD-ROM, обычно известную как формат High Sierra.
Черновая версия этого предложения была представлена Европейской ассоциации производителей компьютеров (ECMA) для стандартизации. С некоторыми изменениями это привело к выпуску первоначальной редакции стандарта ECMA-119 в декабре 1986 года. [9] ECMA представила свой стандарт в Международную организацию по стандартизации (ISO) для ускоренного отслеживания , где он был дополнительно доработан в стандарт ISO 9660. Для совместимости вторая редакция ECMA-119 была пересмотрена, чтобы стать эквивалентной ISO 9660 в декабре 1987 года. [10] [11] [12] ISO 9660:1988 был опубликован в 1988 году. Основные изменения по сравнению с форматом High Sierra в стандартах ECMA-119 и ISO 9660 были международными расширениями, позволяющими формату лучше работать на рынках за пределами США.
Чтобы не создавать несовместимостей, NISO приостановила дальнейшую работу над стандартом Z39.60, который был принят членами NISO 28 мая 1987 года. Он был отозван до окончательного утверждения в пользу ISO 9660. [5]
JIS X 0606:1998 был принят в Японии в 1998 году с гораздо более мягкими правилами имен файлов, использующими новую структуру данных «улучшенный дескриптор тома». Стандарт был представлен на рассмотрение в ISO 9660:1999 и, как предполагалось, ускоренно принят, но из этого ничего не вышло. [13] Тем не менее, несколько операционных систем и инструментов для создания дисков (таких как Nero Burning ROM , mkisofs и ImgBurn ) теперь поддерживают это дополнение под такими названиями, как «ISO 9660:1999», «ISO 9660 v2» или «ISO 9660 Level 4». В 2013 году предложение было окончательно формализовано в форме ISO 9660/Amendment 1, призванной «гармонизировать ISO 9660 и широко используемую спецификацию Joliet ». [14] В декабре 2017 года было опубликовано 3-е издание ECMA-119, которое технически идентично ISO 9660, поправка 1. [15]
В 2019 году ECMA опубликовала 4-ю версию ECMA-119, включив в нее текст Джолиета в качестве «Приложения C».
В 2020 году ИСО опубликовала Поправку 2, которая добавляет некоторые незначительные поясняющие моменты, но не добавляет и не исправляет какую-либо техническую информацию стандарта. [16]
Ниже приведена общая приблизительная структура файловой системы ISO 9660.
Многобайтовые значения могут храниться в трех различных форматах: little-endian , big-endian и в конкатенации обоих типов в том, что спецификация называет порядком "both-byte". Порядок both-byte требуется в нескольких полях в дескрипторах томов и записях каталогов, в то время как таблицы путей могут быть как little-endian, так и big-endian. [17]
Системная область , первые 32 768 байт данных диска (16 секторов по 2048 байт каждый), не используется ISO 9660 и, следовательно, доступна для других целей. [17] Хотя предполагается, что они зарезервированы для использования загрузочными носителями , [18] CD-ROM может содержать альтернативный дескриптор файловой системы в этой области, и он часто используется гибридными CD для предоставления классического специфичного для Mac OS и специфичного для macOS контента. [ необходима цитата ]
Область данных начинается с набора дескрипторов тома , набора из одного или нескольких дескрипторов тома, завершающегося терминатором набора дескрипторов тома . Они совместно действуют как заголовок для области данных, описывая ее содержимое (аналогично блоку параметров BIOS, используемому дисками, отформатированными в FAT , HPFS и NTFS ).
Каждый дескриптор тома имеет размер 2048 байт, что идеально вписывается в один сектор Mode 1 или Mode 2 Form 1. Они имеют следующую структуру:
Поле данных дескриптора тома может быть разделено на несколько полей, точное содержимое которых зависит от типа. Избыточные копии каждого дескриптора тома также могут быть включены на случай, если первая копия дескриптора будет повреждена.
Стандартные типы дескрипторов томов следующие:
Диск, соответствующий стандарту ISO 9660, должен содержать по крайней мере один первичный дескриптор тома, описывающий файловую систему, и терминатор набора дескрипторов тома для указания конца последовательности дескрипторов. Терминатор набора дескрипторов тома — это просто определенный тип дескриптора тома, предназначенный для обозначения конца этого набора структур. Первичный дескриптор тома предоставляет информацию о томе, характеристиках и метаданных, включая запись корневого каталога, которая указывает, в каком секторе находится корневой каталог. Другие поля содержат описание или имя тома, а также информацию о том, кто его создал и с помощью какого приложения. Размер логических блоков, которые файловая система использует для сегментации тома, также хранится в поле внутри первичного дескриптора тома, а также объем пространства, занимаемого томом (измеряемый в количестве логических блоков).
В дополнение к основному(ым) дескриптору(ам) тома могут присутствовать дополнительные дескрипторы тома или расширенные дескрипторы тома .
Таблицы путей суммируют структуру каталогов соответствующей иерархии каталогов. Для каждого каталога в изображении таблица путей предоставляет идентификатор каталога, местоположение экстента, в котором записан каталог, длину любых расширенных атрибутов, связанных с каталогом, и индекс записи таблицы путей родительского каталога. Номер родительского каталога представляет собой 16-битное число, ограничивающее его диапазон от 1 до 65 535. [19]
Записи каталогов хранятся после расположения записи корневого каталога, где начинается оценка имен файлов. Как каталоги, так и файлы хранятся как экстенты , которые представляют собой последовательные серии секторов. Файлы и каталоги различаются только атрибутом файла, который указывает на его природу (аналогично Unix ). Атрибуты файла хранятся в записи каталога, которая описывает файл, и, опционально, в записи расширенных атрибутов. Чтобы найти файл, имена каталогов в пути файла можно проверять последовательно, переходя к расположению каждого каталога, чтобы получить расположение последующего подкаталога. Однако файл также можно найти с помощью таблицы путей, предоставляемой файловой системой. Эта таблица путей хранит информацию о каждом каталоге, его родителе и его расположении на диске. Поскольку таблица путей хранится в непрерывной области, ее можно искать гораздо быстрее, чем переходить к определенным расположениям каждого каталога в пути файла, тем самым сокращая время поиска.
Стандарт определяет три вложенных уровня обмена (перефразировано из раздела 10):
Дополнительные ограничения в тексте стандарта: Глубина иерархии каталогов не должна превышать 8 (корневой каталог находится на уровне 1), а длина пути любого файла не должна превышать 255. (раздел 6.8.2.1).
Стандарт также определяет следующие ограничения имен (разделы 7.5 и 7.6): [4]
Производитель CD-ROM может выбрать один из нижних уровней взаимозаменяемости, указанных в главе 10 стандарта, и дополнительно ограничить длину имени файла с 30 символов до 8+3 в идентификаторах файлов и 8 в идентификаторах каталогов, чтобы способствовать взаимозаменяемости с реализациями, которые не реализуют полный стандарт. [ необходима цитата ]
Все числа в файловых системах ISO 9660, за исключением однобайтового значения, используемого для смещения GMT, являются числами без знака. Поскольку длина экстента файла на диске хранится в 32-битном значении, [20] это позволяет максимальную длину чуть более 4,2 ГБ (точнее, на один байт меньше 4 ГиБ ). Это ограничение можно обойти, используя функцию многоэкстента (фрагментации) ISO 9660 уровня 3 для создания файловых систем ISO 9660 и отдельных файлов размером до 8 ТБ. При этом файлы размером более 4 ГиБ можно разбить на несколько экстентов (последовательных серий секторов), каждый из которых не будет превышать предел в 4 ГиБ. Например, такое бесплатное программное обеспечение, как InfraRecorder , ImgBurn и mkisofs , а также Roxio Toast, способно создавать файловые системы ISO 9660, которые используют многоэкстенты для хранения файлов размером более 4 ГиБ на соответствующих носителях, таких как записываемые DVD-диски. [ необходима цитата ] Linux поддерживает несколько экстентов. [21]
Начиная с поправки 1 (или ECMA-119 3-го издания, или "JIS X 0606:1998 / ISO 9660:1999"), гораздо более широкий спектр деревьев файлов может быть выражен системой EVD. Больше нет никаких ограничений на количество символов (даже 8-битные символы разрешены), ни ограничений на глубину или длину пути. Все еще есть ограничение на длину имени в 207. Набор символов больше не применяется, поэтому обе стороны обмена дисками должны согласовываться через другой канал. [15]
Существует несколько расширений ISO 9660, которые смягчают некоторые из его ограничений. Известные примеры включают Rock Ridge (разрешения в стиле Unix и более длинные имена), Joliet ( Unicode , позволяющий использовать нелатинские шрифты ), El Torito (позволяет использовать загрузочные компакт-диски ) и расширения Apple ISO 9660 (характеристики файлов, характерные для классической Mac OS и macOS , такие как вилки ресурсов , дата резервного копирования файлов и многое другое).
Протокол совместного использования систем (SUSP, IEEE P1281) предоставляет общий способ включения дополнительных свойств для любой записи каталога, доступной из первичного дескриптора тома (PVD). В томе ISO 9660 каждая запись каталога имеет необязательную область использования системы , содержимое которой не определено и остается для интерпретации системой. SUSP определяет метод для подразделения этой области на несколько полей использования системы, каждое из которых идентифицируется двухсимвольным тегом подписи. Идея SUSP заключалась в том, что он позволит создавать и включать в том любое количество независимых расширений ISO 9660 без конфликтов. Он также позволяет включать данные о свойствах, которые в противном случае были бы слишком большими, чтобы поместиться в пределах области использования системы.
SUSP определяет несколько общих тегов и полей использования системы:
CE
: Продолжение областиPD
: Поле заполненияSP
: Индикатор протокола общего доступа к системеST
: Терминатор протокола совместного использования системыER
: Справочник расширенийES
: Селектор расширенийДругие известные поля SUSP включают в себя:
AA
: Расширение Apple, предпочтительноBA
: Расширение Apple, старое (отсутствует атрибут длины)AS
: Свойства файла AmigaZF
: сжатый файл zisofs, обычно создаваемый программой mkzftree или libisofs. Прозрачно распаковывается ядром Linux, если собрано с CONFIG_ZISOFS. [22]AL
: записи расширенных атрибутов файлов , включая ACL . Предложено libburnia , поддерживается libisofs. [23]Расширения Apple технически не соответствуют стандарту SUSP; однако базовая структура полей AA и AB, определенная Apple, совместима с SUSP; поэтому при соблюдении осторожности том может использовать как расширения Apple, так и расширения RRIP.
Rock Ridge Interchange Protocol (RRIP, IEEE P1282) — это расширение, которое добавляет семантику файловой системы POSIX . Наличие этих свойств расширения обеспечивает лучшую интеграцию с Unix и Unix-подобными операционными системами. [24] Стандарт получил свое название от вымышленного города Рок-Ридж из фильма Мэла Брукса « Пылающие сёдла » . [25] Расширения RRIP, вкратце, следующие:
Расширения RRIP построены на основе SUSP, определяя дополнительные теги для поддержки семантики POSIX, а также формат и значение соответствующих полей системного использования:
RR
: Индикатор использования расширений Rock Ridge (примечание: исключено из стандарта после версии 1.09)PX
: Атрибуты файла POSIXPN
: Номера устройств POSIXSL
: символическая ссылкаNM
: альтернативное имяCL
: дочерняя ссылкаPL
: родительская ссылкаRE
: перемещенный каталогTF
: отметка времениSF
: разреженные данные файлаAmiga Rock Ridge похож на RRIP, за исключением того, что он предоставляет дополнительные свойства, используемые AmigaOS . Он также построен на стандарте SUSP путем определения поля использования системы с тегом "AS". Таким образом, и Amiga Rock Ridge, и POSIX RRIP могут использоваться одновременно на одном и том же томе. Некоторые из особых свойств, поддерживаемых этим расширением, — это дополнительные биты Amiga для файлов. Поддерживается атрибут "P", который обозначает "чистый" бит (указывающий на команду повторного входа) и атрибут "S" для бита скрипта (указывающий на пакетный файл ). Это включает в себя флаги защиты и необязательное поле комментария. Эти расширения были введены Анджелой Шмидт с помощью Эндрю Янга, основного автора Rock Ridge Interchange Protocol и System Use Sharing Protocol. Первым общедоступным программным обеспечением для управления CD-ROM с расширениями Amiga был MakeCD, программное обеспечение Amiga, которое Анджела Шмидт разработала совместно с Патриком Оли. [26]
El Torito — это расширение, разработанное для загрузки компьютера с CD-ROM. Оно было анонсировано в ноябре 1994 года [27] и впервые выпущено в январе 1995 года как совместное предложение IBM и производителя BIOS Phoenix Technologies . Согласно легенде, расширение El Torito CD/DVD к ISO 9660 получило свое название потому, что его дизайн возник в ресторане El Torito в Ирвайне, Калифорния ( 33°41′05″N 117°51′09″W / 33.684722°N 117.852547°W / 33.684722; -117.852547 ). [28] Первыми двумя авторами были Кертис Стивенс из Phoenix Technologies и Стэн Меркин из IBM. [28]
BIOS 32-битного ПК будет искать загрузочный код на CD-ROM ISO 9660. Стандарт допускает загрузку в двух различных режимах. Либо в режиме эмуляции жесткого диска, когда загрузочная информация может быть доступна непосредственно с компакт-диска, либо в режиме эмуляции дискеты, когда загрузочная информация хранится в файле образа дискеты , которая загружается с компакт-диска и затем ведет себя как виртуальная дискета. Это полезно для компьютеров, которые были разработаны для загрузки только с дисковода. Для современных компьютеров режим «без эмуляции» обычно является более надежным методом. BIOS назначит номер диска BIOS для дисковода CD. Назначенный номер диска (для INT 13H ) может быть любым из 80 hex ( эмуляция жесткого диска ), 00 hex ( эмуляция дискеты ) или произвольным числом, если BIOS не должен обеспечивать эмуляцию. Эмуляция полезна для загрузки старых операционных систем с компакт-диска, создавая для них видимость загрузки с жесткого или гибкого диска. [29]
Системы UEFI также принимают записи El Torito, как платформу 0xEF. Ожидается, что запись будет образом диска, содержащим файловую систему FAT, причем файловая система будет системным разделом EFI, содержащим обычный \EFI
каталог. Образ должен быть помечен как «без эмуляции», хотя на самом деле он не работает как режим BIOS «без эмуляции», в котором BIOS загружает образ в память и выполняет код оттуда. [30]
El Torito также может использоваться для создания компакт-дисков, которые могут загружать операционные системы Linux , путем включения загрузчика GRUB на компакт-диск и следования спецификации Multiboot . [29] Хотя спецификация El Torito ссылается на идентификатор платформы «Mac», компьютеры Apple Macintosh на базе PowerPC не используют его. [31]
Joliet — это расширение, указанное и одобренное корпорацией Microsoft , которое поддерживается всеми версиями ее операционной системы Windows , начиная с Windows 95 [32] и Windows NT 4.0 . [33] Его основная цель — смягчение ограничений на имена файлов, присущих полному соответствию стандарту ISO 9660. Joliet достигает этого, предоставляя дополнительный набор имен файлов, закодированных в UCS-2 BE ( UTF-16 BE на практике с Windows 2000). Эти имена файлов хранятся в специальном дополнительном дескрипторе тома, который безопасно игнорируется программным обеспечением, совместимым с ISO 9660, тем самым сохраняя обратную совместимость. [32] Спецификация допускает длину имен файлов только до 64 символов Unicode . Однако в документации по mkisofs говорится, что имена файлов длиной до 103 символов, по-видимому, не вызывают проблем. [34] Microsoft задокументировала, что «может использовать до 110 символов». [35] Разница заключается в том, используется ли пространство расширения CDXA. [34]
Joliet позволяет использовать символы Unicode для всех текстовых полей, включая имена файлов и имя тома. «Вторичный» дескриптор тома с типом 2 содержит ту же информацию, что и первичный (сектор 16, смещение 40 байт), но в UCS-2BE в секторе 17, смещение 40 байт. В результате этого имя тома ограничено 16 символами.
Многие современные операционные системы ПК способны читать носители в формате Joliet, что позволяет обмениваться файлами между этими операционными системами, даже если используются нелатинские символы (например, арабские, японские или кириллические), что ранее было невозможно с обычными носителями в формате ISO 9660. Операционные системы, которые могут читать носители Joliet, включают:
Romeo был разработан Adaptec и позволяет использовать длинные имена файлов длиной до 128 символов, записанные непосредственно в первичный дескриптор тома с использованием текущей кодовой страницы . Этот формат построен на основе работы драйверов Windows 9x и Windows NT «CDFS». [42] Когда установка Windows на другом языке открывает диск Romeo , отсутствие указания кодовой страницы приведет к тому, что не-ASCII символы в именах файлов станут Mojibake . Например, «ü» может стать «³». Другая ОС может столкнуться с аналогичной проблемой или отказаться распознавать эти несовместимые имена сразу.
Та же проблема кодовой страницы технически существует в стандарте ISO 9660, который допускает открытую интерпретацию дополнительных и расширенных дескрипторов тома для любой кодировки символов по соглашению. Однако первичный дескриптор тома гарантированно будет небольшим подмножеством ASCII.
Apple Computer создала набор расширений, которые добавляют свойства ProDOS или HFS / HFS+ (основные современные файловые системы для классической Mac OS ) к файловой системе. Некоторые из дополнительных свойств метаданных включают: [43]
Чтобы разрешить системам, отличным от Macintosh, получать доступ к файлам Macintosh на CD-ROM, Apple решила использовать расширение стандартного формата ISO 9660. Большая часть данных, за исключением специфических метаданных Apple, остается видимой для операционных систем , которые могут читать ISO 9660.
Для операционных систем, не поддерживающих расширения, TRANS.TBL
необходимо использовать файл перевода имен. TRANS.TBL
Файл представляет собой простой текстовый файл ASCII . Каждая строка содержит три поля, разделенные произвольным количеством пробелов :
Большинство реализаций, создающих файлы TRANS.TBL, вставляют один пробел между типом файла и именем ISO 9660, а также произвольное количество символов табуляции между именем файла ISO 9660 и расширенным именем файла.
Собственная поддержка использования TRANS.TBL
все еще существует во многих реализациях ISO 9660, особенно связанных с Unix . Однако она уже давно вытеснена другими расширениями, а современные утилиты, создающие образы ISO 9660, либо вообще не могут создавать файлы TRANS.TBL, либо больше не создают их, если пользователь явно не запросил их. Поскольку файл TRANS.TBL не имеет специальной идентификации, кроме своего имени, его также можно создать отдельно и включить в каталог перед созданием файловой системы.
Стандарт ISO 13490 является расширением формата ISO 9660, добавляющим поддержку нескольких сеансов на диске. Поскольку ISO 9660 по своей конструкции является файловой системой только для чтения, предварительно созданной, все данные должны быть записаны на носитель за один раз или «сеанс». После записи изменение сохраненного содержимого не предусмотрено. ISO 13490 был создан для того, чтобы разрешить добавление дополнительных файлов на записываемый диск, такой как CD-R, за несколько сеансов.
Стандарт ISO 13346/ECMA-167 был разработан совместно со стандартом ISO 13490. Этот новый формат устраняет большинство недостатков ISO 9660, и его подмножество развилось в универсальный дисковый формат (UDF), который был принят для DVD . Таблица дескрипторов томов сохраняет макет ISO9660, но идентификатор был обновлен. [44] [45]
Образы оптических дисков являются распространенным способом электронного переноса содержимого CD-ROM. Они часто имеют расширение имени файла .iso
( .iso9660
менее распространено, но также используется) и обычно называются «ISO». [46]
Большинство операционных систем поддерживают чтение дисков в формате ISO 9660, а большинство новых версий поддерживают расширения, такие как Rock Ridge и Joliet. Операционные системы, которые не поддерживают расширения, обычно показывают основные (нерасширенные) функции простого диска ISO 9660.
Операционные системы, поддерживающие ISO 9660 и его расширения, включают в себя следующее: