низкоуровневое форматирование

Тема в разделе "WASM.BEGINNERS", создана пользователем AJAJA, 18 апр 2009.

  1. AJAJA

    AJAJA New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2009
    Сообщения:
    21
    добрй день. хотел бы написать загрузочную дискетку, которая бы заполняла жесткий диск нулями. подкиньте, пожалуйста литературы на эту тему. спасибо
     
  2. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    У Криса была статья о форматировании и восстановлении инфы, поищи на http://insidepro.com/
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Только это -- не низкоуровневое форматирование, а обычная запись секторов.
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    CreateFile(\\.\PhysicalDrive0)
    WriteFile()
     
  5. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    Partner
    Причем тут это? Человек хочет с загрузочной дискеты. Нужно int 13h или через порты.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Обычную загрузочную дискету с досом, а в autoexec.bat: format c:
     
  7. AJAJA

    AJAJA New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2009
    Сообщения:
    21
    Вот про порты поподробнее, пожалуйста.
     
  8. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Никакой конкретики. Итак, писать можно через BIOS - int 13h, причем можно через функции расширенной записи (много секторофф за раз). Плюсы: не нужно изучать спецификацию hdd/etc. Можно форматировать. Минусы - далее, но сразу: возможно специфичный драйвер лучше BIOS знает как работать с конкретным винтом - (возможно) быстрее (DMA?) и "наверняка".

    Если идти по пути "портов" то надо помнить что все резко усложняется - нужно знать специфичные для данного hdd команды - хотя ATA (если я правильно помню) команды поддерживаются многими винтами.

    Как узнать какие команды и в какие порты? Я предпочитаю не читать доков - просто снять лог обращения к портам и посмотреть в дизасме как драйвер hdd это делает вызвав запись в определенный сектор (win98 удобнее с Sice, но тут кому как нравиццо). Наверняка можно все это найти на специфичных форумах.

    В результате это будет набор in/out команд в регионе портов 170h..+0Fh (или 100h..). Не знаю но почти уверен что для чтения-записи идет работа через DMA - драйвер подготовит буфер и передаст через эти самые команды ввода-вывода контроллеру адрес физической памяти и размер для чтения или записи. Может быть прямое чтение или запись через ins/outs, но это скорее для старых винтов или в случае отсутсвия специфичного драйвера.

    Т.е. никаких принципиальных приемуществ у "портов" (кроме скорости) как бы нет... Однако если поговорить с людьми которые занимаюцца непосредственно винтами, то можно узнать такие вещи как форматирование стандартными командами через BIOS/ATA на самом деле никаких секторов не перетирает. Это баян, понятна. Далее винт имеет на самом деле резервные сектора - при выпуске на заводе винт на 1гиг на самом деле имеет емкость в несколько раз больше и по мере выщелачивания старых секторов модуль зашитый в винт делает ремаппинг и для пользователя ATA/etc команд винт выглядит по прежнему из тех же секторов.

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

    Тут уже надо знать так называемые заводские команды для каждого конкретного винта. Допустим какой-нить Segate Barracuda может иметь определенные команды на перезапись модулей которые гикнулись и в сервисе растерянно улыбаюццо. Такие команды не офишируюццо и они находяццо анализом технологических утилитов для каждого конкретного случая.
     
  9. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Низкоуровневого форматирования давно уже нет. Винчестер просто обнуляет все сектора и все. Команду я сейчас не помню, но можно посмотреть в стандарте. М.б. какие-то модели имеют возможность низкоуровневого форматирования, но такие команды будут специфичны для каждого устройства. А если нужно просто все обнулить -- int 0x13 легко справляется с задачей. Информацию по прерываниям можно прочитать в Ralf Brawn Interrupt List.
     
  10. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    AJAJA
    10 Лет назад в институте писал. Форматер через порты, правда, дискет. Форматировало все, на что ДОС овский format ругался track 0 invalid, а таких дискет дофига было в то время. Я бы прислал исходник Аквилле, но у меня он не сохранился. Разве что у кого из одногруппников, надо поспрашивать...
     
  11. fourty_fourty

    fourty_fourty Андрей

    Публикаций:
    0
    Регистрация:
    23 фев 2008
    Сообщения:
    23
    Адрес:
    Нязепетровск
    Друзья, откуда стока уверенности? :lol:
    Честно, удержаться не мог от смеха, когда читал, извините конечно :-'

    Вопще, работать с диском можно двумя способами. (лично я только два знаю :)

    1. Самый простой, это BIOS(int 13h). Гугл в помощь! Если мало, любопытным советую поискать BIOS User’s Manual, производитель БИОСа не так важен, стандарты одинаковы для всех. :)

    2. Не самый простой способ! Определенно для садомазо! %)
    Летим на http://www.t13.org/Documents/MinutesDefault.aspx?DocumentType=4&DocumentStage=2,
    выбираем любой понравившийся "AT Attachment", качаем, подробно изучаем и вперед и с песней писать свой драйвер на контролер харда! :))

    Естественно, появится необходимость узнать какой порт нам все-таки нужен и как же программно узнать где же в нашем железном ящике находится этот самый контролер. Птму придется снова лезть в Сеть и искать или просто описание конфигурационного пространства PCI, или, опять же для самых любопытных, полностью PCI-спецификацию, которую тоже придется изрядно помусолить. :derisive:

    Вот, пожалуй, все, что мне известно по этой теме.
    Буду рад дополнениям, пожеланиям, предложениям. :)
     
  12. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    fourty_fourty
    Уверенности о чём? О том, что низкоуровневое форматирование просто так не выполнишь? Но, простите, низкоуровневое форматирование -- это не очистка секторов диска и не создание на диске файловой структуры. Низкоуровневое форматирование -- это запись адресных маркеров, промежутков и прочей действительно низкоуровневой информации. Если эту информацию учитывать, то размер одного сектора будет отнюдь не 512 байт, а существенно больше -- тут тебе и прологи-эпилоги, и контрольные суммы, причём формат всей этой служебной дребедени зависит исключительно от контроллера диска (того, что стоит на винчестере, а не ATA/SATA/SCSI и т.д.). Конечно, общие принципы физической организации информации на дисках у всех производителей более-менее одинаковы (физика-то общая для всех), однако в частностях возможны серьёзные расхождения. Соответственно и действительно низкоуровневое форматирование могут выполнять лишь специальные утилиты, ориентированные на конкретные типы контроллеров, и никакие BIOSы и даже прямой доступ к регистрам ATA/SATA здесь не помогут (точней, прямой доступ поможет, но только если знаешь, что именно надо делать для данной модели диска).
     
  13. fourty_fourty

    fourty_fourty Андрей

    Публикаций:
    0
    Регистрация:
    23 фев 2008
    Сообщения:
    23
    Адрес:
    Нязепетровск
    SII
    Мой пост отвечает на первый пост автора, а не на то, че такое "низкоуровневое форматирование".
    Птму что про LLF вопще не нам говорить!
    Можно, конечно, начать бодаться из-за того кто больше знает про форматирование.
    Но если брать поправку на первый пост, то суть темы сводится к поиску описания способов логической(программной) работы с жесктим диском.
    И вопще, форумы длуя того и существуют, чтобы помогать дргим в решении вопросов общими усилиями, а не для того чтобы выяснять кто больше знает по предложенной теме!
     
  14. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    http://www.wasm.ru/article.php?article=atazen01
    http://www.wasm.ru/article.php?article=atazen02
     
  15. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    SII
    Я делал проще. Сграбил диск-эдитором загрузочную записить и фат таблицу (первые несколько секторов) в файл. Потом через дма писал этот файл в начало дискеты. И никаких ошибок трэк 0 инвалид, драйверо доса автоматом при записи метит бэды, дискетой можно пользоваться