Имеется диск с файловой системой NTFS, треубется написать бутовую программу (т.е. запихнуть код в первые 512кб, например дискетки) которой можно будет делить диск на разделы (C, D, E, и так далее). Подскажите, с чего начать? Где вообще в NTFS храниться таблица разделов, и так далее?
Таблица разделов не имеет никакого отношения к файловым системах, которые установлены на этих разделах. Хранится таблица разделов в самом первом секторе физического диска. В ~400 байт такая программа не влезет, особенно если нужен интерфейс с пользователем. Начать можно с википедии, можно с английской, оттуда уже по ссылкам. На дискету без проблем влезает например partition magic, которая всё это может без потери информации, или fdisk, который может чуть меньше и с потерей информации, но занимает на порядки меньше места.
Antolflash Нигде. Таблица разделов хранится в mbr или GUID Partition Table. Который существует только на жеских. На флопи там бут сектор. И к NFTS это неимеет ниакого отношения.
0x018A Четыре 9-байтных записи таблицы основных разделов (IBM-расширения к схеме таблицы разделов MBR) Как я понимаю, это физический адресс, на жёстком диске, где хранится описание разделов диска, так??? Структура Главной загрузочной записи (MBR) Смещение Длина Описание 000h 446 Код загрузчика 1BEh 64 Таблица разделов 16 Раздел 1 1CEh 16 Раздел 2 1DEh 16 Раздел 3 1EEh 16 Раздел 4 1FEh 2 Сигнатура (55h AAh) А вот это - смещения от 0x018A , так? Т.е. по адрессу 0x018Ah + 1BEh я должен описать раздел. Т.е. в первом байте этого адресса написать 80h - описание того, что раздел активен. Только вот остальные параметры мне не очень понятны: Структура описания разделаСмещение Длина Описание 00h 1 Признак активности раздела 01h 1 Начало раздела — головка 02h 1 Начало раздела — сектор (биты 0-5), дорожка (биты 6,7) 03h 1 Начало раздела — дорожка (старшие биты 8,9 хранятся в байте номера сектора) 04h 1 Код типа раздела 05h 1 Конец раздела — головка 06h 1 Конец раздела — сектор (биты 0-5), дорожка (биты 6,7) 07h 1 Конец раздела — дорожка (старшие биты 8,9 хранятся в байте номера сектора) 08h 4 Смещение первого сектора 0Ch 4 Количество секторов раздела Опишите какие значения нужно пихать в соответствующие адресса?
Тут огромное поле изучения, всё это со временем познается, а я хочу здесь и сейчас узнать, какие байты куда запихнуть, чтобы компьютер считал, что диск разбит, предположим, на два логических раздела (с ними, вроде-как, проще) ???
ээээ.... что это такое??? Секторы я могу просматривать в специальной проге HxD Hex editor, а вот "дорожка" что-то очень низкоуровневое, как вообще там всё устроенно??? Где бы найти пример простенькой проги по редактированию таблицы MBR???
Antolflash Существует два способа адресация LBA и CHS. Для дисков до 8ГБ можно произвести сопоставление CHS и LBA используя геометрию диска. В 2002 введен стандарт ATA\ATAPI-6 в котором отказались от CHS. В 2006 году введен UEFI и GPT что позволяет разбивать диски на разделы, тем самым преодален барьер для дисков объемом более 2ТБайт. У дисков это вечная проблема. Барьеры вечно приодалевают.
В сях используют какие-то библиотеки для этого, там уже готовые функции для изменения таблицы. Я так не хочу, а во-вторых у меня БДЗ на ассемблере, и я хочу честно во всём разобраться. Поясните, пожалуйста, что и как надо изменять, как получать доступ к записи на жёсткий диск в ассемблерном коде и т.д.
Какие-такие библиотеки? Может что-то подобное и есть, но это, так сказать, из частной коллекции... А вообще ты хочешь побыстрому слепить программу, не прилагая особых усилий... точнее вообще никаких усилий. Изучи для начала структуру MBR. Затем определись, какие средства необходимы и достаточны для создания подобной программы, например, с помощью чего ты собираешься определять общую емкость диска или как должен быть организован интерфейс программы. В программе для реального режима практически все можно сделать с помощью функций BIOS. В MBR пихать эту программу не следует, потому что во-первых это тупо, а во-вторых не поместится. Далее сделай загрузку программы за два этапа, чтобы к примеру грузить com-файл, или поищи подходящий загрузчик в сети. Короче наскоком не получится... трудись...
В 512Кб не проблема. Проблема в том что сектора по 512 БАЙТ, а в них ты не засунеш менеджер разделов. Особенно если учесть что не все 512байт ещё и доступны.
Говоря про первые 512 кб, я имел ввиду, что программа должна уместиться в boot сектор дискетки или cd диска. Да, и вот ещё, как я понял, если я просто изменю таблицу разделов в MBR, которая начинается со смещения 1BEh от начала жёсткого диска, то я потеряю все предыдущие данные, точнее не смогу ими больше воспользоваться без шаманства. И каким образом назначать всякие начала головок, дорожек и т.д.? ОТ балды?