1

Тема: Генератор образов дискет и не только (mkfatfs)

Программа типа mkfatfs была бы очень полезна в SDK. Нашел в Интернете китайский вариант, ориентированный на создание образов для прошивок, но она просто огромна, больше размеров Колибри. В самой Колибри такой программы нет.

0CodErr, не возьмешься?

2

Re: Генератор образов дискет и не только (mkfatfs)

Freeman пишет:

В самой Колибри такой программы нет.

В KolibriOS имеется программа RDSave, которая умеет сохранять образ рамдиска(FAT12 насколько помню) на жёсткий диск.
Для этого используется

{18.6}    function SaveRamDisk(FileName: PKolibriChar): LongWord; stdcall;

а в ядре в этот момент вызывается sysfn_saveramdisk.
Кроме того существует драйвер tmpdisk, который умеет в FAT16 и FAT32
То есть, говоря проще, в системе оно "как бы уже есть", но только надо вывести нормальный интерфейс для прикладных программ.

Freeman пишет:

Программа типа mkfatfs была бы очень полезна в SDK.

А цель какая?
Я думаю прямо сейчас можно использовать такой кривой лайфхак:

  • временно сохраняем с рамдиска файлы путём их копирования куда-нибудь

  • теперь помещаем на рамдиск необходимые для создаваемого образа файлы

  • вызываем функцию SaveRamDisk и сохраняем образ на жёсткий диск

  • возвращаем сохранённые с рамдиска файлы на место так же путём их копирования

Но это только 1,44 МБ и FAT12.

Тут ядро или драйвер допиливать нужно, чтобы не дублировать функционал, ведь форматирование дисков всё равно будет нужно в будущем.

3

Re: Генератор образов дискет и не только (mkfatfs)

0CodErr пишет:

А цель какая?

В процессе сборки генерировать не только целевые файлы, но и сразу образ. Программа должна брать каталог и формировать из него образ.

4

Re: Генератор образов дискет и не только (mkfatfs)

Freeman пишет:

Программа должна брать каталог и формировать из него образ.

Ну при сборке образа KolibriOS вот тут используются mtools(mformat, mcopy, mmd, ...).

Здесь упоминается аналог под Windows, но там находится уже нечто другое(что-то покруче ИМХО smile).

Зато вот тут есть ещё один аналог mtools под Windows.

Freeman пишет:

Нашел в Интернете китайский вариант

Там, кстати, приложение 64-бит.

Freeman пишет:

она просто огромна, больше размеров Колибри

Можно попробовать даже пересобрать и потом стрипнуть чем-нибудь вроде PETool smile

5

Re: Генератор образов дискет и не только (mkfatfs)

Откомпилированной сборки mtools под Винду не нашел. «Что-то покруче» собрал сам, но там лажа какая-то. Хочет файл ресурсов, а что это — чёрт его знает. Никакой документации нет. Или плохо искал. Автор вроде книгу свою написал, и эта ОС — иллюстрация к книге. Приложил на всякий случай собранный вариант.

0CodErr пишет:

Можно попробовать даже пересобрать и потом стрипнуть чем-нибудь вроде PETool smile

Пробуй. Я за китайский код не возьмусь.

Я как-то писал программу тестирования скорости флешек с их последующим форматированием с учетом выравнивания. Даже выкладывал на форуме iXBT. Потом удалил. Производители флешек освоили кэширование, и тесты перестали выдавать какой-то вразумительный результат, определить размер блока стирания NAND уже не получалось. Программа написана сильно на коленке (CoreLite тогда была в зачаточном состоянии), но минимальная реализация FAT/FAT32 есть. FAT12 нет, к сожалению. Можно использовать в качестве примера, если писать с нуля.

Собирать исходники не пробовал, так что не знаю, как оно. Просто выдернул подходящие по времени модули из двух хранилищ. Самая рабочая реализация вроде с префиксом HEAD, если правильно помню. Я решил переписать ее, но потом забросил.

Post's attachments

Иконка вложений CFD.7z 35.82 Кб, 99 скачиваний с 2021-03-08 

Иконка вложений mkdosfs.7z 7 Кб, 120 скачиваний с 2021-03-08 

6

Re: Генератор образов дискет и не только (mkfatfs)

Freeman пишет:

Я за китайский код не возьмусь.

Он не совсем китайский.
Из main.cpp

//
//  main.cpp
//  mkfatfs
//
//  Created by Victor Mizikov on 20/09/2017.
//  Copyright (c) 2017 Victor Mizikov. All rights reserved.
Freeman пишет:

«Что-то покруче»

Ну так можно и ImgBurn использовать
Он Freeware, также имеет множество опций командной строки(хотя в первую очередь GUI-интерфейс).

Я так понимаю, что цель — подключить потом этот образ к эмулятору.
Но ведь KolibriOS работает не только под эмулятором, но и на реальном железе.
И если уж человек знает, как подключить образ к эмулятору, то и создать образ, скорее всего, тоже сумеет.
Разве нельзя просто ссылку дать на ПО для создания образов?

Добавлено 2021-03-09 в 07:51

Freeman пишет:

Откомпилированной сборки mtools под Винду не нашел.

Вроде оно mtools 4.0.18

Post's attachments

Иконка вложений mtools-4.0.18-win32.7z 87.41 Кб, 127 скачиваний с 2021-03-09 

7

Re: Генератор образов дискет и не только (mkfatfs)

0CodErr пишет:

Я так понимаю, что цель — подключить потом этот образ к эмулятору.

Идея больше была в том, чтобы написать на SDK нечто более серьезное, чем примеры. Что в KolibriOS уже есть похожая поддержка файловых систем в драйвере виртуального диска, упустил.

Ссылка на ПО для образов была с самого начала обновленного ReadmeImDisk Улофа Лагерквиста.

8

Re: Генератор образов дискет и не только (mkfatfs)

Boppan реализовал среду рабочих пространств для разработки под Колибри. Для программной генерации образов используется makeflop. Написана на Питоне, к сожалению.

9

Re: Генератор образов дискет и не только (mkfatfs)

А mtools разве плох? Задачу ведь свою выполняет.
Или от утилиты требуется ещё что-то специфическое?
Уже приводил выше пример ImgBurn, имеющий хороший GUI-интерфейс.