LINUX.ORG.RU

Воскресил qemu-manage

 ,


5

4

qemu-manage - это ncurses интерфейс к qemu.

Исходники доступны по адресу https://bitbucket.org/PascalRD/qemu-manage. Ebuild file присутствует :)
Из нововведений:

* Больше не требует рута. (см файл setup_qemu_nonroot)
* Гостя можно устанавливать с ISO и образа диска.
* Перерисовка окон при изменении геометрии (главного и списка виртуалок).
* Добавлена возможность указывать кастомный файл с BIOS.
* Системные пути теперь добавляются по табу.
* Улучшен механизм сбора списка USB-устройств.
* Реструктуирован конфигурационный файл.

★★★

Пацаны вообще ребята

Спасибо, потестирую как-нибудь потом. А spice и вендо-шары не поддерживаются?

Stil ★★★★★
()
Ответ на: комментарий от pascal

Приду домой, запилю. Ты придумай пока номер версии и создай в гите тэг, чтобы в новости не на хэш коммита ссылаться.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от pascal

Почти собрал.

collect2: ошибка: выполнение ld завершилось с кодом возврата 1

ass ★★★★
()
Ответ на: комментарий от ass

Сейчас попробую переделать в мастере.

pascal ★★★
() автор топика
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY)

Стоят пакеты libncurses5, libncurses5-dev; pkg-config библиотеки находит.

hippi90 ★★★★★
()
Ответ на: комментарий от ass

Метку подвину только на коммит выше :)

pascal ★★★
() автор топика

Так. Собралось нормально.

1. Не стоит хранить конфиги в хомяке, это не соответствует стандартам.

2. Если нет конфига, мы упадем с ошибкой, это не очень хорошее поведение, лучше в таком случае создавать дефолтный конфиг или спрашивать пользователя, что он хочет сделать.

3. При выборе пункта «Установить гостя» падает:

│                                                         F10-выйти, F2-сохранитьterminate called after throwing an instance of 'std::out_of_range'                                                                                                                                    │
│        what():  stol                                                                                                                     │
│                     Аварийный останов (сделан дамп памяти)                                                                               │
[hippi@hippi-desktop qemu-manage]$
Похоже вот здесь:
sql_query = "select mac from lastval";
v_last_mac = db->SelectQuery(sql_query); // TODO: add check if null exeption

last_mac = std::stol(v_last_mac[0]);

hippi90 ★★★★★
()
Последнее исправление: hippi90 (всего исправлений: 1)
Ответ на: комментарий от hippi90

Благодарю за отзывы.
1. Изначально я хранил конфиги в ${ETC_DIR}, но потом мне это надоело и я переехал в ${HOME}, так многие приложения делают.
2. Учту - доделаю.
3. Очень интересно, есть возможность собрать с ggdb и прислать backtrace?

pascal ★★★
() автор топика
Ответ на: комментарий от hippi90

Понятно, оно походу базу не создало, и проверку я так и не сделал :)
Поправлю... но база должна быть на этом этапе сгенерированна.

pascal ★★★
() автор топика
Ответ на: комментарий от hippi90

Файл с базой вручную не создавали?

pascal ★★★
() автор топика
Ответ на: комментарий от pascal

База, по-видимому, сгенерировалась автоматом, я руками ничего не генерил.

(gdb) bt                                                                                                                                   │
#0  0xb7fd9d05 in __kernel_vsyscall ()                                                                                                     │
#1  0xb7a8f050 in __libc_signal_restore_set (set=0xbfffeca0) at ../sysdeps/unix/sysv/linux/nptl-signals.h:79                               │
#2  __GI_raise (sig=6) at ../sysdeps/unix/sysv/linux/raise.c:55                                                                            │
#3  0xb7a90577 in __GI_abort () at abort.c:89                                                                                              │
#4  0xb7caf74f in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/i386-linux-gnu/libstdc++.so.6                                  │
#5  0xb7cad0d4 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6                                                                        │
#6  0xb7cad14d in std::terminate() () from /usr/lib/i386-linux-gnu/libstdc++.so.6                                                          │
#7  0xb7cad400 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6                                                               │
#8  0xb7cd9096 in std::__throw_out_of_range(char const*) () from /usr/lib/i386-linux-gnu/libstdc++.so.6                                    │
#9  0x080d57b1 in __gnu_cxx::__stoa<long, long, char, int> (__convf=0x80b3100 <strtol@plt>, __name=0x80ec2fd "stol",                       │
    __str=0x81ce338 "244837814042624", __idx=0x0, __base#0=10) at /usr/include/c++/6/ext/string_conversions.h:76                           │
#10 0x080d56d1 in std::__cxx11::stol (__str="244837814042624", __idx=0x0, __base=10) at /usr/include/c++/6/bits/basic_string.h:5419        │
#11 0x080ddd2e in QManager::AddVmWindow::Get_data_from_db (this=0x819c820)                                                                 │
hippi90 ★★★★★
()
Ответ на: комментарий от hippi90

Замените stol на stoll. Должно отпустить.

pascal ★★★
() автор топика
Ответ на: комментарий от hippi90

На 32-битных платформах будут проблемы. Починю.

pascal ★★★
() автор топика

полезная шняга. а то сейчас каждый интерфейс тащит с собой тонну всякого ненужно. и ещё не факт, что взлетит на конкретной машине. а ncurses запускается везде. иногда лень вручную забивать все параметры виртуалки и хочется хотя бы минимального удобства. вот это оно самое.

Iron_Bug ★★★★★
()
Ответ на: комментарий от pascal

Error: /home/ass/.qemu-manage.cfg: cannot open file

$ touch /home/ass/.qemu-manage.cfg

$ qemu-manage

Error: No such node (main.vmdir)

$ cp /usr/share/qemu-manage/templates/config/qemu-manage.cfg.sample /home/ass/.qemu-manage.cfg

$ qemu-manage

Error: /home/user/qemu_vm : No such file or directory

Какой это ещё user? У меня таких в системе нет. Надо бы это как-то допилить )

ass ★★★★
()
Ответ на: комментарий от ass

Реквестирую создание дефолтного конфига при запуске. И чтоб заодно детектилось i386/x86_64/arm...etc. У меня i386 нет например.

ass ★★★★
()
Ответ на: комментарий от ass

Создание конфига пилю а данный момент. Список архитектур раньше детектился сам, но это был жуткий костыль и я его убрал. Сейчас список целей задается вручную пользователем в коефиге.

pascal ★★★
() автор топика
Последнее исправление: pascal (всего исправлений: 1)
Ответ на: комментарий от pascal

Версию ebuild-а в сорцах поправь. И boost уже в зависимостях не нужен же?

Ждём опций machine/cpu/display/vga/sound. Для начала :)

ass ★★★★
()
Ответ на: комментарий от ass

Ebuild в мастер ещё поправил, опции буду пилить по мере надобности) Буст нужен на этапе сборки, потом будет выпилен окончательно.

pascal ★★★
() автор топика
Последнее исправление: pascal (всего исправлений: 2)
Ответ на: комментарий от DELIRIUM

Я бы рад, да тяжело без них :)

pascal ★★★
() автор топика
Ответ на: комментарий от pascal

Проверил, вроде всё работает.

Если выбрать «Инсталлировать гостя», а потом F10, то показывает «Заполните все параметры», повторное нажатие приводит к выходу в главное меню.

hippi90 ★★★★★
()
Ответ на: комментарий от hippi90

Там инопланетная логика, после заполнения данных надо нажать F2 потом F10. Я не помню почему так сделал, надо копать код :)

pascal ★★★
() автор топика
Последнее исправление: pascal (всего исправлений: 1)

На платформе i386, при выборе пункта «Manage guests» и «Install guest» валится с ошибкой:

terminate called after throwing an instance of 'std::logic_error' 
what():  basic_string::_S_construct null not valid                       Аварийный останов 
Запускал из директории build.
p.s.: Xubuntu 14.04. Для сборки надо установить пакеты: libncursesw5-dev libboost-all-dev libusb-1.0-0-dev libprocps3-dev, возможно еще какие-то

superuser ★★★★★
()
Последнее исправление: superuser (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.