Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Apr 20, 2019 5:36 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 18 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Fri Dec 30, 2011 11:59 pm 
Offline
User avatar

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


Attachments:
File comment: внешний вид кодирующей программы
f_coder.png
f_coder.png [ 8.83 KiB | Viewed 4369 times ]
Top
   
PostPosted: Sat Dec 31, 2011 2:57 am 
Собственно о каком эмуляторе идет речь?


Top
   
PostPosted: Sat Dec 31, 2011 12:36 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Mario wrote:
Собственно о каком эмуляторе идет речь?

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


Top
   
PostPosted: Mon Jan 02, 2012 6:25 pm 
Offline
Just Flooding

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


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

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


Top
   
PostPosted: Mon Jan 02, 2012 11:20 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
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 программу для раскодировки изображений.
Надеюсь что завтра еще немного потестирую и добавлю инструкции. Если все пойдет хорошо завтра выложу обе программы.
С праздниками.


Top
   
PostPosted: Tue Jan 03, 2012 6:13 pm 
Offline
User avatar

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


Attachments:
File comment: программа f_coder для кодировки файлов
f_coder.zip [27.54 KiB]
Downloaded 134 times
Top
   
PostPosted: Tue Jan 03, 2012 6:40 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 4976
IgorA
Извини, не по теме. Но если у тебя есть установленный VC++ (MSVC??), то можешь поправить Косилку?

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


Top
   
PostPosted: Thu Jan 05, 2012 2:23 am 
Offline

Joined: Mon Feb 16, 2009 5:40 am
Posts: 80
Ещё можно в эмуляторе мигать экраном последовательность бит, а хосту в ком порт воткнуть фотодиод прислонёный к мигающей части экрана и принемать стандартной терминалкой фаил...
Ещё интересно, а можно ли меняя и считывая например статус режима 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


Last edited by Sergey_vl on Thu Jan 05, 2012 10:46 am, edited 1 time in total.

Top
   
PostPosted: Thu Jan 05, 2012 4:28 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Проще использовать возможности эмуляции последовательного порта. Qemu такое позволяет.


Top
   
PostPosted: Thu Jan 05, 2012 2:37 pm 
Offline

Joined: Mon Feb 16, 2009 5:40 am
Posts: 80
XVilka, а терминалка для Колибри с поддержкой x/zmodem'а есть? Или с uee кодировщиком?

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

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


Top
   
PostPosted: Mon Jan 09, 2012 5:24 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 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 следующего содержания:
Code:
@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, что ли.


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

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


Top
   
PostPosted: Mon Jan 09, 2012 8:16 pm 
Offline

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


Top
   
PostPosted: Fri Jan 13, 2012 4:06 am 
Offline
Just Flooding

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 18 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited