Эмулятор под Linux

Running Kolibri and its programs in other OSes
  • tsdima, у меня тоже есть проблема с libimg.
    Обычно выполнение заканчивается вылетом примерно после

    Code: Select all

    EIP    = $0000017E; EAX    = $00000044; EBX    = $00000014; ECX    = $00000464
    EDX    = $00000000; ESI    = $00000464; EDI    = $0414A18C; EBP    = $0412FDF0
    ESP    = $0412FDE4; EFLAGS = $00010202
    HeapReallocate(MemPtr:$00000000, Bytes:1124)
    Я не учёл, что KolibriOS.HeapReallocate работает иначе, чем Windows.HeapRealloc
    ======================================================================
    ======= Function 68, subfunction 20 - reallocate memory block. =======
    ======================================================================
    Parameters:
    * eax = 68 - function number
    * ebx = 20 - subfunction number
    * ecx = new size in bytes
    * edx = pointer to already allocated block
    Returned value:
    * eax = pointer to the reallocated block, 0 = error
    Remarks:
    * Before this call one must initialize process heap by call to
    subfunction 11.
    * The function allocates an integer number of pages (4 Kb) in such
    way that the real size of allocated block is more than or equal to
    requested size.
    * If edx=0, the function call is equivalent to memory allocation
    with subfunction 12. Otherwise the block at edx
    must be allocated earlier with subfunction 12 or this subfunction.
    * If ecx=0, the function frees memory block at edx and returns 0.
    * The contents of the block are unchanged up to the shorter of
    the new and old sizes.
    Программа ожидала выделения памяти, а его не произошло.
  • Сделал рудиментарную поддержку сети. WebView уже работает. Почему-то не работают Downloader и NsInstall. Вобщем, глючно пока, но куда копать - непонятно.
  • tsdima wrote:Сделал рудиментарную поддержку сети. WebView уже работает.
    А у меня, не работает.

    Вот скрин:

    Image
    Полный лог из терминала:
    Spoiler:

    Code: Select all

    ~/.kex $ ./kex "root/RD/1/File Managers/EOLITE"
    02.00000AEF: mcall 37, 0x4, 0x24C4, 0x1
    02.00000B19: mcall 37, 0x5, 0x0, 0x0
    <html> found
    Document has no information about encoding, UTF will be used
    02.00000B08: mcall 37, 0x5, 0x25, 0x0
    02.00000B19: mcall 37, 0x5, 0x0, 0x0
    Usage: nmcli device { COMMAND | help }
    
    COMMAND := { status | show | connect | reapply | disconnect | delete | monitor | wifi | lldp }
    
      status
    
      show [<ifname>]
    
      set [ifname] <ifname> [autoconnect yes|no] [managed yes|no]
    
      connect <ifname>
    
      reapply <ifname>
    
      disconnect <ifname> ...
    
      delete <ifname> ...
    
      monitor <ifname> ...
    
      wifi [list [ifname <ifname>] [bssid <BSSID>]]
    
      wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [ifname <ifname>]
                             [bssid <BSSID>] [name <name>] [private yes|no] [hidden yes|no]
    
      wifi hotspot [ifname <ifname>] [con-name <name>] [ssid <SSID>] [band a|bg] [channel <channel>] [password <password>]
    
      wifi rescan [ifname <ifname>] [[ssid <SSID to scan>] ...]
    
      lldp [list [ifname <ifname>]]
    
    Error: 'dev' command 'list' is not valid.
    Contacting DNS server failed with EAI code: 00000004
    HTTP GET error!
    bufsize: 0
    02.00000B19: mcall 37, 0x5, 0x0, 0x0
    <html> found
    cur_encoding    : 6
    set_new_encoding: 5
    Ещё заметил, что во время запуска OPENDIAL, в терминале почему-то выводятся сообщения о ненайденных файлах .obj. Но эти файлы присутствуют.

    Вот скрин:

    Image
    The Glass is Always Half Full! :mrgreen:
  • Снова регистр?
    Из хаоса в космос
  • Leency wrote:Снова регистр?
    На гитхабе написано:
    [github] tsdima wrote:case insensitive file search
    Это-то и странно. Пробовал со ссылкой и без. Результат, в обоих случаях, тот же.
    The Glass is Always Half Full! :mrgreen:
  • JohnXenox wrote:Ещё заметил, что во время запуска OPENDIAL, в терминале почему-то выводятся сообщения о ненайденных файлах .obj. Но эти файлы присутствуют.
    Вообще-то тех файлов не должно быть в папке File managers. Если только ты их сам туда не положил.
    А так OpenDialog сперва ищет библиотеки в своей папке и, если не находит, то как обычно в /sys/lib.
    Странная логика, как мне кажется, ведь это же системные библиотеки и они должны быть как раз в /sys/lib, а не в папке с программой.
  • 0CodErr wrote:Вообще-то тех файлов не должно быть в папке File managers. Если только ты их сам туда не положил.
    Нет в папке с OPENDIAL их нет, и туда их не клал. Я имел ввиду, что файлы присутствуют в принципе, в частности в папке ~/.kex/root/RD/1/LIB.
    0CodErr wrote:А так OpenDialog сперва ищет библиотеки в своей папке и, если не находит, то как обычно в /sys/lib.
    Странная логика, как мне кажется, ведь это же системные библиотеки и они должны быть как раз в /sys/lib, а не в папке с программой.
    Вот и мне, кажется это странным. Файлы есть, а ворнинги всё-равно выводятся.
    The Glass is Always Half Full! :mrgreen:
  • JohnXenox wrote:Файлы есть, а ворнинги всё-равно выводятся.
    Предупреждения выводятся при попытке загрузить библиотеку. Я же не виноват, что OpenDialog ищет их сначала в текущем каталоге. Обычно, если программа грузит библиотеку, но её нет, то это что-то не совсем обычное, поэтому я и вывожу предупреждение. В данном случае можно игнорировать эти сообщения.

    По поводу nmcli: я подозревал, что на других дистрибутивах могут быть другие параметры, или другой формат вывода. Но другого способа получить адрес DNS и gateway (причём полученный по DHCP) я пока не нашёл. Без адреса DNS сеть работает, но толку мало. Можно попытаться задать статическую конфигурацию в network.ini и запустить @zeroconf, а потом посмотреть, что выдаёт netstat. Если получится установить адрес DNS, то сеть должна заработать.
  • Попробовал вышеописанный метод - пришлось кое-что пофиксить. Теперь статическую конфигурацию можно задавать в network.ini и запускать @zeroconf.
  • tsdima wrote:Предупреждения выводятся при попытке загрузить библиотеку. Я же не виноват, что OpenDialog ищет их сначала в текущем каталоге.
    Тебя никто, ни в чём, не обвиняет. Я просто указал на неправильное, с моей точки зрения, поведение эмулятора, которое вводит в заблуждение. И если эмулятор делает какие-то неправильные или странные вещи, то это, либо недоработка, либо личные предпочтения автора эмулятора.

    На мой вгляд, неправильно выводить в терминал далеко некритические сообщения, в то время, когда программа OPENDIAL, по существу, имеет все необходимые файлы для удавлетворения своих потребностей и корректной работы. Кстати сама программа, в Колибри, в такой ситуации, ворнинги не выводит, что вполне логично.
    tsdima wrote:Обычно, если программа грузит библиотеку, но её нет, то это что-то не совсем обычное, поэтому я и вывожу предупреждение.
    Когда библиотеки нигде нет, не найдена - это да. Но когда библиотека есть и/или найдена, в одной из директорий прописанных в программе, то это нормальная ситуация. Программа проверяет все директории, которые в ней прописаны, на наличие нужной библиотеки, и если библиотека найдена, запускается, а если нет, то выбрасывает ворнинг. К тому же, эмулятор не должен ничего решать за программу, которую он эмулирует. Если программа не выбрасывает ворнинг, то и эмулятор, не должен за неё это делать.
    tsdima wrote:В данном случае можно игнорировать эти сообщения.
    Хорошо, буду игнорировать.
    tsdima wrote:По поводу nmcli: я подозревал, что на других дистрибутивах могут быть другие параметры, или другой формат вывода. Но другого способа получить адрес DNS и gateway (причём полученный по DHCP) я пока не нашёл. Без адреса DNS сеть работает, но толку мало. Можно попытаться задать статическую конфигурацию в network.ini и запустить @zeroconf, а потом посмотреть, что выдаёт netstat. Если получится установить адрес DNS, то сеть должна заработать.
    Ясно.

    P.S. Прошу бурно не реагировать на моё сообщение. Я просто выложил своё видение по этому поводу.
    Last edited by JohnXenox on Fri Apr 06, 2018 4:34 am, edited 2 times in total.
    The Glass is Always Half Full! :mrgreen:
  • tsdima wrote:Попробовал вышеописанный метод - пришлось кое-что пофиксить. Теперь статическую конфигурацию можно задавать в network.ini и запускать @zeroconf.
    Позже попробую, но не уверян, что что-то получится. Я в этом полный нуб.
    The Glass is Always Half Full! :mrgreen:
  • JohnXenox wrote:На мой вгляд, неправильно выводить в терминал далеко некритические сообщения
    Ну, поначалу, сообщение о ненайденной библиотеке было критичным :)
    Можно убрать это сообщение, но тогда будет непонятно, почему не работает программа, если библиотеки действительно нет. Не все программы ругаются, если не нашли библиотеку.

    В последней версии работает pcidev. Заметил, что есть программы, которые требуют наличия /tmp0/1, так что каталог ~/.kex/root/TMP0/1 тоже нужно создавать. В Колибри это делается запуском launcher-a, но он запускает кучу ненужных эмулятору вещей (например @zeroconf, в эмуляторе не нужно запрашивать dhcp, оно сейчас и не работает, поэтому адрес получается случайный, работает только статическая конфигурация, но в kolibri.img по-умолчанию стоит auto).

    Можно сделать, чтобы эмулятор сам создавал /tmp0/1, но сколько ещё таких костылей будет? Нужно ли это делать? С одной стороны, человек, мало знакомый с Колибри ОС не догадается сам это сделать, но с другой стороны, если бы не было запуска tmpdisk в autorun.dat, то поведение программ, требующих /tmp0/1, мало чем отличалось бы.
  • tsdima wrote:Ну, поначалу, сообщение о ненайденной библиотеке было критичным :)
    Можно убрать это сообщение, но тогда будет непонятно, почему не работает программа, если библиотеки действительно нет. Не все программы ругаются, если не нашли библиотеку.
    Задача эмулятора Колибри - это как можно точнее эмулировать работу Колибри, а не улучшать, профилировать или отлаживать программу, которая эмулируется. Если программа не ругается, то это только проблема программы. Но с программой OPENDIAL другой случай, у неё функция ругани есть, и она срабатывает только в действительно критической ситуации. А у тебя эмулятор ругается за саму программу, в то время, когда у программы никакой критической ситуации нет. Конечно, другое дело, если это сделано в целях отладки эмулятора.
    tsdima wrote:В последней версии работает pcidev.
    Отлично. :D
    tsdima wrote:Заметил, что есть программы, которые требуют наличия /tmp0/1, так что каталог ~/.kex/root/TMP0/1 тоже нужно создавать. В Колибри это делается запуском launcher-a, но он запускает кучу ненужных эмулятору вещей (например @zeroconf, в эмуляторе не нужно запрашивать dhcp, оно сейчас и не работает, поэтому адрес получается случайный, работает только статическая конфигурация, но в kolibri.img по-умолчанию стоит auto).

    Можно сделать, чтобы эмулятор сам создавал /tmp0/1, но сколько ещё таких костылей будет? Нужно ли это делать? С одной стороны, человек, мало знакомый с Колибри ОС не догадается сам это сделать, но с другой стороны, если бы не было запуска tmpdisk в autorun.dat, то поведение программ, требующих /tmp0/1, мало чем отличалось бы.
    Я думаю, так как директория /rd/1 создаётся вручную, то /tmp0/1, тоже должна создаваться вручную. А пользователя, можно предупредить на github.

    Что-то вроде:
    Для некоторых программ Колибри требуется директория /tmp0/1.
    Чтобы создать директорию /tmp0/1, введите в терминале:

    cd ~/.kex/root && mkdir tmp0 && mkdir tmp0/1
    The Glass is Always Half Full! :mrgreen:
  • Сделал максимизацию по двойному клику на заголовке. Растягивание окон тоже должно работать, т.к. теперь оно делается ещё и вручную (т.е. независимо от оконного менеджера). Делается не совсем так, как в реальной Колибри, но лучше уж так, чем совсем никак.
  • Who is online

    Users browsing this forum: No registered users and 3 guests