Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб авг 19, 2017 12:21 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 18 сообщений ]  На страницу 1 2 След.
Автор Сообщение
СообщениеДобавлено: Пт дек 30, 2011 11:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Иногда возникает необходимость доставать файлы созданные внутри эмулятора. Например пользователь открыл эмулятор, запустил внутри какую-либо программу, создал через нее файл захотел сохранить его в основной ОС. Но это не получится потому как файл внутри эмулятора погибнет при его закрытии ... :cry:
Способ решения этой проблемы таков: должно быть 2 программы.
1-я для Колибри (кодирует файл в графическом виде)
2-я для внешней ОС, из которой запускается эмулятор (расшифровывает файл)
Т. е. пользователь может открыть файл, и 1-я программа его закодирует в виде рисунка
Потом он делает копию экрана и сохраняет его в файл (возможно даже не сохраняет а прямо из буфера обмена вставляет получившееся изображение)
Внешняя программа расшифровывает получившийся рисунок и сохраняет его в файл.
Таким образом можно доставать файлы из эмулятора :P
Сделал прототип первой программы для кодировки файлов. Для быстродействия и удобства программирования в 1-м пикселе кодируются 2 байта вместо ожидаемых 3-х. Программу пока не выкладываю потому что еще есть ограничение на размер файлов.
Раскодировку еще не делал, т. к. тут возможны разные варианты программ в зависимости от того какая ОС используется как внешняя.
Оффтопик: Еще один из незапланированных вариантов применения программы для кодирования файлов в графическом виде.


Вложения:
Комментарий к файлу: внешний вид кодирующей программы
f_coder.png
f_coder.png [ 8.83 КБ | 2963 просмотра ]
Вернуться к началу
СообщениеДобавлено: Сб дек 31, 2011 2:57 am 
Собственно о каком эмуляторе идет речь?


Вернуться к началу
   
СообщениеДобавлено: Сб дек 31, 2011 12:36 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Mario писал(а):
Собственно о каком эмуляторе идет речь?

может быть любой qemu, virtualbox, ...


Вернуться к началу
СообщениеДобавлено: Пн янв 02, 2012 6:25 pm 
Не в сети
Just Flooding

Зарегистрирован: Сб янв 06, 2007 2:30 pm
Сообщения: 269
извращение-то какое, тема для неосиляторов rdsave || mount -o loop || монтирования директорий в qemu || whatever..
Не, ну правда, уж лучше б спросил как файлами с эмулем обмениваться, можно было бы даже ответить, а не просто послать rtfm


Вернуться к началу
СообщениеДобавлено: Пн янв 02, 2012 10:12 pm 
Nable
Не все так очевидно как ты изволил выразится. Да, предложенный метод и мне изначально показался несколько необычным, но может автор просто не ясно выразился в каких случаях это используется.

Кстати я лично до сих пор не умею подключать директории к qemu и сколько не пытался в случае запуска Колибри это не работало. Учитывая что сетевые директории Колибри не поддерживает. Может поделишься кратким рабочим конфигом? Иначе твое заявление воспринимается как отмахивание рукой от проблемы.


Вернуться к началу
   
СообщениеДобавлено: Пн янв 02, 2012 11:20 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Nable писал(а):
извращение-то какое, тема для неосиляторов rdsave || mount -o loop || монтирования директорий в qemu || whatever..Не, ну правда, уж лучше б спросил как файлами с эмулем обмениваться, можно было бы даже ответить, а не просто послать rtfm

Не все так просто, а именно:
1) Разные эмуляторы имеют разные настройки для подключения дисков. На одних запись файлов может работать а на других нет
2) Колибри не может работать с дисками NTFS (на запись файлов)
3) Даже если все получится настроить удачно то возможно требуемый файл прийдется доставать из образа виртуального диска
Нужен был надежный инструмент для извлечения файлов, который позволяет обойти ограничения и не зависит от конкретного эмулятора.
В любом случае программа требует не много места 3 файла размерами 2,1 (kex), 3(obj) и 1,8(png) Кб, потому возможен даже вариант ее включения в образ img.

Сегодня сделал на VC++ под Win программу для раскодировки изображений.
Надеюсь что завтра еще немного потестирую и добавлю инструкции. Если все пойдет хорошо завтра выложу обе программы.
С праздниками.


Вернуться к началу
СообщениеДобавлено: Вт янв 03, 2012 6:13 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Выкладываю обещаные программы:
1-я для кодировки вместе с исходными кодами в прикрепленном файле.
2-я для раскодировки работает под Win в архиве только файл .exe занимает 396 Кб, потому его выдаю по ссылке:
http://dl.dropbox.com/u/20922391/file_decod.7z
Эта программа расчитана на работу с буфером обмена, т. е. после запуска нажимайте кнопку вставить (кнопка открыть ничего не открывает).
Если ее переделать на fasm то места будет занимать намного меньше, но времени особо нет потому сделал через VC++.
Если кому нужны коды или инструкции пишите.


Вложения:
Комментарий к файлу: программа f_coder для кодировки файлов
f_coder.zip [27.54 КБ]
81 скачивание
Вернуться к началу
СообщениеДобавлено: Вт янв 03, 2012 6:40 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4092
IgorA
Извини, не по теме. Но если у тебя есть установленный VC++ (MSVC??), то можешь поправить Косилку?

_________________
Через тернии к звездам


Вернуться к началу
СообщениеДобавлено: Чт янв 05, 2012 2:23 am 
Не в сети

Зарегистрирован: Пн фев 16, 2009 5:40 am
Сообщения: 74
Ещё можно в эмуляторе мигать экраном последовательность бит, а хосту в ком порт воткнуть фотодиод прислонёный к мигающей части экрана и принемать стандартной терминалкой фаил...
Ещё интересно, а можно ли меняя и считывая например статус режима scrolllock на клавиатуре, организовать связь между виртуалкой и хостом? :) т е когда виртуалка "забрала" клавиатуру обработчик хоста всёравно имеет к ней доступ...
Ещё эмуляторы позволяют перенаправить вывод com порта в фаил (для qemu опция -serial), так и скидывать туда в uee коде всё что нужно, а затем "напустить" ueedecode на этот фаил...

P.S. Тема постоянного и лёгкого обмена информацией между виртуалкой и хостом при отсутствии сети - очень интересная... Но текущие сетевые возможности позволяют "выкладывать" файлы "в сеть" для хоста и далее получать их браузером...

P.P.S. IgorA - не останавливайся на достигнутом!

дополню про qemu - можно как физические диски, так и каталоги хоста монтировать для гостя -hda fat:dirname потробней тутhttp://www.h7.dion.ne.jp/~qemu-win/HowToFloppyCdrom-en.html#harddisk


Последний раз редактировалось Sergey_vl Чт янв 05, 2012 10:46 am, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: Чт янв 05, 2012 4:28 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 788
Проще использовать возможности эмуляции последовательного порта. Qemu такое позволяет.


Вернуться к началу
СообщениеДобавлено: Чт янв 05, 2012 2:37 pm 
Не в сети

Зарегистрирован: Пн фев 16, 2009 5:40 am
Сообщения: 74
XVilka, а терминалка для Колибри с поддержкой x/zmodem'а есть? Или с uee кодировщиком?

добавленено - может устройства типа COM1 в ядре или в виде драйвера есть? Чтоб на него можно было бы копировать фаил...

P.S. ...как захотелось BBS'ку на Колибри поднять.... :)


Вернуться к началу
СообщениеДобавлено: Пн янв 09, 2012 5:24 pm 
Не в сети
Just Flooding

Зарегистрирован: Сб янв 06, 2007 2:30 pm
Сообщения: 269
Ок, быть голословным некрасиво, так что распишу в деталях.

Делаем raw образ (20Мб хватит всем) :
$ dd if=/dev/zero of=/tmp/kos.img bs=1024 count=20480
Цепляем его к qemu, грузим какой-нибудь минимальный livecd
(а у qemu не забываем добавить параметр -hda /tmp/kos.img),
делаем в виртуалке fdisk /dev/hda, создаём там таблицу разделов,
один раздел, у него id = 0xb (W95 FAT32), потом записать изменения,
потом mkdosfs /dev/hda1..
Ну а дальше оно и с колибри будет работать 100%.
Чтобы совсем просто работать с образом, есть пакет guestmount.
Но можно и через losetup извратиться.

У меня прыщеядикса нету, так что пойду путём убогих, а именно создам в папке с qemu папку test и start.cmd следующего содержания:
Код:
@ECHO OFF
REM Start qemu on windows.

SET SDL_VIDEODRIVER=directx

REM QEMU_AUDIO_DRV=dsound or fmod or sdl or none can be used. See qemu -audio-help.
SET QEMU_AUDIO_DRV=dsound

REM SDL_AUDIODRIVER=waveout or dsound can be used. Only if QEMU_AUDIO_DRV=sdl.
SET SDL_AUDIODRIVER=dsound

REM QEMU_AUDIO_LOG_TO_MONITOR=1 displays log messages in QEMU monitor.
SET QEMU_AUDIO_LOG_TO_MONITOR=1

qemu.exe -L Bios -m 64 -vga std -soundhw pcspk -localtime -M pc -boot order=adc,menu=on -hda fat:rw:test -fda kolibri.img

И что же вы думаете, оно живое (правда, при создании папки ololo эмулятор вылетел, но после перезапуска продолжил работать) :
Изображение
Изображение

Если что, kolibri.img, не долго думая, взят из http://builds.kolibrios.org/eng/svn2333-img.7z
qemu - 0.15.1, что ли.


Вернуться к началу
СообщениеДобавлено: Пн янв 09, 2012 7:29 pm 
К сожалению при работе с такой директорией файлы "бьются". Проверял на Qemu 0.12.2 под WinXP32SP3. В Колибри они нормально открываются, а вот в хостовой Винде уже битые.

З.Ы. Если вбить в гугле "qemu fat:rw" то показывает, что ситуация не фонтан.


Вернуться к началу
   
СообщениеДобавлено: Пн янв 09, 2012 8:16 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Угу, да и с VMWare/VirtualBox методы для qemu не прокатывают. Так что пусть будет.
p.s. Сам пользуюсь qemu с -hda fat.


Вернуться к началу
СообщениеДобавлено: Пт янв 13, 2012 4:06 am 
Не в сети
Just Flooding

Зарегистрирован: Сб янв 06, 2007 2:30 pm
Сообщения: 269
> Qemu 0.12.2
> 0.12.2
> 2012
А давайте я ещё начну жаловаться что у меня Win98 плохо пишет на NTFS разделы.
Что было в старых версиях - там и осталось, давайте всё же ориентироваться на актуальные версии софта. Да, фича корявая, жутко костыльная и страшная, но сейчас доработана до более-менее цивильного состояния. Впрочем, всё равно не вижу проблем с тем чтобы использовать надёжный и расово-верный способ: использовать в качестве hda образа диска и потом из него файлы выцеплять.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 18 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB