В 1995 году была утверждена спецификация загрузочного
оптического диска и в BIOS материнских плат появилась опция 'загрузка с CD-ROM'. ... Загрузка с CD-ROM в системах Unix и MAC достаточно проста. Нужно просто скопировать на
компакт загрузочную системную директорию и указать возможность загрузки с нее. В операционных системах типа DOS и Windows эта задача сложнее. Для того, чтобы получить доступ к
содержимому обычного CD-ROM, требуется драйвер устройства типа MSCDEX.EXE, запущенный в уже загруженной операционной системе. Получается замкнутый круг: чтобы загрузить
систему с обычного CD-ROM, нужен драйвер, запущенный из сиcтемы, которая уже загружена с CD-ROM. Для того, чтобы решить эту проблему, создатель BIOS фирма Phoenix
совместно с IBM создали спецификацию загрузочных CD-ROM дисков, которые могут загружать систему (одну из нескольких расположенных на компакт-диске) при включении
компьютера, не обращаясь к другим носителям информации (дискетам или жесткому диску). ... Для загрузки с CD-ROM надо войти в Setup BIOS при загрузке и указать там порядок
следования устройств загрузки как CD-ROM; ... Стандарт, созданный усилиями Phoenix и IBM, представляет собой описание структуры загрузочного CD, работающего с использованием
13 прерывания. Обычный диск (Normal CD-ROM):
System (Unused) - не
используется
Volume Descriptors - описание
структуры диска, думаю где какой трек начинается.
CD-ROM image - образы
областей данных (треки)
CD-ROM image - образы
областей данных (треки)
CD-ROM image - образы
областей данных (треки)
CD-ROM image - образы
областей данных (треки) ... и так далее.
Загрузочный диск (Singl Boot-image):
System (Unused) - Sector 0-15 -
не используется
Primary volume - Sector 16 -
Пока непонятно
Boot Record Valume - Sector 17
- Собственно загрузочная запись. CD001. El TORITO SPECIFICATION ('диск записан в формате ISO9660 и является потенциально загрузочным'). Здесь же располагается
ссылка на место нахождения загрузочного каталога. В каталоге может быть до пяти записей:
Validation Entry,
Initial/Default Entry,
Section Header,
Section Entry,
Section Entry Extension.
Set Terminator Valume - Sector
? - Пока непонятно
Booting Catalog - Initial/Default Entry
- Sector ? - Каталог где может быть до 5 записей, пока непонятно.
Bootable Disk image - Sector ? -
так понимаю данные для загрузки
CD-ROM image - образы
областей данных (треки)
CD-ROM image - образы
областей данных (треки) ... и так далее.
Есть ещё зверь - Multiple Boot-image мультизагрузка, пока не буду расматривать.
Итак есть спецификация создания загрузочного диска (От IBM и монстра BIOS - Phoenix) CD001. El TORITO SPECIFICATION и запись диска в формате ISO9660 (ISO -
производственный стандарт?) Значит для начала создам образ загрузочного диска ... Опять к теории...
Определение некоторых терминов
Sector (Cектор) - сектор, область данных на CD-ROM. По данной спецификации всегда 800 Байт. (От себя замечу, как они любят глумиться... то считают от 0, то не указывают в
какой системе счисления число... и биты с байтами начмнаються на б... вот и разбирайся потом. Вобщем здесь 800h Байт. биты с маленькой буквы, Байты с большой. 800h Байт = 4000h бит
= 2048d Байт = 16384d бит. Видно что в шестнадцатеричной системе запись выглядит логичнее.)
Virtual Sector (Виртуальный Cектор) - сектор, область данных на эмулируемом устройстве. Данная спецификация затрагивает только виртуальные устройства с сектором
равным 200h Байт = 1000h бит = 512d Байт = 4096d бит
Virtual Disk (Виртуальный Диск) - ряд секторов на CD диске при вызове INT 13 видны в системе как приводы с 200h Байтным виртуальным сектором. На одном секторе
получается 4 виртуальных сектора
На ISO9660 CD диски (Точнее сектора на диске, ещё более точнее 16 сектор (начинается с 8000h)) всегда начинается с символа 'CD001'
Програмисты считают с «0». Поэтому запись первые 15 секторов ввела в заблуждение. Первые 16 секторов с 0
по 15. 0 - 1 сектор, 15 - 16 сектор. В дальнейшем и счёт надо будет вести тоже от нуля. Сложно конечно считать например свои пальцы :), 0 палец, 1 палец... всего 9 пальцев на руке...
Primary Volume Descriptor - Первичная запись (Основной том) Primary Volume Descriptor, часто используют сокращение (PVD). На ISO9660 диски всегда начинается с символа 'CD001':
Boot Record Volume Descriptor - Загрузочная запись 'El Torito Specification для возможности создания загрузочных дисков добавляет две записи на CD-ROM. Это Boot Record и
Boot Catalog. Boot Record Volume Descriptor находится в 17 секторе по индексу (18 по счёту) на CD, Который являеться Secondary Volume Descriptor. Здесь CD001 в заголовке Boot Record
Volume Descriptor информирует о том что диск соответствует ISO 9660 CD-ROM; а EL TORITO SPECIFICATION информирует о том что диск может быть потенциально загрузочный'
Обращает на себя цифра 13, это индекс на проверочную запись, может быть 14 или какой создадите. 14h * 800h
= A000h - по этому адресу должна распологаться проверочная запись.
Validation Entry - Проверочная Запись Это должна быть первая запись в каталоге загрузки. Проверочная Запись подтверждает, что загрузка каталога присутствует на диске и
определяет производителя компакт-диска. Если эта запись присутствует, предполагается, что остальные записи являются рабочими. (Смотрите Таблицу 2 El TORITO
SPECIFICATION с описанием Проверочной Записи.)
Здесь всё непросто, даже надо было расчитать контрольную сумму :), так что бы сумма
всех слов (WORD) (слово - WORD = двум байтам, байты - 8 бит, две hex-цифры, тетрады - 4 бита, одна hex-цифра. Непечатные символы (в диапазоне от 00h до 20h) в ASCII
неотличимы друг от друга и отображаются в виде точки. ASCII запись дублирует HEX, для простоты чтения HEX кода. - для информации...) В моём примере расчёт получился таким:
0x0001 + 0x0000 + 0x6950 + 0x676E + 0x6957 + 0x206E + 0x614C + 0x2062 + 0x293A + 0x0000 + 0x0000 + 0x0000 + 0x0000 + 0x0000 + 0x0000 + 0xaa55 = 2afc1h
контрольная сумма 503fh, 2afc1h + 503fh = 30000h, слово 2 байта, лишняя тетрада ушла в переполнение... получили 0. Видно что запись слов попарно перевёрнута... пока непонятно... Вроде
бы это что то связанное с процессором, регистрами...дело тёмное :), будем разбираться.
Итак, до проверочной записи всё понятно. Можно открыть программу навроде CygnusHexEditorFree.exe и записать следующее:
Это первые пустые 16 секторов (от 0 до 800h - 1 сектор, от 7800 до 8000h - 16 сектор), далее напишем Primary Volume Descriptor - Первичную запись (Основной том)
Это 18, 19 и 20 сектора (от 8800 до 9000h - 18 сектор. от 9000 до 9800h - 19 сектор. от 9800 до A000h - 20 сектор. от A000 до A800h - 21 сектор.) 14 * 800h = A000h, далее напишем Validation Entry - Проверочную Запись
Сразу за проверочной записью с адреса A020h идёт Первичный/ По умолчанию (Initial/ Default Entry). Используется вызов INT 13 на котором стоит остановиться поподробнее, а пока для проверке кода ниже просто с этого места вставлю код из работающего образа созданного с помощью NERO
Внимание!!! Данный интернет-сайт носит исключительно информационный характер и ни при каких условиях не является публичной офертой, определяемой положениями ч. 2 ст. 437 Гражданского кодекса Российской Федерации. Информацию о стоимости и сроках выполнения услуг, можно получить по контактам указанными далее. с 10-00 до 19-00, Пн-Пт по телефону: +7 (903) 756-28-61, через сайт: круглосуточно, без выходных. Для подтверждения заказа через сайт менеджер свяжется с Вами в самый короткий срок. Написать нам на почту: support@maincraft.org, При возникновении вопросов, Вы можете связаться с нами по телефону либо получить ICQ консультации, ICQ№149-807-234, С администратором ресурса можно связаться по e-mail: admin@maincraft.org
http://www.valuehost.ru/ Хостинг Номер 1: Valuehost 25GB План А • Если вдруг закажите что-то у валуехоста, скажите им номер по партнёрской программе 44877 (Для плательщика 300044877), а то у них она работает непонятно, пока сам не скажешь, не добавят бонусов. Мне будет приятно :) Спасибо!