Page 1 of 2

Передача файлов из эмуляторов в основную ОС

Posted: Fri Dec 30, 2011 11:59 pm
by IgorA
Иногда возникает необходимость доставать файлы созданные внутри эмулятора. Например пользователь открыл эмулятор, запустил внутри какую-либо программу, создал через нее файл захотел сохранить его в основной ОС. Но это не получится потому как файл внутри эмулятора погибнет при его закрытии ... :cry:
Способ решения этой проблемы таков: должно быть 2 программы.
1-я для Колибри (кодирует файл в графическом виде)
2-я для внешней ОС, из которой запускается эмулятор (расшифровывает файл)
Т. е. пользователь может открыть файл, и 1-я программа его закодирует в виде рисунка
Потом он делает копию экрана и сохраняет его в файл (возможно даже не сохраняет а прямо из буфера обмена вставляет получившееся изображение)
Внешняя программа расшифровывает получившийся рисунок и сохраняет его в файл.
Таким образом можно доставать файлы из эмулятора :P
Сделал прототип первой программы для кодировки файлов. Для быстродействия и удобства программирования в 1-м пикселе кодируются 2 байта вместо ожидаемых 3-х. Программу пока не выкладываю потому что еще есть ограничение на размер файлов.
Раскодировку еще не делал, т. к. тут возможны разные варианты программ в зависимости от того какая ОС используется как внешняя.
: Еще один из незапланированных вариантов применения программы для кодирования файлов в графическом виде.

Re: Передача файлов из эмуляторов в основную ОС

Posted: Sat Dec 31, 2011 2:57 am
by Mario
Собственно о каком эмуляторе идет речь?

Re: Передача файлов из эмуляторов в основную ОС

Posted: Sat Dec 31, 2011 12:36 pm
by IgorA
Mario wrote:Собственно о каком эмуляторе идет речь?
может быть любой qemu, virtualbox, ...

Re: Передача файлов из эмуляторов в основную ОС

Posted: Mon Jan 02, 2012 6:25 pm
by Nable
извращение-то какое, тема для неосиляторов rdsave || mount -o loop || монтирования директорий в qemu || whatever..
Не, ну правда, уж лучше б спросил как файлами с эмулем обмениваться, можно было бы даже ответить, а не просто послать rtfm

Re: Передача файлов из эмуляторов в основную ОС

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

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

Re: Передача файлов из эмуляторов в основную ОС

Posted: Mon Jan 02, 2012 11:20 pm
by IgorA
Nable wrote:извращение-то какое, тема для неосиляторов rdsave || mount -o loop || монтирования директорий в qemu || whatever..Не, ну правда, уж лучше б спросил как файлами с эмулем обмениваться, можно было бы даже ответить, а не просто послать rtfm
Не все так просто, а именно:
1) Разные эмуляторы имеют разные настройки для подключения дисков. На одних запись файлов может работать а на других нет
2) Колибри не может работать с дисками NTFS (на запись файлов)
3) Даже если все получится настроить удачно то возможно требуемый файл прийдется доставать из образа виртуального диска
Нужен был надежный инструмент для извлечения файлов, который позволяет обойти ограничения и не зависит от конкретного эмулятора.
В любом случае программа требует не много места 3 файла размерами 2,1 (kex), 3(obj) и 1,8(png) Кб, потому возможен даже вариант ее включения в образ img.

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

Re: Передача файлов из эмуляторов в основную ОС

Posted: Tue Jan 03, 2012 6:13 pm
by IgorA
Выкладываю обещаные программы:
1-я для кодировки вместе с исходными кодами в прикрепленном файле.
2-я для раскодировки работает под Win в архиве только файл .exe занимает 396 Кб, потому его выдаю по ссылке:
http://dl.dropbox.com/u/20922391/file_decod.7z
Эта программа расчитана на работу с буфером обмена, т. е. после запуска нажимайте кнопку вставить (кнопка открыть ничего не открывает).
Если ее переделать на fasm то места будет занимать намного меньше, но времени особо нет потому сделал через VC++.
Если кому нужны коды или инструкции пишите.

Re: Передача файлов из эмуляторов в основную ОС

Posted: Tue Jan 03, 2012 6:40 pm
by Leency
IgorA
Извини, не по теме. Но если у тебя есть установленный VC++ (MSVC??), то можешь поправить Косилку?

Re: Передача файлов из эмуляторов в основную ОС

Posted: Thu Jan 05, 2012 2:23 am
by Sergey_vl
Ещё можно в эмуляторе мигать экраном последовательность бит, а хосту в ком порт воткнуть фотодиод прислонёный к мигающей части экрана и принемать стандартной терминалкой фаил...
Ещё интересно, а можно ли меняя и считывая например статус режима scrolllock на клавиатуре, организовать связь между виртуалкой и хостом? :) т е когда виртуалка "забрала" клавиатуру обработчик хоста всёравно имеет к ней доступ...
Ещё эмуляторы позволяют перенаправить вывод com порта в фаил (для qemu опция -serial), так и скидывать туда в uee коде всё что нужно, а затем "напустить" ueedecode на этот фаил...

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

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

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

Re: Передача файлов из эмуляторов в основную ОС

Posted: Thu Jan 05, 2012 4:28 am
by XVilka
Проще использовать возможности эмуляции последовательного порта. Qemu такое позволяет.

Re: Передача файлов из эмуляторов в основную ОС

Posted: Thu Jan 05, 2012 2:37 pm
by Sergey_vl
XVilka, а терминалка для Колибри с поддержкой x/zmodem'а есть? Или с uee кодировщиком?

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

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

Re: Передача файлов из эмуляторов в основную ОС

Posted: Mon Jan 09, 2012 5:24 pm
by Nable
Ок, быть голословным некрасиво, так что распишу в деталях.

Делаем 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 следующего содержания:

Code: Select all

@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 эмулятор вылетел, но после перезапуска продолжил работать) :
Image
Image

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

Re: Передача файлов из эмуляторов в основную ОС

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

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

Re: Передача файлов из эмуляторов в основную ОС

Posted: Mon Jan 09, 2012 8:16 pm
by SoUrcerer
Угу, да и с VMWare/VirtualBox методы для qemu не прокатывают. Так что пусть будет.
p.s. Сам пользуюсь qemu с -hda fat.

Re: Передача файлов из эмуляторов в основную ОС

Posted: Fri Jan 13, 2012 4:06 am
by Nable
> Qemu 0.12.2
> 0.12.2
> 2012
А давайте я ещё начну жаловаться что у меня Win98 плохо пишет на NTFS разделы.
Что было в старых версиях - там и осталось, давайте всё же ориентироваться на актуальные версии софта. Да, фича корявая, жутко костыльная и страшная, но сейчас доработана до более-менее цивильного состояния. Впрочем, всё равно не вижу проблем с тем чтобы использовать надёжный и расово-верный способ: использовать в качестве hda образа диска и потом из него файлы выцеплять.